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 ... 16
Adventure Related Talk & Chat / AGS like a pro!
« on: 17 Aug 2018, 18:05 »

In the same spirit as "AGS commercial boot camp" or other threads, here is the "AGS like a pro" video series.

You can find it here on Youtube : Playlist

First episode:

Full playlist :
01 intro
02 online storage
03 conflicts
04 git
05 git 2
06 git 3

EDIT: (that's frustrating, lately I find the solution to my problems the exact second after I post and it's too late to take it back)
Solved: array inventory does not exist until you create at least one inventory item in the editor.

Add spoiler tag for Hidden:
Um, that's embarrassing for me: how do you do inventory[id] in the latest AGS? I can't find array inventory anywhere. I tried the help, I tried player.inventory, game.inventory...

EDIT: my bad. It's caused by right-to-left resolution of parameters. There's absolutely no bug here.

Add spoiler tag for Hidden:
You can reproduce this bug like this :

(in AGS aka 3.4.1 Patch 2)
1) Create a module
2) Create code as follows :
Code: Adventure Game Studio
  1. int val = 0;
  2. int GetValue(String name)
  3. {
  4.     val++;
  5.     Display("value returned for %s is : %d", name, val-1);
  6.     return val-1;
  7. }
  8. void PassParams(int a, int b)
  9. {
  10.     Display("a=%d, b=%d", a, b);
  11. }
  13. void repeatedly_execute()
  14. {
  15.    PassParams(GetValue("a"), GetValue("b"));
  16. }

This produces following result on-screen :
Code: Adventure Game Studio
  1. Value returned for a is : 1 //EDIT : In my own code I didn't add the "for a" and "for b" bits. that made me realize that everything works as expected.
  2. Value returned for b is : 0
  3. a=1, b=0

a and b are reverted!

I suspect (total shot in the dark) it's caused by the way symbols are managed in the list of function parameters. There are two parameters called "GetValue" (same name) so, regardless of their individual value computation, maybe they're stored in an unordered fashion that causes AGS to fail restituting the computed values in the correct parameter slots?

EDIT: forgot the option "export all sprites in folder"

AGS (that is 3.4.1 patch 2)

I have that GUI that I've made clickable. Inside a module, I have on_mouse_click and on_event.

Turns out on_mouse_click does detect the mouse wheel being "clicked" but not the regular left click.
For that, I have to resort to on_event (but then I don't know which button was clicked).

Is it still the aftermath of interface_click having been made obsolete? What's the proper of doing it?


- Download the following game project :
- Open it with the (slightly outdated) 3.4.1 - patch 2 (that's
- compile the game. The compiler raises no error
- put a breakpoint on lines 1685 and 1715 in VerbGui.asc.
- Run the game.
- single-click anywhere in the room (once). the character starts walking there. Then double-click on the door to the holodeck (south of the screen). This triggers a breakpoint on line 1685.
- Press F5. You never reach line 1715.

This proves that the game crashes on line 1685.

Now, for the strange part : location_id is declared nowhere.
There used to be a line "int location_id;" in this file, but the variable has been moved to a struct and you'd need to do verbsData.location_id to access that value. Proof : just above the line that causes the crash, add "location_id = 0;". The compiler will reject it.
This seems to prove that the compiler lets through this non-existing variable in some specific conditions.

Here is the scenario that I suspect :
1. the compiler lets through a non-existing variable for some absurd synctactical reason (maybe because it's in brackets : hotspot[location_id] )
2. then at runtime, the mistake is still not caught when resolving hotspot[location_id] --> that returns a bullshit pointer
3. this faulty resolution is passed as some sort of faulty this* parameter to RunInteraction(this*, ...).
4. the faulty this* makes the game crash when RunInteraction tries to propagate it as a on_mouse_click.
(but that's just my two cents. I'm just trying to understand how a non-existing variable is caught only at runtime and in some events-related built-in function)
Could it also be some sort of compiler cache issue? (I mean : does the fact that there was an int location_id previously in the code potentially play a role?)

Let's not try to make this a secret : I'm designing the "main" puzzle for a Fate-of-Atlantis-like full-length Indiana Jones game.
By "main puzzle", I mean the stones puzzle: earth stone, moon stone, sun stone.

In Fate of Atlantis, the puzzle is roughly as follows :
Add spoiler tag for Hidden:
1) At 25% into the game, the player acquires the manual to this puzzle before the puzzle. The instructions are (moderately) hidden in plain sight in the Lost dialog of Plato.
2) At 47% into the game, te player acquires the first stone, which also makes it for a dumbed down version of the puzzle
3) At 64% into the game, the player needs to use two stones
4) At 75% into the game, the player needs to use 3 stones.
5) In the last 25%, the player will need to re-enact the puzzle once more, this time reverted
6) In the last 3% of the game, the player wil need to do the puzzle one last time, except this time the instructions are not inside the manual, but instead een in the background of one room (if the layter pays enough attention)

The objects count is : 3
the objects shape is : discs
The objects name is : "stones"
The objects theme is : earth, sun, moon

