Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Topics - Monsieur OUXX

Pages: [1] 2 3 ... 15
Following post-mortem this thread and all the previous threads

Add spoiler tag for Hidden:
EDIT : everything that is written in this hidden section was my original post but you should not consider it my opinion -- it was more of a conversation starter and has been contested. The table is better.

I'm starting this thread in this forum for two reasons :
1) there was no thread dedicated specifically on MonoAGS
2) This is virtually a sub-thread to the "AGS 4"  thread (aka "why this project is screwed up"), only dedicated to MonoAGS as one of the many options.

What I like about MonoAGS
  • It's started by one (seemingly skilled) person, who has leadership
  • he sources are immediately available on git.
  • Some thought has been given to follow in AGS legacy (programming-wise). Specifically: Not being unncessarily anti-Microsoft, while still focusing on cross-platform tech
  • Some thought has been given to having a good, flexible scripting language (i.e. C# as a scripting language that can still be compiled separately from the engine or Editor source)
  • Some effort in the documentation

What I don't like about MonoAGS
  • The Editor is not part of the initial vision. It's envisionned as some sort of tool "external" to the engine, that can come after. It means there's no vision on assets management and game-creation pipeline.
  • It's focusing a lot on basic graphics rendering (SDL), with no vision regarding the other components, such as sound engine, controllers input, GUI, timing, etc. That's my biggest concern with many wannabe game engines: they lose steam after they manage to render the graphics of the game, but that's only 25% of the whole picture.
  • It doesn't do vectors, even only just by wrapping some basic directX primitives/data structures. There are many vectors usages that you might not think about until they're missing and it's too late (graphics scaling, walkable areas, perspective, camera control, tweens, parallax, etc.).

What I don't know about MonoAGS
  • Is the build automated? Like, do you maintain a solution made with something such as cmake to generate the .sln file and all? That's one of the weaknesses that CW pointed out in AGS. Those tools are real magic to generate soluions for any IDE/compiler/Visual Studio version in one click

Apart from that,I have no opinion on the switch from Mono to .net Core. That's a side discussion.

There should also be threads to discuss Blade Coder and Adore.

EngineAGSBladecoderMonoAGSAdoreEscoriaPlaceholder 1Placeholder 2
Middleware / underlying game engineAllegrolibgdxNoneLöve
aka Löve2D
GodotPlaceholder 1Placeholder 2
Editor includedYesYesNot yet

(plans on making things editable directy in-game)
No editor provided but many frontends suggested (e.g. Notepad++ with a plugin)

See link in footnote
YesPlaceholder 1Placeholder 2
Platform/VM for the engineNone (direct  C++), but has binds to some Windows libs.

JavaNon-Microsoft .Net Framework, aka “Mono” (considers moving to .Net Core)LuaPlaceholder 1Placeholder 2
Platform/VM for the Editor.Net framework
JDK requiredMono (considers moving to .Net Core)-Placeholder 1Placeholder 2
Hardware supportedWindows desktops.

Existing ports :
MacOS (outdated)

(not only the build+execution, but also subtle things for mobile devices such as tapping, hand motions and accelerometer)

(but for subtle things meant for mobile devices such as tapping and accelerometer, you’ll need extra code/libraries)

(not only the build+execution, but also subtle things for mobile devices such as tapping, hand motions and accelerometer)
Placeholder 1Placeholder 2
Engine’s languageOld-school C with big chunks of C++JavaC#LuaPlaceholder 1Placeholder 2
Editor’s languageC#JavaC#-Placeholder 1Placeholder 2
Main libraries used
(apart from DirectX+OpenGL which are included implicitly in most cases)
allegro 4I don't know how much of libgdx is self-sufficientOpenGL+OpenAL bundled in OpenTKI don't know how much of Lua is self-sufficientPlaceholder 1Placeholder 2
Proper versioningYes (git)Yes (git)Yes (git)Yes (git)Placeholder 1Placeholder 2
Automated testsNo ???Yes (“busted”)Placeholder 1Placeholder 2
Automated solution generationNoNot needed ? (Java all the way)NoNot needed (Lua all the way) ?Placeholder 1Placeholder 2
Automated build and releaseNoMost likelyYes?Placeholder 1Placeholder 2
Native support for Photoshop (PSD) filesNoNo?NoYes?Placeholder 1Placeholder 2
Localization mechanismsYes, up to 256 characters per font???Placeholder 1Placeholder 2
Good manual + community + tutorialsYesYesYes
(at least it has some doc and a proper home page)
Yes but only one demo gamePlaceholder 1Placeholder 2
MaintainersApprox.. 4Many for libgdx,
 +1 very efficient for Bladecoder,
+approx. 4 from the AGS community if we go there
+approx. 4 from the AGS community if we go there
Many for Löve2D,
+1 for Adore,
+approx. 4 from the AGS community if we go there
Placeholder 1Placeholder 2
Sound engineNot really, apart from just playing soundsYes


(OpenAL has good features, that tzachs has wrapped into MonoAGS)
YesPlaceholder 1Placeholder 2
Controllers inputJust the basic : keyboard+mouse (and joystick with a plugin)Yes+
(including mobile device gesture)
Just the basicsYesPlaceholder 1Placeholder 2
Subpixel management / maths / vectors

(see in an other post in this discussion what I mean by that)
apart from basic float management and the Tweens module

skelettal animation out of the box
basic OpenGL stuff + everything that was ported to C#.

Anything else has to be binded manually
YesPlaceholder 1Placeholder 2
Multithreading inside the gameNoProbablyto be implemented by the game designerProbably, using Lua?Placeholder 1Placeholder 2
Data structures / serialization / database-like processingNo, apart from arrays of structsYes (XML, Json and everything natively)Yes? (classes from Mono and/or .Net Core)Yes? (Lua has everything)?Placeholder 1Placeholder 2
Pixel-perfect low-res graphicsYes?Yes?Yes??Placeholder 1Placeholder 2
Collaborative work / compatibility with versioningPossible with scripts and rooms, but not recommended with the main game file (.agf) nor sprites library.?Editor doesn’t exist yet??Placeholder 1Placeholder 2
Game scripting languagecustom (AGS script)NONE YETC#
(but some people think that things are little too hard coded yet)
Luacustom (Gdscript, aka something similar to strongly-typed Python)Placeholder 1Placeholder 2
dialogs scripting languagecustom (AGS dialogs script)InkC#Lua?Placeholder 1Placeholder 2
in-game GUIsNone/custom

(poor set of native graphic controls)

(offered by libgdx)

(partially implemented)
Lua libs?Placeholder 1Placeholder 2

Escoria :
MonoAGS :
Libbgdx :
Löve :
Suggested editors for Löve :

Ink :
Java :
Mono :
Mono versus .Net Core :
Adore :


Normally Critics Lounge is to sho something that you've made and ask for constructive criticism.
But it's also a space for discussing the drawing techique used -- so, not to set a precedent, but I'd like to ask you tips on a specific topic : drawing foliage in pixel art.

Foliage in pixel art looks differently for every pixel-artist, but in the end I still think you can categorize the result in 3 families :

- Messy artifact-y foliage : That's usually when the artist simply scaled down a picture of a tree.
     Caracteristics :
      x There are almost as many pixels as there are leaves
      x There are almost as many shades of green/brown as there are leaves
      x The contrast is usually very high and there are way too many black pixels -- because in the original tree picture, the areas that were in the shadows (especially the self-cast shadows of the tree) were rather dark, and the artist failed to adapt that original shading to match the overall shading of his/her pixel scene.

Example 1 (background foliage):
PLEASE NOTE: I'm not criticising the guys who drew the backgrounds
 for this "Tanis" demo as I think they made an outstanding pixel art
 job for everything else. Only the foliage bothers me.


Exampe 2: these ones were probably drawn by hand, and yet they still
have this messy aspect and exagerated contrast :

- Overdrawn/overstylized foliage : That's when the artist actually drew the leaves one by one and got carried away with the shading. It gives everything a cartoony look or a "pillow shading" look.


Example 1: (see the leaves in the foreground)

Example 2 :  (notice how each leaf is drawn one by one in the middle tree)
(The crystal shard team produces amazing graphics but that's not the style
 we're aiming for)

- The magic look : (the look Id like to achieve) the foliage has exactly the right level of detail and number of colors. It has a crisp ascpect and yet it's not busy.

Example 1 (Fate of Atlantis as always     

Example 2       

Strangely, FotAQ artist succeeded here. Even though there's a lot of copy and paste.

So, now, the discussion: any ideas on how to achieve that render effect?

I was thinking the following transformations/filters in photoshop:
- gaussian blur (to remove unnecessary details)
- color quantizer (it's like a better posterize) to reduce the number of colors
- denoiser to remove the few rogue pixels remaining and giving an overall smooth (yet crisp) aspect
- and of course at the end a brightness-contrast (or better yet: curves) adjustment.

Any better idea?

how do you get the alpha of a pixel in a drawingSurface? By parsing the highest bits of the value obtained through GetPixel?

Scenario :
- I import a sound into the game
- In my room_load (before fade-in), I call aMySound.Play(eAudioPriorityNormal, eRepeat);
- I am able to play that sound fine from the "sound" panel
- the game compiles properly. I then run it from within the Editor, with F5.
- when I enter the room, the game crashes with error "an internal error has occurred(...) Error: Unable to create local script (...) Unresolved import 'aMysound'"


Note: I've tried compiling it for real ("build EXE") beforehand, but it didn't help.

Here is a simple experiment :

EDIT: code below was edited to take in account CW's feedback in next message)
Code: Adventure Game Studio
  1. void repeatedly_execute_always()
  2. {
  3.     while (!mouse.IsButtonDown(eMouseRight))
  4.     {
  5.         mouse.Update();
  6.     }
  7.     Display("Done!");
  8. }

You'll notice that the engine freezes and you can't exit the loop even by pressing a key or left-clicking.
What are your thoughts on this?

I'm looking for ways (as inconventional as needed!) to intercept user input during repeatedly_execute_always. Oh, and to reflect something on screen.

Modules & Plugins / MODULE : Display-based GUIs
« on: 13 Oct 2017, 19:21 »
This module lets you display an interactive GUI relying on the "Display" AGS built-in function rather than a regular function.

In a nutshell:
- it transforms any "Display" popup into an interactive popup
- it has the wams "flow" as the Display function (or Wait(1)): it blocks the game but still lets repeatedly_execute_always run once after each time it's called.
- you may have 3 types of controls : Labels, Buttons, TextBoxes
- it's based on text (because of the "Display" function) but you can still use pixel-perfect positioning of controls (horizontally, not vertically)
- you may use the keyboard left/right/up/down keys (to select the button or textbox), use "return" to validate your choice, or "escape" to close, etc.
- you may use the mouse to click on the buttons or textboxes

More generally, it's a basic toolbox that could become handy for anyone wishing to implement a GUI based on text, independently from the AGS context.

As a demo I implemented a Yes/No popup but you can also implement easily a popup window that prompts the user to enter text into an interactive textbox (moving cursor, backslash, "del" key, etc.).


Advanced Technical Forum / Engine loop chronology
« on: 11 Oct 2017, 12:14 »
I'm asking a question which answers are everywhere in the foruls and in the manual, but I need to have it discussed in one place to make sense of it.
What's the chronolgy/order of operations within one game loop?

Consider this piece of code :
(pre-requisite : create a GUI with a label called TestLabel somewhere)
Code: Adventure Game Studio
  1. bool valueChangedCount=0;
  2. void repeatedly_execute()
  3. {
  4.     for (int i=0; i<10;i++) {
  5.          Display(String.Format("i=%d, valueChangedCount=%d, mouse.x=%d", i, valueChangedCount, mouse.x));
  6.         TestLabel.Text=String.Format("%d", i);
  7.     }
  8. }
  10. void repeatedly_execute_always()
  11. {
  12.     valueChangedCount++;
  13. }

Now run the game. You will observe this :
- While the Display popup is displayed, the mouse will move on the screen because it's handled at a very low level by the engine.
- However mouse.x is not updated
- when i changes, the change is reflected into the Display popup AND in the TestLabel
- valueChanged does get updated.

All of that demonstrates  :
- that an instruction like Display (which can't be called in a blocking script) really blocks the engine.
  Proof: the game does not switch to next game loop (mouse.x not updated). So its behaviour is different from,
  let's say, Wait(1).
- however repeatedly_execute_always is called at each Display call (proof: valueChanged becomes true),
  which tends to demonstrate the opposite
- GUI changes are immediately rendered(even though the GUI not interactive since mouse is technically frozen). It means
  that GUI rendering is "outside" of game loops, i.e. outside of the repeatedly_execute/repeatedly_execute_always

Is there some logic in there? (not asking in a mean way, just trying to get the whole idea to avoid mistakes)
Is there some queued instructions black magic that I'm missing? Is this snippet code changing game loop each time yes or no?

EDIT: this module was actually heading towards two unrelated directions (on the one hand, experiments on blocking GUIs, and on the other hand the so-called "breakpoints" feature).

Therefore I'd rather start over and split it in two.

- the part concerning the Display-based GUIs :
- the part concerning breakpoints : working on it!

Add spoiler tag for Hidden:
Indiana Jones and the seven cities of gold development team proudly presents :

             AGS Breakpoints

                     (a.k.a. "DisplayGUI" module)

Click on image to watch video

What does it do?
In a nutshell :
  • 100% blocking interactive GUI in any script (well, any script where you could normally use function "Display")
  • Easily watch variables' values anywhere in your script, like a real breakpoint (and in future version : edit them)
In detail :
  • Watch the video above (url : ) or read this :
  • AGS is a very cool engine, but one of its downsides is that it has no real useful breakpoints. Breakpoints can pause the game (hurray!) but you can't watch the variables values, so the Breakpoints are mostly useful to check that your script goes nto a specific code branch (if...then...) but it won't help you debug a complex code with values changing everywhere.
  • Until now, your only solution was to use the "Display" function, but it was really a pain in the neck when you want to display several variables at once (you'd need to write a different "String.Format..." for every occasion). You could use a GUI, but since the whole point of this is to entirely "pause" the game (GUIs included) then the GUIs would be disabled (therefore becoming non-interactive).

    Well now you have a way to entirely pause the game anywhere in the script AND still be able to click around and benefit of useful features. This makes it much closer to a regular "watch" as seen in Visual Studio and others

How to setup:
Basic use setup:
1) import the DisplayGUI module,
2) import the modified Font0 provided in the demo game (you can simply swap the files in your game folder. Fear not! It only modifies the first 20-or-so characters in the font, which should be harmless since they are very rarely used by anyone. If you need those, you can modify the ascii codes in the module and you can quickmy edit the font using Rulaman's "TtfWfnSci" tool (you can find a link here).
3) Import the sprite that represents a small 3x*3px red square, that you may export from the demo game in the "displayGUI" sprites folder
4) Make sure that mouse mode "userMode1" uses this sprite as cursor
5) Before you call any instructions of the module, call "DisplayGUI.Init(myFont)" where myFont is the font that you just swapped

Advanced use setup:
1) Get the original "UltraVariables" module by SSH, or export the one present in the module's Demo Game.
2) Check the DisplayGUI's header to see what custom instructions you need to add to the Ultravariables module. There are only two : One export instruction, and one export instruction.

