Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - fernewelten

#41
Hi folks,

Have a look at the pitch for “Mamma mia!”.

1. What do you think of the game title?
Does it put you off in any way? (In which way does it put you off?)
Is "Mamma mia â€" winter ice cream mayhem" better or worse than "Mamma mia"?

2. What do you think of the screenshot below (top)?
Does it work better or worse than the one beneath it?

3. What do you think of the pitch text?
Does it get you to download the game?
Does it get you to download and play the game?
What is missing in your opinion?
What should be re-ordered or left out?

Bonus question:
4. Does the fact put you off that a game is a MAGS entry or has evolved from a MAGS entry?


#42
Hello,

Have you noticed? There are some forum threads in "Completed Game announcements" that have more than 20,000 (!) views; others published at about the same time have about 150 views, and that's it. Even taking into account that some threads are much longer than others, this must translate into massively different reader amounts.

There must be thousands of readers that open one specific announcement but not another next to it.

What makes this surprising is that the title in that forum is rather constrained by the Board Rules; and all the pictures that a thread may contain are only visible after the thread has already been opened.

How come? What about you yourself: what makes you read some game announcements and ignore others that are right next to them?

The act of opening or NOT opening a game announcement is in and of itself a rudimentary critique: namely, a critique of the way the game is announced and advertised. So I think this forum might give useful insights.

What do you think?
#43
Hints & Tips / "Mamma Mia" hints and tips
Thu 18/07/2019 03:02:38
General:

* My character is being very obtuse. I want him to do X, but he stubbornly tries Y, instead.
Spoiler

Right mouse click, right mouse click, right mouse click! There's a good chance that Ego hasn't noticed something that you as a user have noticed, because Ego hasn't Examined it. Remember that your mouse also has a right mouse button!
[close]

Keypad puzzle:

* How do I swap keys?
Spoiler

Let's say you want the 3 to go where the 7 is and the 7 to go where the 3 is. Solution: Click on the 3, the 7, the 3, in order.

It's elementary to swap the empty key with any of the others, of course: Just click on that respective other key.
[close]

* How do I approach the minigame?
Spoiler

One way to do it:

First try to find what each of the columns and rows need to sum up to. Focus on each individual one without minding the respective others. If the sum is too low (high), swap higher (lower) numbers in. See the previous spoiler for swapping any two numbers.

Only when you have deduced all the exact sums, then swap keys around to try and balance each row/column.

Avoid trying the same combinations again and again: Try something different.

If you get the message that some key has stuck, then it is in the correct position; take this as a hint for finding where the others have to go to.
[close]

Ice cream parlour room puzzle:

* How many components of the machine do I need to start?
Spoiler
Five.
[close]

* Where are the starters for the individual components of the machine?
Spoiler

  • Air pump - hammer hanging from the box on the left
  • Fluffer - button on the window sill
  • Vanillizer - grey touch sensor surrounded by the blue puddle of goo
  • Conifier - "on" button on the dashboard on the back wall
  • Wisdom imbuer - Chain on the front right, blurry.
[close]

* I can't seem to start some component.
Spoiler
Examine it (right mouse click) before interacting with it (left mouse click).
[close]

* I can't start the machine. All the components stop after a while after I start them.
Spoiler
Before you start the individual components, you must hit the ramp up button.
[close]
That button is ...
Spoiler
... in the middle of the dashboard on the right wall.
[close]

* How do I start the machine?
Spoiler
You need to hit the ramp up button and then all the five components in the correct sequence.
[close]

* In what sequence do the individual components need to be activated?
Spoiler
Sorry, this sequence changes on each game run.
[close]

* What's a good way to find that out?
Spoiler
Play a game of Simon Says. For more specific hints, look at the next spoiler.
[close]

* More detailed hints to find that out:
Spoiler


  • Have a piece of paper ready so that you can note the sequence bit by bit whilst determining it.
  • To determine the first component, hit the Ramp Start button (on the dashboard on the right wall) and then the starter of any of the components. If that was an incorrect component, then the ramp up will fail. In that case, begin again with the ramp up button and another component. Eventually, you will have found the correct first component in the sequence.
  • To determine the second component, hit the Ramp Start button and the starter of the component you have determined in step 2. Then hit the starter of any other component. If that letter was an incorrect second component, then the ramp up will fail. In that case, restart the sequence and try another starter for the second component. Eventually, you will have found the correct second component in the sequence.
  • Continue in the same vein until you have found all the components.