Now for my own game I've come here so far :
- In this game, at 3 key moments, Indy will encounter a large contraption (stone of metal machinery)
- the first one will be very primitive (might be a simple large fresco on a wall) while the last one will be huge (the size of a building) and controlled from a central, human-sized panel (but still preferably big)
- just like in FoA, the first one will be a dumbed down version, the last one will be the witty version
- the machinery relies on CONSTELLATIONS. the idea is that the player must "connect" or "dial" one or several constellations. (preferably one). If he manages to do so, the puzzle is won.
- the machine has to be powered up beforehand, but I've got that part covered.

My requirements are :
- There must be some mystical mystery (the objects are not everyday objects. There's loaded with an aura of magic or legend). Think : "cross of coronado", "headpiece of the staff of Ra", "earth/sun/moon stone". Of course there's also a non-mystical object always coming along (the journal of the Grail) but that one I've already taken care of separately. That object will also play the role of the Lost Dialog.
- It must not be a copy of the sun/earth/moon stone. That's a very tricky part :
    - because of the shape - It's always either a disc or a sphere that comes to mind,
    - because of the number : and it's very easy to end up having 3 of them. Yuck.
    => I was thinking of either a rope/thread/gold string, OR an arrow/lightning bolt/pointy stick OR a staff/set of tall cylinders OR a plain spherical stone with carvings on it.
- There's a twist coming from the fact that the player will not always be on the same hemisphere, therefore the sky will not always have the same constellations. The twist within that twist is that the constellations don't use the same stars depending on the cultures. Therefore the player must recognize a handful of "key" stars rather that the so-called constellations. For the first occurrence of the puzzle, though, happening in North hemisphere, we'll start with our well-known Zodiac constellations, drawn as-is.

So, with all that, the question I'm trying to sort out is : how does the player perform that "connection" to the constellation(s) in a fun and tricky way?

I've had a few ideas :
- the simplest version that immediately comes to mind is : paint all the constellations on the fresco, and have the player point some sort of cursor towards the right one. But that's not good for two reasons: 1) It cannot be "complexified" later on in the two subsequent occurrences of the puzzle, and 2) the player can simply win by trying all the constellations one by one.
- for the intermediate versions : Since the player won't always be in the same hemisphere, i thought that at some point I might have a map of the entire sky (South+North hemisphere projected onto a flat map) and he must "draw a line" or half circle that represents the horizon line. That would tell us exactly how the player would see the sky if he was physically present at that location on Earth. Somehow, choosing the two (or more) constellations located low on the horizon (and defining the horizon curved line) could be the puzzle? And the constellaiton he must dial is the one at the center of the circle? But now that makes me stuck with a half circle or full circle, which is not an easily transportable object like the earth/sun/moon stones. Hence my idea of a thread, but... Meh.
- In the last occurrence of the puzzle, he will have to pinpoint the stars he wants to include in the targetted constellation, and "draw" te constellation. That's not hard, but the difficulty will come from somehwere else -- I've got that convered.

So anyways as you can see I've got this puzzle stuck half way.
Anything that would create a sense of "opening gates through time and space" is welcome. At some point I was considering also including osme sort of dial to choose a year (since there's a connection between the PLACE where you are when you look at the sky, the TIME at which you do that, and the POSITION of the stars in the sky when you do that). Choosing the yea and the position of the stars could reveal a place on earth, or something like that. But these three variables could create some cool puzzle but it makes the puzzle overly complicated.

I'm not happy with the fact that I can't decide if the puzzle should be solved based solely on KNOWLEDGE (which constellation to dial) or if some OBJECT(S) are required too (like the 3 stones in FoA). I'm terrified to create yet another one of those puzzles where you need "the three legendary pieces of whatnot" or "the seven pieces of the broken whetever".

What do you think?

I'm currently analyzing in-depth what makes Fate of Atlantis so thrilling to play.
It relies on a few things that most wouldn't notice unless they pinned them down meticulously, but are essential.
Add spoiler tag for Hidden:
Non-exhaustive list of technical tricks :
- Immediately starts with exciting credits ("Indiana Jones" written in large letters, fanfare music, Indy enters screen swinging from his whip)
- Immediately starts with a small, dumbed-down adventure (simply left-click on random stuff during intro). It's action-packed because Indy keeps falling (physical, non-point'n'click action) --> after that you can make the game as much of a walking simulator as you want, the player stays under the impression that the character can do offroad physical stuff.
- Immediate mystery (mysterious small statue)
- Physical threat (Kerner points gun + fistfight)
- CHARACTERS GET INTRODUCED : you see a close-up of Indy, Sophia, and Kerner's faces in the first 5 minutes ,and later on you see Ubermann's face)

And that's only the extended intro.
Later on, more stuff is packed in the first 20 minutes :
- Supernatural threat : Sophia's neckclace shines and shows ghost
- Feeling of exploring: Sophia sets the McGuffin for you and sets several places in the world to be explored (even though they're just one-room or two-rooms locations)

Additionally to that, the "parallel" puzzles are not as parralel as they seem, and yet the player feels like he/she can travel around. The backgrounds or the 3 paths (wits path, fists path and team path) are mostly recycling the same backgrounds very cleverly.
All of that to say : I'm struggling to pack that amount of information and thrill in the first 5 minutes of our game, while keeping it to only a handful of backgrounds, and I'm having trouble "breaking" our current script to make it possible for the player to come and go between places, instead of being stuck in 100% linear "corridors" (they go in, but they can only go out when you're finished with that set of rooms).

I need advice on all that. I'm worried that this community (AGS community) might not have the expertise on these story-development questions in full-length games; there are a few geniuses or pros in the forums who are able to produce such elements by following their intuition/guts/experience, but they're busy with their own games.
Alternatively, I'm sure that some writers or screenwriters forum would be packed with people who understand the issue, but then they would not understand the point-n-click side of it.

Would you have a community to recommend where there would be people focusing primarily on the story writing, but who can understand the point-n-click aspects (parallel puzzles and such)?
I've considered joining communities of text-based adventures (e.g. the community of "Quest" -- the editor for text-based adventure).
Any advice?

EDIT: as expected it was a ridiculous copy and paste mistake

The Rumpus Room / CJ is not Jesus
« on: 11 May 2018, 11:13 »
I was searching for an old thread in Google and I found this gem.

So I'm reposting so that all of you can enjoy this old thread on all its glorious insanity.

The best part imho :
I'm going to be perfectly honest.
Your views on everything annoy me. (...)
So in conclusion, I don't like you at all, and even though I never actually used the CJ JC thing.... from now on, I'm going to start. Just for you. Just because it shows disrespect for you in a special way that I never knew existed before.

Oh, the AGS community knew how to have fun, back in the day.


So I thought we could make use of modern technology to cast light on that diffiult question, just like Gilbert did in the thread back then.
It turns out that the answer is more cryptic than I expected. what do the Norwegians theologians know that we don't know?

How about we start allowing games with MonoAGS (AGS 5) in every forum tat would normally only allow pure AGS games?

I'm lookin at you, MAGS.

If people started making small games using the new engine, it would:
- be an incentive to use it
- it would slowly make some people acquire some knowledge about it. They would start being able to answer questions in the Technical forum and such. Buildibng the knowledge base, y'know.
- the best way for the community to acknowledge its existence and slowly adopt it is to talk about it, and actually see it here and there. The good ol' visbility concept.

I intend on trying to develop a tiny game with monoAGS.
This will be a test run to assert by myself how mature and/or easy-to-use it is. I will post my progress here.
If I succeed, I will try to convert a medium-size AGS game into MonoAGS. again, I will post my progress here.

This sort-of blog is meant to deliver tips to anyone trying to do the same, and maybe be an incentive to start something.

If you wonder why I'm posting this on the AGS forums, then please read this thread and all the other threads about the same topic.

Edit by cat:
MonoAGS Repository
MonoAGS Documentation

EDIT 2 :
Things to add in the "get started" wiki:
- if you can't build an Android project, it means you might need to install Xamarin (read more in the posts below)
- if you can't build any of the other projects, try these :
    1) make sure you have .Net Core installed (see posts below for links and version). To do so :
       - Open the Windows Command Prompt
       - type this and press return :
         dotnet --info
       - if you get an error message: then it means dotnet core is not installed. Otherwise you get the exact version currently installed.
    OR, if it still doesn't work:
    2) try to delete global.json and then rebuild the solution. This should specifically solve the error "The current .NET SDK does not support targeting .NET Standard 2.0. ..."
- If the solution builds fine but the project won't start, check if you have a message similar to "you cna't trun that type of project". If so, right-click on the actual game project in the solution (asopposed to the other projects : shared libraries and whatnot) and select "Set as Startup Project".
EDIT 3 : those comments are now included in the FAQ :

Critics' Lounge / Character in mountain clothes
« on: 10 Apr 2018, 23:26 »
Release candidate.

- the backpack makes zero sense in terms of size and straps. But at least it makes the sprite more acceptable to the player's eye.
- The character's face in the front cycle is too narrow.

Links to Photoshop source files :

Meet this guy (on the right). He's a Tibetan mountain guide from 1940.
You can consider that he's the same kind of guy who assist the nazi interrogator in Marion's bar fight scene in Raiders of the Lost Ark.

This is a concept art. It's not even finished, there are holes in the body and the backpack is a rough draft. But you get the idea.


Concept :
- his backpack is huge. Like sherpas.
- he's a cowardish villain.
- Some reference for the clothing :

Critics :
 - I'm not sure about the scale. I don't like that he seems slightly bigger (both by face and by body) than Indy.
 - I didn't design the color scheme. For now I've just copied the scheme of the other character on the left. But I don't really know in which direction I should go.

If you feel like painting over the face then suit yourself.
For the body, don't make the backpack overly complicated please, as his walkcycle will be animated.


Critics' Lounge / Indiana Jones side walk
« on: 29 Jan 2018, 22:10 »
This post is about the side walk, not the two other views (any paintover of those views will be ignored)

Known defects:
- shading is a bit dirty
- bad contrast in hat
- walking character one pixel too short in frame where he is standing up
- there is a weird gray pixel under his chin.


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.

Pages: [1] 2 3 ... 16