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

Messages - Monsieur OUXX

#1741
Snarky got it right once again!
I'd like to add some details. Humaldo, I guarantee you that 99.9% of the time AGS works as expected.

But there is something that is hard to understand in AGS: the order in which scripts are executed. It's hard to understand not because it's complicated, but instead because it seems so simple, that most AGS scripters overlook the details, and then sometimes get confused. You could say it's not hard but it's subtle.

The most important thing to understand in AGS is that it's basically split in two : 1) all the things that are done by the inner engine at each game cycle, and 2) all the things that are done by your custom scripts.
Most of the time, what you do in your script will take effect (at least visually, on-screen) during the next game cycle. For example, everything you do in repeatedly_execute. But there are other things that are meant to be executed immediately, no matter what. They're meant to say "fuck you I'm not waiting" to the internal AGS engine. That's the kind of scripting that you would put into "repeatedly_execute_always". And because that second category of scripts is so blocking, then it's forbidden to put blocking functions in them (Wait(); Display(); etc.)

Where am I getting at? You should imagine that all the scripting in AGS is a big heap of instructions to execute. AGS takes them from the heap in the same order as you put them, and sometimes interrupts that task to execute its internal code, once at the beginning of each game loop. Some of your scripting goes at the top of the heap, that's what happens with regular, non-blocking instructions. But there is a handful of other "special" instructions that will take effect later, at the next game cycle, because they have the courtesy of letting AGS do its stuff inbetween. The trouble is : when the game cycle is over, AGS will not "resume" the interrupted scripts during the next game cycle. They're gone.

That's precisely what happens with "CallRoomScript". You're telling AGS "don't do it now, but remember to call on_call at the next game cycle". Therefore you cannot base your thinking on the values of the variables of the current game loop. They will probably have changed during the same game loop.

(For the record I got that from the help article) :
Quote
The function doesn't get called immediately; instead, the engine will run it in due course, probably during the next game loop, so you can't use any values set by it immediately.

Once the on_call function has executed (or not if there isn't one), the game.roomscript_finished variable will be set to 1, so you can check for that in your repeatedly_execute script if you need to do something afterwards.
That's probably what happens in your case. You get mixed up between the game loops and the variables change values inbetween. And that's probably why Snarky's solution fixes the issue : you're piling up too many queued instructions (Dialogs are a whole world of their own), so it's better to call CallRoomScript only after you're sure the dialog is over. By the way CallRoomScript does not "exit" the dialog. It just piles up more things to do inside the dialog. If you're lucky they will unpile in the order you thought was to be expected. If you're unlucky something else within the dialog interrupts the game loop, hence skipping to the next game loop, and your CallRoomScript does not get called at all or causes trouble.

Conclusion: whenever you write some script in AGS, always ask yourself:
- Is it meant to be executed right now and block everything? (which means the game cannot continue until this script and all the script it calls are completely finished)
  OR
- Is is meant to be executed right now and forbidden to block anything? (which means, for example if you put a Wait inside, that the execution of this script might potentially be split over several game loops -- thus allowing the internal game engine to update the display and such, but not to run some of your other custom scripts. Your own local variables will keep their values, but all graphic variables such as player.x, etc. might change during the execution of that script)
  OR
- Is it meant to be run later? (the engine will remember to do it at next game cycle, but then you cannot rely on any of your own variables since they might change inbetween).

#1742
The Rumpus Room / emo kawai guybrush
Tue 09/12/2014 23:47:23
I found that image randomly and I thought I should share.

#1743
Nice. It would be better if the limit between dark green and light green was curved instead of a straight line, but, oh well, that's much better anyway.

Drawing tip: don't use black for the outline of a luminous object. The lamp's outline would probably look better in white.

optional: You could add a very simple foreground (just some black plus one color for the outline) to make the floor look less big and empty.
#1744
Quote from: Gurok on Sun 07/12/2014 11:42:25
It's that guy from the smileys!

For those who are "new" to the community, "this guy", is Larry Vales! The main character of one of the first AGS games ever. And also a colorful character, if I may be so bold as to compare him to, let's say, an OSD ancestor ;)
#1747
Quote from: I<3Pindorama! on Tue 09/12/2014 04:35:27
my "ugly duckling art" in the same lake with beautiful swans
It's not uncommon that voters pick backgrounds for their originality and cleverness rather than just their looks. So keep it up! That's the spirit! :)
#1748
Quote from: adventuress on Mon 08/12/2014 03:17:36
I couldn't sleep, so I pixelt

Hey very nice old-school dithering and use of limited colors! I feel like I'm watching an Amiga demo! <3
#1749
Sorry to hear that adventuress!

And now I'm posting my progress -- not to show off, but only because I'm happy I managed to overcome the frustration of having lost hours of work. I'm back on track!

(STILL A WIP)
[imgzoom]https://33.media.tumblr.com/f77ae367efe42ad01d5c2e8b65325e88/tumblr_ng8pfkwjbH1tsfksfo1_1280.png[/imgzoom]

EDIT: Pindorama, I never got to thank you for the song :D That's a nice song.
#1750
Quote from: Shane 'ProgZmax' Stevens on Sun 23/11/2014 23:26:12
With the size of the sprite you can really use color to show some details.  What I did here was use different shades to highlight things I want to draw attention to.
1.  His brow and cheekbones.  This helps to make the rest of his face look clean for the viewer.
2.  I made the stubble a shade of gray so it stands apart from his face without being so dark that it looks like a beard.
3.  Bent him back a bit so his pose looks a little more dynamic and adjusted his arms.
4.  Shaded the arms and legs a bit more to show shadows and highlights better.
You might hate it or you might like it.  If you like it, great :).