[close]

* What do I do when I have started all the components?
Spoiler
Don't do anything. After some seconds the game will continue.
[close]
#44

Quote from: lanchong on Sat 06/07/2019 07:47:22[C]omplete game with a funny story and some interesting puzzles

Help a hungry customer get an ice cream!

Germans crave for ice cream as soon as the sun is shining -- even when it is freezing and there is snow in the streets. Or so it is said (maybe without justification).  ;)
This is the story of a hungry German that must battle

  • an Italian ice cream vendor,
  • a crazy helicopter mum
  • and outlandish machinery
to get his beloved cone.

Overall playing length: Around an hour.

Features DIY voice acting: If you want to hear what\'s being said, then read the captions aloud!  8-)

Note: Contains Italian swearing; protective Italian parents might want to cover their children\'s ears eyes.

Winner of the MAGS competition for June 2019

Entry in the AGS Game Database
Download via itch.io
#45
Hi,

A lot of forum posts contain links that have "/yabb/" in them, e.g. http://www.adventuregamestudio.co.uk/yabb/index.php?topic=29356.0  This even pertains to sticky posts, for instance the post "Quick Links to Forum Tutorials!" in the Critic's Lounge.

These links are all broken. There must have been a site reorganisation that moved all URLs http://www.adventuregamestudio.co.uk/yabb/index.php to the respective URLhttp://www.adventuregamestudio.co.uk/forums/index.php . But contents of existing posts weren't changed, so all links to older posts were left dangling.

Now I'm no website buff but I seem to recall that websites can have a place for "rewriting rules" or some such. Mainly, if some incoming request asks for an URL of a certain form, reply with the content of a changed URL instead. So wouldn't it be possible enter a rule to rewrite all URLs that contain "/yabb/" automatically to use "/forums/" instead?

That would probably be only one line in one place to repair tons of broken links in one fell swoop.

Some information I turned up with a quick search: https://www.smashingmagazine.com/2011/11/introduction-to-url-rewriting/#how-to-rewrite-urls
#46
Currently, functions in AGS must be ordered with an important restriction in mind: At every point in the source code, we can only call functions that have been defined above that point. This is unfortunate in two ways:

  • Firstly, many programmers like to order the functions differently, for instance to keep similar functions near each other.
  • Secondly, in many algorithms there are functions that mutually call each other: a function A calls a function B and function B calls function A â€" this is known as "mutual recursion". With the restriction as it is now, we can't use any of these algorithms!

In case you're wondering: There's a real-life use case for such algorithms: Right in my very first AGS program ("Commando raid" for the MAGS 2018/5 competition) I wanted to code a maze dynamically. The easiest way to do it was using functions that called each other.

To allow for this, other languages such as C or C++ have a mechanism that says, in effect, “There's a function that I will define later on below; but right now, I'm only telling you its parameters so that I can code calls for it.” That's a forward declaration.

I found out to my delight that the AGS language have a forward declaration, too, using the import keyword:
Code: ags
import function A(int);
means that a function A will follow somewhere below that takes one parameter that is an int.

But I was foiled all the same: Turns out that even though AGS does have forward declarations, you still need to order the functions in such a way that any function that calls another one must have its body completely defined below the body of that other one! (wtf)  What a shame!

So why is this so hard for the AGS compiler?

(Technical reason below...)
Spoiler
There are two quite different uses for the import keyword. On the one hand, it can be a forward declaration as described above - it tells the parameters of a local function that will be defined below later on. On the other hand, it can be a declaration that an external function has been defined and exported in another module, so it must be retrieved from there when the program is bundled together.

So when an "import" comes along, the compiler must guess which meaning is meant. And it guesses that an external, imported function is declared. And it prepares everything for an import in all kinds of lists and tables.

Later on, when the compiler encounters an identically named local function that has a body, it goes, “OOPS!! Eeek! Oh my goodness. I screwed up back then. It had been a forward declaration after all. Let's sweep all those wrong preparations under the rug and pretend that that import never happened.” Then it hides all the traces as well as it can.