How to use:
Basic usage:  (no Ultravariables)
1) Don't forget to call DisplayGUI.Init(...) before anything
2) To display a Yes/No popup window, do as follows :
Code: Adventure Game Studio
  1. YesNoResult result = DisplayGUI.ShowYesNo("line of text 1", "line of text 2");
  2. if (result==eDisplayGUI_Yes)
  3.     Display("player clicked YES");
  4. else
  5.     Display("player clicked NO or exited the popup (by pressing ESCAPE or right-clicking)");
3) To display the Watch interface :
Code: Adventure Game Studio
  1. //Obviously, myVariable must exist. Oh, and it does "int" only, sorry!
  2. BREAKPOINT("myVariable name", myVariable);
  4. //You can watch up to 7 variables, and only 5 can be displayed simultaneously
  5. //(but you can see the others if you enter their name in the interface)
  6. BREAKPOINT("myVariable1 name", myVariable1, "myVariable2", myVariable2 /*, up to 7 */);

Advanced usage:  (with Ultravariables)
1) make sure you have followed the setup instructions above
2) Set  and get the value of any variable like this :
Code: Adventure Game Studio
  1. SET("myVariable", 7);
  2. int value = GET("myVariable");
3) Display them at will in your Watch interface by typing their name whenever you want.
4) Careful though! These variables are GLOBAL variables by design. In other words : There's only one ultraVariable with the same name in the entire game.