Wow ProgZmax, I hadn't seen your post!
That's just great.  We had no sprite, and now we end up with several excellent sprites ;-D
the only question now is : How the hell are we going to produce sprites of equal quality for the rest of the game??? ;)
Thanks a lot to all of you. Lots of work for me now!
#1751
Also some general advice on shading depending on the position of the lamp. If the lamp is close to the back, then yes, keep that almost-white halo around it. Otherwise, drop it. And in both cases, the wood inside the right-hand-side door should be much darker..

[imgzoom]https://31.media.tumblr.com/c7f0ce653bd0744f25d32288fc3008ba/tumblr_ng7wfw5zAz1tsfksfo1_1280.png[/imgzoom]
#1752
I don't think you should keep those concentric circles of light around the lamp. You used a simple shading (with dithering) for the carpet, so you should do the same for the wall. Just two colors (light gray + dark gray) with a bit of dithering inbetween would be more consistent.
For the rest, yes, maybe adding a bit of perspective to the carpet's texture would be good. But not absolutely necessary; the drawing style is a bit naive, as in Maniac Mansion. So try to make the best of it without cluttering it too much. Consistency wil be thekey here.
#1753
Very, very nice. Good work on colors.

Make sure you save pixel-art as .png files, though. Jpeg is terrible for that kind of stuff.

Don't hesitate to rework a few pixels here and there after downscaling, to make the art look crispier. Two examples: 1) the palm leaves in the first picture: some of them are very sharp and almost black, some of them are very smooth and almost transparent. 2) The mountain's outline in the top-left corner of the second image : Toom uch antialisaing imo.

In the second image, the horizon line (the line where the sky meets the sea) seems to be exactly in the same place as where the cliff meets the water. That's not correct, the horizon line should always be higher.
#1754
Also seems to work for me now. Huzzah!
#1755
Quote from: Crimson Wizard on Thu 13/11/2014 13:58:38
I fixed the crash; the other bug I mentioned is still there, and I am looking into fixing it.
You rulez.
#1756
Quote from: Cassiebsg on Sun 07/12/2014 13:41:38
Okay, here's my WIP after 2 hours work. :)

Excellent! Keep it coming!
#1757
Quote from: Snarky on Sun 07/12/2014 12:48:05
1. Hmmm... Probably.
2. Probably not.
3. No, I'm pretty sure there isn't.
4. How do you mean?

I agree with 80% of what was said by Snarky. But depending on what you're trying to achieve, the same answers could be more optimistic :

1. Custom dialog system: Start off with a custom dialogs module (e.g.this one, or that one, or that one). Then I'm sure you can easily twaek it to make it behave or even just look like you want.
2. Isometric maps : Snarky is right when he says that you'll only get an image and that you still need to set up the walkable areas and walkbehinds manually. But that's no big deal, many people have done that, it's actually quicker than scripting a whole isometric-game engine. The only deal-breaker is if your image is huge, it could slow down your game a lot.
3. Chat mapper : I don't know what specific feature of Chat Mapper you need. If you really need to design super complex dialogs, then no, there is nothing like that in AGS. If you just need some basic branched-dialogs system, then use Dialog Designer like Snarky suggested.
4. Git: Just like Snarky said : You can easily source-control all the scripts, including the rooms scripts. But you cannot source-control global things like sprites.
- If you're working on your own and just want to use source-control as some sort of backup device, then do it.
- If you're working as a team, then you'll be fine as long as you create all the global objects first, and only then make the team members work on them (separately) and source-control them. You cannot source control anything that's stored in the main .agf file.
#1758
Quote from: tzachs on Sat 06/12/2014 02:45:38
Ooh, neat trick! This can work nicely as a plugin:(...)

I was intending on doing it as an Editor plugin but it turned out I'm too lazy for that ;)
#1759
Still a better story than "Go North" :
Spoiler

Quote from: Mandle on Sat 06/12/2014 22:58:52
I don't think that should be possible. Are you absolutely sure that this is what happened?
Yes I'm sure: the files had different names, were in different folders, and were opened in different programs that do not even know of the other program's file type. It's positively impossible that I did a "Save As" in AGS and overwrote the PSD file, since AGS wouldn't even display the file in the "Save As" window. And I didn't do a "Save As" anyway.
If the .agf data inside the PSD file was complete, I could believe in a human mistake, but the fact that the file is incomplete definitely proves that something went wrong at software/hardware level.
I suspect it has to do with the cached writing onto the USB drives. You know how it works: the OS stores data and then the OS flushes it all when the right time comes. If some USB driver (at OS level) crashed, then maybe the file handlers got mixed up or something. I recall my USB mouse driver crashing approximately at the same time the issue happened.
[close]
#1760
Quote from: Radiant on Sun 07/12/2014 10:17:29
Well, the Leisure Suit Larry reboot was also an action game, and that one turned out fine...

...wait :shocked:

Well if this one is the Heart-of-Darkness kind (with a proper length, that is) it could be cool. Not very King's Quest, though.
SMF spam blocked by CleanTalk