Trouble is that under the hood, an external function is called in a completely different way than a local function.  So if that “imported” function has already been called when it turns out it was local after all, it's too late for the compiler to clean up the mess. So that's a technical reason why the compiler insists that all the local functions must have been defined with their bodies before they are called.
[close]

How can we fix that?

(Proposed technical solution below)
Spoiler
Let's first eliminate the “oops” effect, shall we? The compiler would need to quickly scan the input to see what functions are defined locally; then it can process the input as before. Whenever it encounters an “import” statement, it would now know whether it was an import proper or a forward declaration in disguise. So it can avoid doing the wrong preparations from the get-go.

Granted, the compiler would still only know where the local method starts when it had reached and compiled it. So whenever the function is called before that point, the compiler would need to note down somewhere the position of the call in the code. When the body of the function comes along in good time, it could go through its list and patch the address in that it now knows.

We're still not in the clear, because from time to time, the compiler will emit some code, then rip it out of the codebase, then insert it at adifferent place - or even several times at several different places. So the code that keeps that list of calls to be patched needs to be aware of this activity.
[close]

Some snags with this idea:
Spoiler
This approach will only enable arbitrary ordering for functions that reside in the same compilation unit. The reason is that modules must be ordered in such a way that any module that calls another module must be placed below that other module. So you can't have mutual recursion that spans modules.

Also, as of now, you can't have forward declarations in room files -- that is expressly forbidden (I haven't found out the rationale yet, but there's sure to be a very good one). So you can't have mutual recursion in room files, it will only work in globaldata or in custom modules.
[close]


I can offer a “proof-of-concept” implementation on https://github.com/fernewelten/ags in the branch "Mutual_recursion".

(Details below)
Spoiler
It's lined up behind an oversized “monster” pull request that has unfortunately gotten rather huge (I'm at fault for that) and so will take its time, so I'm leaving the proof-of-concept for mutual recursion on my fork for the moment.

I've centralized all the main functionality in the class FuncCallpointMgr of files cs_parser.cpp / cs_parser.h
[close]
What do you think?
#47
Engine Development / Parser cleanup
Mon 14/01/2019 14:17:04
So, I am back.  :)

I've done my best to touch up the parser code. I'm providing googletests that cover 75 % of the code lines and prove that the rewritten parser generates exactly the same bytecode as the pre-rewrite parser, byte for byte. Nearly all the work is in solution Compiler.Lib, file script/cs_parser.cpp. Details in the note to the change request I posted (to the AGS4 branch).

Tell me what you think.

Now I am unsure how to proceed.

Up to now, I had a "closed, self-contained system" consisting of just the parser files and googletests.  I've pushed that as far as it would go. But now integration comes into play. For instance, when I write a program in the AGS studio, it has predefined macros:

Code: ags

for (function Loop = 0; Loop < 10; Loop ++) {
    break;
}

This is legal AGS code, and the only way this makes sense is assuming that "function" has been #defined as "int" somewhere. I don't know where the macros and stuff are set up, or more generally, just what happens at all before cc_parse() is called.

Also, as far as I know, you can call predefined properties in AGS code, but you can't define your own properties in AGS code -- so I can't write self-contained googletests that check property parsing code.

I also don't know what happens after cc_parse() has done its thing. There's bound to be a linking step somewhere?

So how do I widen the horizon (efficiently)?


#48
Engine Development / Two compilers, one cup?
Wed 25/07/2018 01:12:35
At first blush, this project seems to have two compilers:

  • The one in Editor/AGS.CScript.Compiler
  • The one in Compiler/script/cs_parser.cpp (the main entry seems to be the function __cc_compile_file())

How are they related? Which should I delve into first?
#49
Hi folks,

I'm a computer scientist and former programmer (I've worked in a different profession in the last years). I've become interested in looking under the hood of the AGS system with the perspective of regularly dedicating/donating some development time in the mean term. I've got a Windows 10 system that I could use for this.

The first step would be to set up a working development system for AGS.

I've found this github project: https://github.com/adventuregamestudio/ags. From there, I was pointed to this thread.