Free to use for any purpose whatsoever, provided you credit us in your game credits (if any ;) ). Don't forget to credit SSH too for his UltraVariables module.


Version 1.1 :
Added simple graphic theme (because prettier things are more attractive)
              Pro : prettier
              Con : makes the popup blink because AGS function "DisplayTopBar" doesn't behave the same way as "Display". I would suggest: use the theme for Yes/No popup, but not for the Watch interface.


if you're familiar with AGS, you know that under specific conditions (running a 320x200 game with Direct3D) you can have high-resolution characters in a low-resolution game. Some consider it a glitch, some like it, and at the end of the day the causes of that peculiarity is very well known (it has to do with allegro and all that).

But now, WHAT IF I did this :
- creating a 640x480 DynamicSprite (and of course drawing anything i want into its drawing surface)
- putting a dummy character in the bottom-middle of the screen, with the appropriate walkable area (which could be : no WA at all, or with a 50% scaling -- in this thought experiment i'm not sure what would work, i'd need to try)
- setting the view/loop/frame of that character to point to the dynamic sprite i mentionned earlier

...wouldn't i get high-resolution graphics in my low-res game? Now imagine that this would be a window of text or something that's better in high resolution (like a console or anything required in some special debug mode). Wouldn't that work?

In (i.e. patch 4) :