However, starting to read this thread, I've got some grave misgivings whether its information is still up-to-date. It starts off by talking about Visual Studio 2008, and we are half-way through the year 2018 by now. Also, the source code described seems to be version-2, even referring in parts to the original Chris Jones code from 2011. And as far as I understand, even the current version 3.4.1 is on the brink of being heavily revised behind-the-scenes.

So, beginning with a machine that doesn't have anything installed over and above Notepad++, how do I get to a development system with all the necessary sources and libraries where I can press a button and half an hour later, a shiny compiled AGS drops out?
#50
Hello folks,

AFAICS, the sticky post "All the Paint Programs You'll Ever Need" has been updated in 2011 the last time, so it has reached compulsory school age by now.

Despite the brash claim at the start, "This is a list of all the working (highlight of the author) links to paint programs", several are not, amongst others:


Synfig is mis-labelled. This is mainly an animation program, not a vector program.

Time for some modernization, perhaps? :-\
#51
Hello,

www.nikolas-sideris.com/tutorials has dropped from the face of the Internet earth; by now its root page www.nikolas-sideris.com/ contains tips for selecting online football brokers in Indonesian language. (Really. (roll) (wtf) Or at least, that's what I make of the output of Google Translate.)

Thus, all of the links at the start of the posting "Quick links to Forum tutorials!" get a 404 Page Not Found. Even the Wayback Machine can't resurrect a good part of these links.

What a pity!

Any ideas or tips for resurrecting the lost information?
#52
Hints & Tips / Commando Raid hints
Mon 04/06/2018 22:52:08
Dear Community,


The Point and Click adventure “The Devious and Daring Commando Raid of Linkattus, the Lowly Janitor Rat, In Order to Free Ratzelda, the Princess of His Dreams, And to Get Her, Too” (short: Commando raid) is out.

If you offer an adventure, you always run the risk of your players overlooking something or of thinking in another direction than the author's strange and warped imagination. So I've dropped some hints below.

All the hidden sections except for the last one contain hidden subsections. So un-hide a question that most fits your problem and then un-hide the answer to the best fitting subquestion.

If you need more tips, just ask here in this thread, and I'll do my best to help!


How do I get the key to the cleaning cabinet?
Spoiler

1.
Spoiler
Have you examined everything, particularly near the cabinet?
[close]

Yes, but no luck?
2.
Spoiler
Try disturbing the boss again, _after_ your examination of the items on the _floor_ near the cabinet.
[close]

And?
3.
Spoiler
You'll get an audio clue when the boss comes out of the door. A clinkling sound ... Something might happen right then...
[close]

So that means in plain words?
4.
Spoiler
There's a largish floor pocket near the cabinet. LOOK into it. Then INTERACT with the management door. Boss will come out and drop his key into the floor pocket. Finish the dialogue in any way you like, then INTERACT with the floor pocket, and Linkattus will pick up the cabinet key.
[close]
[close]

There must be more in the very first room than meets the eye. How do I see it?
Spoiler

1.
Spoiler
So something must be in front.
[close]

Yes?
2.
Spoiler
You saw Linkattus come into the room right at the start of the game? How did he do it?
[close]

what about it?
3.
Spoiler
Try closing the sewer room door (right wall). You'll need to click on the door _handle_, and Linkattus must be fairly near (if he's on the right side of the water, he'll be fine).
[close]
[close]

How do I get the mop?
Spoiler

1.
Spoiler
LOOK at things (right-click), don't only INTERACT with them (left-click).
[close]

Good general advice; what does this mean here in particular?
2.
Spoiler
A bag hangs on the sewer entry door (right wall). You'll only see it when the door is closed. (See the question "meets the eye" above when you have trouble closing the door.) LOOK at it and Linkattus will discover the mop head inside.
[close]

But that only gets me half-way. And the other half?
3.
Spoiler
What's visible in the room that might fit into the hole of a mop head?
[close]

Well, Linkattus can't pick it up. He says so.
4.
Spoiler
The _fourth_ iron bar in the back wall is _not_ cemented in the wall, so Linkattus can pick that up.
[close]
[close]
When I have the tools, how do I start cleaning?
Spoiler

1.
Spoiler
COMBINE the suitably assembled mop with the suitably prepared bucket.
[close]

How do I prepare the bucket?
2.
Spoiler
It needs water and soap.
[close]

How do I assemble the mop?
3.
Spoiler
You need to combine the mop head with three iron bars. Any sequence will do.
[close]

But I can get at only one of them?
4.
Spoiler
You can get the other iron bars by wielding the first bar. This will only work when you wield an iron bar. (Linkattus will tell you that.) However, if your iron bar is already combined with the mop head, disassemble that construction by combining the mop with itself. Then pick up the single bar and click on the bars at the back wall.
[close]
[close]

How do I get out of the first room?
Spoiler


1. Leaving prematurely is a firing offense. What would give Linkattus good reason to leave even though?
Spoiler
The ransom letter - it will be delivered immediately after the room is cleaned.
[close]

2. So where's the proper exit?
Spoiler
You won't pass through the doors or swim the sewage canals. So there's only one other option.
[close]

3. How do I get there?
Spoiler
You can't affix anything to the shaft, so you'll have to get something to the wall that will start from the floor in front of the shaft.
[close]

4. But I haven't got anything at hand that is long enough?
Spoiler
Well, you've just solved a problem where something had to be just the right length. A similar approach should work here.
[close]

5. So I've adjusted the length; what do I do with it now?
Spoiler

(a)
Spoiler
You don't want to _clean_ the back wall. Sometimes less is more.
[close]
(b) And what does this mean specifically?
Spoiler
For this specific task, you mustn't have the mop head affixed to the iron bars. So start by disassembling the mop (combine it with itself in the inventory). Then just combine iron bars with iron bars.
[close]
[close]

6. How do I make use of my item?
Spoiler

(a)
Spoiler
Note that the LOOK function is available in the inventory, too. When the mop head is removed and the stick has maximal length, does Linkattus' description remind you of a specific sport?
[close]

(b) And where do I put my sports equipment?
Spoiler
Remember how you retrieved the bucket and soft soap? How did you do it?
(Technical note: Do you have trouble "clicking" on the right spot of the room whilst "holding" the item? The cursor icon for this equipment is very large, so it might be a bit hard to navigate it over the exact spot you want to click on. Simply move it around a bit until the bottom line announces the right spot.)
[close]

(c) I don't get it.
Spoiler
Don't affix the mop head to the bars (or if you have, disassemble the construction by combining it with itself). COMBINE 5 iron bars into a pole and put that pole into the floor pocket where you took the cabinet key out.  (It's a big pocket surrounded by a fine grey line to the left of the cabinet.)  INTERACT with the pole to pole-jump to the exit.
[close]
[close]

7. I can't get hold of the map. What do I do?
Spoiler

(a) Does Linkattus _know_ (in this game run) that he'll need a map? How can he learn that?
Spoiler
The way out of the sewers is through the shaft at the back wall. When asked about the shaft, Boss will tell Linkattus that he needs a map.
[close]

(b) But I can't find any map after diligently searching the room?
Spoiler
Linkattus is content with a piece of paper. Where would he find paper in this room?
[close]

(c) I can't think of anything that would fit the bill.
Spoiler
Retrieve the rota from the side of the cabinet. _After_ the ransom letter has arrived and _after_ Linkattus has learned that the way out involves a maze, Linkattus will do it and risk being fired.
[close]
[close]

7. How do I get the daily rota?
Spoiler

(a) Snagging the daily rota is potentially a firing offence, Linkattus says that. So …
Spoiler

… can you give Linkattus a reason to _want_ that rota even though?
[close]

(b) So how do I do that?
Spoiler

The ransom letter must have arrived (which happens directly after the room is cleaned). Linkattus must know that the shaft leads out of the sewers by way of a maze (by asking the boss about it). Then he'll need the backside of the rota to write his map on.

When the preconditions above are fulfilled, INTERACT with the rota and Linkattus will take it from the wall.
[close]
[close]
[close]

How do I navigate the maze?
Spoiler

(a) What doors do i need to click on, what rooms do I need to pass?
Spoiler
The maze is randomly generated in each game, so I don't know, either. Sorry about that!
[close]

(b) Somehow I run into trouble drawing my map. What gives?
Spoiler
If you LOOK at a room label, Linkattus will point out that all the labels are different. He's quite right about that. However, note that some room names have a dash, some haven't. Room L97 is different from room L-97. I suggest saying the dash explicitly when reading the room names, so say "El dash ninety-seven" instead of "El ninety-seven" to ensure that the dash doesn't get dropped.