Code: Adventure Game Studio
  1. AudioClip* ac;
  2. ac.
When you do this and stop at the dot, you receive suggestions for AudioClip members, including "ID" which is not a member of AudioClip (only AudioChannel)
If you try to force it and type "ID", then of course the compiler complains about it.

Editor Development / minor bug in the editor : undef
« on: 19 Sep 2017, 20:23 »
I'm using 3.4.0 patch 4 (if this is not the latest version, then please ignore)
The Editor throws an exception when I type the following keystroke into a script file : #.u.n.d.e.f.SPACE ( #undef followed by space bar)


I want to automatically run some script during the black screen inbetween fade out/fade in.
This script is long and complex and might freeze the screen half a sceond. That's why I want to do it at the exact moment when the player does expect the game to be unresponsive.
I want this script to run at EVERY room change, no matter what. So it should happen automatically.

therefore the question is : how do I automatically pick that up?

I've tried this but it seems to be triggered only after the end of the fade in (I suppose AGS doesn't happen player.Room until then?)

Code: Adventure Game Studio
  1. void room_Leave()
  2. {
  3.     Display("changed room");
  4. }
  6. int player_prevRoom=-1; //cheap trick to detect room leave
  7. void DetectRoomLeave()
  8. {
  9.     if (player_prevRoom<0)
  10.         player_prevRoom = player.Room;
  11.     if (player_prevRoom!=player.Room)
  12.         room_Leave();
  13.     player_prevRoom=player.Room;    
  14. }
  17. void repeatedly_execute_always()
  18. {
  19.     DetectRoomLeave();
  20. }