Note to native-German speakers: We have a confusing way of saying double-digit numbers: "seven-and-ninety" instead of "ninety-seven". This might lead to transposed characters in your map. Counteract that by reading the room names character by character: "El dash nine seven" instead of "El dash seven-and-ninety".
[close]

(c) Any map making tips?
Spoiler
Don't just make circles for the rooms and arks for the connections. Write at the respective ends of the arks what specific doors they belong to (the door letters, if there are any; or "1st", "2nd" etc., or for specifically the lift, the storey and the door number).
[close]

(d) Is there any way to speed Linkattus up?
Spoiler
I've tried very hard to make the AGS functionality work that makes a character speed to their end position when a key is hit, but I failed: It doesn't seem to work with blocking walks. The work-around I put in jumps a character in a straight bee line towards their goal when you hit the escape key. They'll walk normally towards their goal from there on. So your mileage will vary dependent on the geography of the area. Wiggly routes and small strips of walkable area work worse than straight routes and wide walkable areas.

By all means, try hitting "ESC" to speed Linkattus up, perhaps repeatedly.
[close]
[close]

How do I get past Kitty?
Spoiler

1.
Spoiler
You can't sneak past her; she'll jump in front of you as soon as you near the line. So you'll have to interact in the usual two ways: talk to her (left-click without holding something) or give her something (take up an inventory item and left-click the cat while holding it).
[close]

2. When I talk to her, she wants me to give her the fish, and I don't have them. I can't offer anything instead that will placate her.
Spoiler
But there's only one item you can offer her that will provoke Linkattus to give a specific comment after the dialog.
[close]

3. Okay, I've determined the item I want to use, how do I use it?
Spoiler
Where would you relocate that “ball” (soft soap) to entice Kitty to go away?
[close]

4. So tell me what to do with it.
Spoiler
Throw the soft soap to the cat flap over the door.
[close]
[close]

How do I continue the screens after Linkattus has retrieved Ratzelda?
Spoiler
The monologues are endless. Look at them as long as you like and then hit the red "..." button at any time when you're done watching.
[close]
#53
Hello all,

I'm in the middle of a cutscene and I need to open a cupboard door. I usually handle this by having two sprites for the object - one for the open door, one for the closed door - and assigning the right sprite to <object>.Graphic. When the respective event ends, the screen is redrawn, and the new state of the cupboard (open/closed) shows.

This doesn't work in the cutscene, though, because just assigning to <object>.Graphic does NOT by itself make the screen redraw; and the cutscene needs to carry on, so relinquishing control by letting the event code end isn't a good option either.

To explain more clearly, here's some code:
Code: ags