after posting this I'll be on my way investigating on_event and/or late_repeatedly_execute

Beginners' Technical Questions / fonts anti-aliasing
« on: 20 Jul 2017, 15:48 »
Since the AGS scripters dream team is currently in Iceland, I'm sure it will be super easy for them to find a few minutes to interrupt their current board game or outdoor sports activity to help AGSers in distress ;)

I'm currently rewriting the wiki about Fonts, and I'm confused regarding the fonts anti-aliasing.

If you know some answers, please answer each question as separately as possible
  • When you "use TTF fonts", does it mean: "use TTF fonts that were definitely rendered into pixel fonts at import time"? Or does AGS only render them in the Fonts pane but still secretely keeps the original TTF font for just-in-time rendering ?

  • Does AGS import the font with no anti-aliasing and then adds it at rendering time, in the engine?

  • How does anti-aliasing work in relation with outlines? I've tried to use a TTF font in a 640x480 game, enabled anti-aliasing in the game settings, and then enable "automatic outlineStyle" in the font. The result is terrible (the font gets totally screwed up because the outline also gets anti-aliased it seems, so it inserts transparent pixels randomly in the text)

  • In 2017, what is the added value of Calin Leafshade's SpriteFont Rendere plugin? ( here:  )

The AGS 3.4 patch 4 update mentions :
Fixed game compilation on systems which have Japanese ANSI or similar locale
as default locale for non-Unicode applications.