// Clicking the bucket with the mouse shall start the cutscene
function oBucket_Interact()
{
    ...
    player.Say("Let's put away the blue cup now!");
    player.Walk(5,5, eBlock); // to the cupboard
    oCupboard.Graphic = OPENDOORGRAPHIC;
    // Screen needs to update here!
    Wait(40);
    oBlueCupInCupboard.Visible = true;
    // Screen needs to update here!
    Wait(40);
    oCupboard.Graphic = CLOSEDDOORGRAPHIC;
    player.Walk(77,77, eBlock);
    ...



So how do I force a screen update? Using FadeOut(); FadeIn() works, but this is drastic if I have to do it all the time.
#54
Hello,

when editing a game and choosing "Build/Rebuild all files", I get the message:
Code: ags
Failed to save room room1.crm; details below
_AutoGenerated.ash(67): Macro 'DEBUG' is already defined


The online help says that the most likely cause is two things with the same name. In that case, I'm at a loss what those names might be.

I can't read _Autogenerated.ash, so I can only guess at what the code tries to autogenerate.

So how do I hunt down the misalignment?

AGS version 3.4.1
Windows 10
#55
“Grand Kitchen Escape”
is ready for download now.


This started as a MAGS game (see this March), but I found out that I didn't know nearly enough of animating animals to make a proper job of it. I wasn't willing to spoil the gameplay with grotty animations, so I didn't enter the competition as planned and learned animating instead.

Now I'm ready to release the game, and the cat and the dog move better than the human does!

This adventure features:

  • A choice between three player characters
  • A minigame (opening a safe)
  • Specially composed and recorded background music
  • High-res graphics (more or less: it's 800x600) prepared in Inkscape
  • bugs (probably - if you find one, tell me) and other paraphernalia.

It does not feature much gameplay, unfortunately: If you know the correct places to click on, it's quite short. I can only suggest staying in the kitchen as long as possible instead of escaping. :) You'll be rewarded with in-jokes etc. Have you found the philosophical drawer yet?

Yes, all the player characters do have a chance of escaping, each one in a different way.

Interface:

  • Right-click on things to make your player character look at them
  • Left-click to make them use them.
  • Move the mouse to the top to make the game menu appear.

Epilepsy alert: The main screen features a ceiling fan that blinks/flashes when turning. To avoid that flashing, move the mouse to the top in the starting screen and hit the button "Flashless". A tick should appear after the word then. You need to do that on the starting screen since the later screens don't feature this button.

Download the game here

Some spoilers:
How do you open the locked cabinet?
Spoiler
Only Kevin can. With a key, of course.
[close]
And where's that?
Spoiler
At the curtain
[close]
I looked, and it wasn't.
Spoiler
Look very diligently.
[close]
What's the secret combination?
Spoiler
It changes in each game, sorry about that.
[close]
And how do I get it?
Spoiler
Play a kind of “Mastermind” game. The number of green letters gives the number of symbols that are in the correct position. If you are persistent enough, you only need to get 7 symbols right to open the safe.
[close]

How does Kitty move around?
Spoiler
When Kitty is on the floor, he won't pay attention to cabinet doors. However, when he's in reach, he will jump on some of the cabinets if you click on the corresponding doors. Other destinations work, too: you should be able to figure out what works with this hint in mind.
[close]
#56
Hello.
I'm playing the Gateway remake (version 1.1).
I've got:

  • the DATAMAN,
  • credit  card,
  • club pin,
  • clover key,
  • green pamphlet,
  • letter about the Orion program,
  • telephone number napkin,
  • tuning fork,
  • blue badge,
  • round medal,
  • scrap of paper for lvl. babe,
  • gun,
  • magazine.

I've

  • been briefed
  • met three people in the bar, buying two of them alcohol
  • retrieved the tuning fork from the museum
  • won the trivia game in the casino
  • broken the Beach VR
  • visited the room behind the crate on Lvl. Babe
  • played the Light Psych VR without knowing what to do with it
  • retrieved the gun from the armory

I'm at 190 points.

Now I simply don't know what I'm supposed to do next. There are no open puzzles I know of.
The agent guarding the restricted area won't let me pass ("I'm sorry, but you're not listed in the computer yet. ... try back tomorrow").
I can't advance time, however, and I haven't any clue about what else the agent might be waiting for.

According to the PV commset, there's supposed to be a demo in front of T52 at 9 o'clock, but again, I can't advance time in a targeted manner.

So how do I proceed?
#57
Hello,

Is there a way to get the dimensions of a hotspot(!) by code?
What I'm after is the bounding box that contains the hotspot.

Why: My Ego has got a smartphone and loves to take a snapshot with it of the room part that the player clicks on.
Ego can already do this with characters and objects. He wants to shoot hotspots, too.

The way I found for characters is a bit convoluted, but feasible:
Code: ags

Character *chr = Character.GetAtScreenXY(mouse_x, mouse_y);
ViewFrame* frame = Game.GetViewFrame(chr.View, chr.Loop, chr.Frame);
int width = Game.SpriteWidth[frame.Graphic] * GetScalingAt(mouse_x, mouse_y) / 100;
int height = Game.SpriteHeight[frame.Graphic] * GetScalingAt(mouse_x, mouse_y) / 100;
int x = chr.x - width / 2;
int y = chr.y - height;


The way I am using for objects is:
Code: ags

Object *obj = Object.GetAtScreenXY(mouse_x, mouse_y);
int width = Game.SpriteWidth[obj.Graphic];
int height = Game.SpriteHeight[object.Graphic];
int x = obj.X;
int y = obj.Y-height;


I haven't found a way to do this with hotspots.

Ego photographs about 20% more than the bounding box, so if my calculations are off by a little, that won't matter.
#58
Hello.

I'm trying to build a high-resolution (1280x720) adventure with AGS 3.4; for the exact setup, cf. the bottom of this post. This is my first attempt to work with AGS. I've read the FAQ and perused the F1 documentation several times.

Currently, I'm trying to make a custom text window work. I'm testing the following code with different displaying functions:
Code: ags

function room_FirstLoad()
{
    DisplayAt(550, 400, 100, "That's me talking!");
}



I notice:

* When I use player.Say() or player.SayAt() or Display(), the system uses some font that I haven't found in the configuration screens anywhere. Also, the system ignores the custom text window GUI 7 that I set up in General Settings. I've tried every setting in Dialog/Speech style without changing anything in this regard.

player.Say():

Display(): (same picture as above)
player.SayAt():


* When I use DisplayAt(), the system does use my custom text window and does use a font in the resource tree, I think font 1.


The documentation of DisplayAt() claims: "Identical to the "Display" function, only this allows you...".

I've probably overlooked some customization somewhere. So how do I proceed from here?
There's also a slight chance that I might have tripped over some obscure bug.
I've tried several Google queries without finding any article that treats similar problems.

Peter

PS. Please disregard the graphics. I use scribbles for everything where I am still unsure of the exact details, by principle.

Here is my setup:

My AGS version, as given in the Help/About AGS... screen:

QuoteAGS Editor .NET (Build 3.4.0.16)
V3.4.0, March 2017
Copyright © 2006-2011 Chris Jones and 2011-2017 others.
Scintilla (c) 1998-2003 Neil Hodgson, all rights reserved
DockPanel Suite (c) 2007 Weifen Luo
See the DOCS folder for copyrights of used libraries.
System: Windows 7
Editor plugins loaded:
x ags.plugin.notes.dll

My "General Settings" screen:
Quote
Put sound and sprite files in source control   False
Resolution   1280 x 720
Backwards Compatibility   
Enable mouse wheel support   True
Enforce new-style audio scripting   True
Enforce new-style strings   True
Enforce object-based scripting   True
Left-to-right operator precedence   True
Script API version   3.4.0
Script compatibility level   3.4.0
Use low-resolution co-ordinates in script   False
Use old-style custom dialog options API   False
Character movement   
Automatically move the player in Walk mode   True
Automatically walk to hotspots in Look mode   True
Characters turn before walking   True
Characters turn to face direction   True
Compiler   
Build target platforms   Windows, Linux
Compress the sprite file   False
Enable Debug Mode   True
Split resource files into X MB-sized chunks   512
Dialog   
Allow speech to be skipped by which events   Mouse, keyboard or timer
Dialog bullet point image   0
Gap between dialog options (in pixels)   0
Number dialog options   Draw numbers and use keyboard shortcuts
Print dialog options upwards   False
Run game loops while dialog options are displayed   False
Sierra-style portrait location   Left
Speech style   Lucasarts
Use game-wide speech animation delay   False
Use GUI for dialog options   0
Inventory   
Display multiple icons for multiple items   False
Inventory item cursor hotspot marker   None
Override built-in inventory window click handling   False
Use selected inventory graphic for cursor   True
Saved Games   
Enhanced save games   False
Save game file extension   
Save games folder name   Test Freedom
Save screenshots in save games   True
Sound   
Play sound when the player gets points   (None)
Text output   
Always display text as speech   True
Anti-alias TTF fonts   True
Custom text-window GUI   7
Custom thought bubble GUI   7
Fonts designed for 640x480   False
Write game text Right-to-Left   False
Visual   
Default transition when changing rooms   FadeOutAndln
GUI alpha rendering style   Additive Opacity
Pixel-perfect click detection   True
Sprite alpha rendering style   Classic
When player interface is disabled, GUIs should   Grey out all their controls
Windows Vista Game Explorer   
Developer website   http://peter.bouillon.hat-gar-keine-homepage.de
Enable Game Explorer integration   False
Game description   
Genre   Adventure
Release date   01.01.2021
Version   0.0.1.2
Windows Experience Index   1
SMF spam blocked by CleanTalk