Does that have impacts in the game's Japanese fonts and/or Japanese translation? Or is it just a compilation thing? Is it possible to make a game in Japanese?

Hints & Tips / Terror of the vampire
« on: 13 Jul 2017, 13:28 »

Add spoiler tag for Hidden:
Inn's main room
   TALK TO Tavern Crone (exhaust all dialog options until "talk to" produces no effect)
   PSYCHO Tavern Crone
   TALK TO Innkeeper (exhaust all dialog options until "talk to" produces no effect)
   PSYCHO Innkeeper
   TALK TO Barman (exhaust all dialog options until "talk to" produces no effect)
   LOOK AT sign
   LOOK AT Certificate
   WALK TO Exit. (the one to the far right)
Inn's back room (with the fireplace)
   LOOK AT Throw rugs
   LOOK AT Vampire teeth trophy
   LOOK AT Giant Fang
   LOOK AT Hat
   TALK TO Vampire hunter (exhaust all dialog options until "talk to" produces no effect)
   PSYCHO Vampire hunter
   WALK TO Exit. (back to inn's main room)
Inn's main room
   TALK TO Barman : ask him about his son.
      "So your son's at university..."
      "But WHICH University?"
      Dialog ends
   WALK TO Exit. (the one that leads ouside the tavern) --> The barman starts revealing Byron's issues --> Ego walks upstairs
Upstairs (Byron's room)
   PICK UP Turnip
   TALK TO Byron (exhaust all dialog options until "talk to" produces no effect) --> It ends on you deciding to break the chains --> Byron tells you that when he pulls on the chain he ALMOST" manages to pull his ankle out
   WALK TO Exit (downstairs)
Inn's main room
   TALK TO Tavern Crone (exhaust all dialog options until "talk to" produces no effect) --> Now you know about the clock tower
   TALK TO Innkeeper. Ask "about your son..." --> now you know he doesn't want to talk about it
   TALK TO Barman. Ask everything about Byron "A word about your son..." "He's chained round the ankle". The dialog ends.
   TALK TO Barman again. Keep asking. "who brings him his food", etc.
   TALK TO BARMAN. Order food. --> You learn that the chef wants new ingredients
   WALK TO Exit. (kitchen exit, behind the barman)
   (try to give turnip to chef again and again and exhaust every dialog line until he accepts)
   GIVE Turnip to chef
   GIVE Turnip to chef
   GIVE Turnip to chef
   GIVE Turnip to chef
   GIVE Turnip to chef
   --> None of the arguments convinces him --> you learn that Ego thinks there might be a psychological lever that could work on the chef
   PSYCHO Chef
   TALK TO Chef : --> "<Alienst wisdom> ..." --> you receive GARLIC
   PICK UP Stick of lard
   PICK knife: --> you receive KNIFE and you receive MEAT TENDERIZER
   TALK TO Chef (exhaust all dialog options until "talk to" produces no effect)
   WALK TO Exit (go back to main tavern room)

Inn's main room
   WALK TO stairs
Upstairs (Byron's room)
   USE lard on byron --> funny misunderstanding. No effect
   USE lard on chain --> Byron escapes. --> The barman comes and orders you to leave the inn
   WALK TO Exit (tavern main room)
Inn's main room
   WALK TO exit (front door) --> Ego says he doesn't know where Byron flew away
   TALK TO Tavern Crone --> He tells you the barman went to the room in the back to talk with the vampire hunter
   WALK TO Exit (far right, vampire hunter's room)

Inn's back room (with the fireplace)
   (cutscene with discussion between barman and vampire killer)
   TALK TO vampire killer--> exhaust all lines about you wanting to save Byron-->killer eventually tells you that you need stake+garlic+silver cross
   exhaust all other dialog options
==== 1. GET THE STAKE =====

   WALK TO  Exit (to main room)
Inn's main room
   TALK TO Barman --> order food --> now you know you may order food --> he tells you to sit down
   USE stool --> the crone "warns" you --> now you know the seat is fragile
   USE Rotted stool (again) --> this time you sit down and get some soup --> The Innkeeper steals it --> you learn that the table can spin
   TALK TO Innkeeper --> tell him whatever dialog line is offered to you to make him get up --> he leaves the room
   USE table --> the table spins, the beer is now on the left side --> the innkeeper comes back and sits --> the seat collapses
   PICK UP stool leg (under lying innkeeper) --> you get a stool leg
   USE blunt knife on stool leg --> you get a woode, stake
   WALK TO Exit (far right, vampire killer room)
==== 2. GET THE SILVER CROSS =====

Inn's back room (with the fireplace)
   USE craniometer on silver cross (in the fireplace) --> you lose craniometer, you receive silver cross
==== 3. GET THE GARLIC =====

If you have followed previous steps, you already have it.

Inn's back room (with the fireplace)
   GIVE garlic to vampire hunter
   GIVE stake to vampire hunter
   GIVE silver cross to vampire hunter --> vampire killer wants you to cool it down first
   USE cross on ale tankard (and not the opposite! it doesn't work the other way around)
   GIVE silver cross to vampire killer --> she tells you Byron is in the click tower
   WALK TO Exit (back to main room)
   TALK TO Chef --> he tells you that he wants you to bring back Byron so that he can explore recipes specially created for vampires
   WALK TO Exit (main door, to the outside)
   the stairs up have collapsed
   USE cog (climb up) --> Ego says he needs a way to climb without get his hands stuck into the cogs
   USe knife on cogs --> the knife gets crushed to no effect
   USE stake on cogs --> this time the cogs slow down
   USE cogs (climb up) --< you climb up

==== MIDDLE OF THE TOWER (lower part) ====

   keep climbing up
   when you reach a certain height, the screen quickly scrolls up (with an new button appearing on the left of the screen: an arrow pointing downwards)
   click on the arrow. That brings you back just where you were before --  at the top of the "low" section of the climing.
   climb down, but this time to the left instead of where you came from
   USE lever : Ego says "I can't see its immediate use"
   MOVE lever : Ego pulls it down.
   go up, now.
==== MIDDLE OF THE TOWER (upper  part) ====
   USE pole --> Ego climbs up
   USE chain --> Ego won't do it with his bare hands
   USE cross on chain --> he says he needs a more strudy string
   USE garlic on chain
   USE ladder
==== TOP OF THE TOWER ====

   walk to Byron --> Ego walks half way but stops because of the noise
   LOOK AT yoke --> yup, defnitely what we need to break down.
   USE meat tenderiser on yoke --> can't reach it
   USE beam (climb) --> it's too high up!
   PICK UP ladder
   USe ladder on beam
   USE ladder (climb)
   USE meat enderizer on yoke --> Ego says he'd rather have some sort of screwdriver
   USE definitely blunt knife on yoker --> it's broken and useless
   USE crucifix on yoke --> almost thin enough
   USE meat tenderizer on crucifix --> Ego says the metal is not soft enough
   USE lighter on crucifix --> the crucifix is now hot
   USE meat tenderiser on crucifix --> the end is flattened
   USE crucifix on yoke

   TALK TO byron --> exhaust all dialog options
   PSYCHO byron --> not working
   PSYCHO Byron again ("judge") --> still not working
   PSYCHO Byron again ("alienate") --> still not working
   PSYCHO Byron again ("listen") --> when you have the oppotunity to talk, say "Please go on..." (keep listening)

I'm so confused: I've been using this logging technique for several projects already and usually I have no issues.
I'm sure it's not even a problem with AGS or Windows' location of personal app data. I'm sure it's just be being blind and stupid.

Code: Adventure Game Studio
  2. String fName;
  4. static void Console::ResetLog(String name)
  5. {
  6.     //overwrite the existing file and write something into it to give it a physical existence, then close it.
  7.     fName = name;
  8.     File* f = File.Open(fName, eFileWrite);
  9.     f.WriteRawLine("");
  10.     f.Close();
  11. }
  13. static void Console::W2(String s)
  14. {
  15.     //I'm doing this (open, append, close) to ensure that each output is actually flushed to the file in case the game crashes.
  16.     // It's a very reliant technique.
  17.     File* f = File.Open(fName, eFileAppend);
  18.     f.WriteRawLine(s);
  19.     f.Close();
  20. }
  22. void game_start()
  23. {
  24.     Console.ResetLog("SelfGenLog.txt");
  25. }

During the game I write many things to the logs. I set a breakpoint inside Console::W2 and it actually goes through there.
And yet I can't find "SelfGenLog.txt". What am I missing?

Hints & Tips / Chronicle of Innsmouth
« on: 17 May 2017, 13:26 »
hi all!

following the tradition I'm opening a thread for hints on this great game. I mean it, it's a nice game full of good ideas. Compact dialogs that manage to tell the player a lot, excellent atmosphere, etc.

Anyways. Asking for a tip:

when searching the room in the flashback
Add spoiler tag for Hidden:
Searching the room for letters. I've found 3 letters :
Add spoiler tag for Hidden:
One in a drawer, one under the candle, one in the bed...
...where's the 4th one? Nothing in the wardrobe I believe?
Maybe I missed a clickable area OR I didn't use the right verb. I feel like I've tried top open/close/use/pick up/pull/push pretty much everything in the room.
Add spoiler tag for Hidden:
DAMMIT I've tried to pick up / open/ pull bible... all I had to do was "look at"

General Discussion / Thimbleweed Park help line
« on: 26 Apr 2017, 19:10 »
Hi all,

if you're stuck in solving the game, you can ask, I'll try to give hints without spoiling.

I'm stuck myself in the forrest
Add spoiler tag for Hidden:
I'm stuck with reaching the pizza van after finding it
Add spoiler tag for Hidden:
the code I enter doesn't work
Add spoiler tag for Hidden:
When I enter the code found on the pizza flyer into the keypad of the electric fence, it still triggers the alarm???

Let's imagine for a second that I branched from the AGS engine, and let's imagine that I manage to make heads or tails of the interpreter's memory management.  :-D

If we decide that there was no good reason for a managed struct to store a dynamic array, and if we go further along those lines and allow to store an array into another array, then... what should be the syntax?
Code: Adventure Game Studio
  1. int array[] = new int[100];
  2. int* arrayOfArrays[] = new int*[10]; //this?
  3. arrayOfArrays[0] = array;
  4. int* arrayPointer = array; //this?

Also, as you know, C++ can manage pointers and references. The two are very similar but have some differences (I won't detail here). A long time ago, Chris Jones has made the choice of making referencing go down the "pointers" road instead of the "references" road (except in some very specific cases). I suppose that felt more natural for something that spawned from C then C++.
However, if I implemented references, how woud you picture it? Would there be some syntax traps caused by AGS' C-like-but-not-completely syntax?
Actually maybe it's already there. I never ever try to pass structs (managed or unmanaged) as parameters to functions, except for built-in ones. I have no clue.

It's just a question :
-If I branch away from the project and open it with a Visual Studio version more recent than the files in the repository, ...
... i'll have to commit all my changes, including the automated update to the solution and project files (.sln, .csproj...) made by visual Studio at the time I opened them.

Should I commit that? If not, how should I handle it?

Pages: [1] 2 3 ... 15