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 - GarageGothic

#1301
The Dig, as well as later SCUMM games like Full Throttle and Curse of Monkey Island, uses LucasArts own proprietary movie format called SMUSH (with the file extension .SAN). The ScummVM Tools contains a program that lets you compress .SAN files yourself - though you probably wouldn't have much use for them.
#1302
You could also just increment the x and y values of SetViewport(x,y) when pressing the arrow keys (of course checking not go beyond the width and height of the room minus the viewport width/height, nor to allow negative values).
#1303
For those who thought Paul Thomas Anderson's movie didn't live up to the promise of its title:

#1304
I think it would work great as a scrolling background used in the introduction - display title and credits over the starry sky and then pan down for the establishing shot of the house (assuming the first scene of the game takes place there).
#1305
Lovely work, Snake. I think the high contrast lighting works really well with your nighttime scenery. Just be careful with using too bright values for the highlights of darker areas - the low resolution make those pixels appear very rough. I think the trashcan would benefit from using one of the darker gray colors from the house rather than pure white. Even if it's very reflective there must be some amount of light falloff over the distance from the lamp. 
#1306
Thanks for the link. This is very interesting reading indeed - especially seeing the flowcharts of puzzle structure was inspiring after following creatorlars' thread about mind maps
#1307
And the horrible, looping, action movie style music they play on CNN while presenting the results is driving me nuts.

Edit: WTF? "CNN's Jessica Yellin via hologram"? Since when does badly done bluescreen work paired with motion synced cameras constitute a hologram? I wonder how many millions they wasted on this embarrassing gimmick.

Edit 2: Obama is projected the winner! Excellent, the world isn't entirely going to hell in a handbasket after all. Now, bedtime.
#1308
I'd say rescan them and color them at a higher resolution before resizing. If you want to preserve the pencil linework, keep it as a separate "multiply" layer on top of everything else. Then you can always play around with its transparency setting or try removing it altogether after filling in the colors.

I really like your drawing, your work on the tree, trashcan and garden path in particular.
#1309
Quote from: Pumaman on Fri 31/10/2008 14:01:40So the case you describe shouldn't be a problem. "if (value < 0.0)" should never return true for a positive number.

Excellent news, thank you very much for the explanation.
#1310
Quote from: Pumaman on Fri 31/10/2008 12:18:52Some sort of Maths.Abs function is certainly a possibility for a future version of AGS, but as it's so easy to do by hand it's not a priority.

Could you please confirm if there is a chance that float rounding issues could make "if (value < 0.0)" return true for a positive float? 
#1311
Quote from: goldensox on Tue 28/10/2008 17:09:26please talk as if you were talking with a guy that knows NOTHING about coding.

I suggest you work your way through the tutorials in the manual and wait with the menu screen until you have a better grasp of how AGS scripting works.
#1312
From the article Darth linked to:

QuoteIt was to end, authorities said, with the two suspects â€" dressed in white tuxedos and top hats â€" blasting guns from the windows of a speeding vehicle aimed at Obama.

Just... wow.
#1313
You can do the scrolling forest as a background (using SetViewport in the repeatedly_execute to scroll the screen - check the AGS demo to see how to make it loop). If the buttons are done as a GUI, they will stay stationary while the room scrolls. The window (as I understand it, you want the forest to be seen through the window) could either be a GUI with a transparent background, an Overlay or an Object - but in the latter case you would need to change its X coordinate to keep it centered while moving the Viewport around. (For the bobbing, just change the Y coordinate).
#1314
I wrote a conversation log module for my game (Twice actually. The original version used an external file but if the player restored an old game the same dialogs could be added multiple times. So when CJ implemented Strings with no character limit, I rewrote it to use those). The reason I haven't made it public is that it uses a custom Say function that parses the lines of dialog to the logging function. So to use the built-in dialog scripting you must have tons of dialog_request calls which isn't very practical. The same would be the case for your suggestion unless CJ eventually adds an on_character_say event (which I've suggested and it may happen now that he is reworking the dialog system).

Edit: As Snake said, you can also set the variable game.skip_speech_specific_key to for instance '.' like in the LucasArts games, to prevent the player from unintentionally skipping past dialog.
#1315
Like Dualnames, I also wrote my own AbsInt(int value) and AbsFloat(float value) utility functions. I don't really think people who can't work out to script something that simple will have much need for those functions. At least the stuff I use them for is pretty advanced (Bresenham's line drawing algorithm).
It seems to work fine, but I still worry that the rounding of float values could potentially cause problems - I use a simple "if (value < 0.0)" rather than the surefire square-root-of-the-squared-value approach, which I assumed would be more CPU intensive. So I agree, built-in functionality would be nice though not all that necessary.
#1316
Short and to the point perhaps, but I'm not sure it's correct. You code seems to compile fine for me, if only I change "OpponentDeck.ItemCount" to another value (such as Game.InventoryItemCount or 50). Dynamic arrays should work for all built in types, so it must cover InventoryItem* too. I'd suggest you look into your OpponentDeck code instead if you want to find the problem. It could be that you're trying to initialize a zero or negative sized array.

Edit: Most likely zero as I now realize your "deck" is in fact an inventory window - good idea.
#1317
Critics' Lounge / Re: Apartment Sketch
Wed 22/10/2008 21:40:57
I think you have a lovely drawing style and good sense of composition. If you could clean up the pencil sketch a bit (either with an eraser or in Photoshop - the former may actually be easier), you wouldn't need to ink or draw over the original drawing. Just make the original linework as a multiply layer and add color in layers below it. I think it would suit your style not to cover up or refine the sketchy quality of the scanned artwork.

I wrote a tutorial on a similar technique which can be found at the AGS Ezine website.

Good work on the value map, by the way. After hearing Loominous go on and on about it in the critics lounge I want to try it myself for my next background.
#1318
Quote from: ProgZmax on Fri 17/10/2008 21:34:27By setting the LightLevel of a Region you can effectively make a room lighter or darker without having to redraw it.

Huh? This tip seems a bit misleading. The LightLevel makes characters/objects appear lighter/darker, not the background. So you would still have to re-color your background or use TintScreen (which can't really be recommended due to the CPU load). Come to think of it, we should really have a module that uses DynamicSprite tinting to temporarily change the lighting of room backgrounds with a simple function call. Perhaps I could add that to my LightMap module.
#1319
Quote from: tolworthy on Tue 14/10/2008 08:04:27Does this mean AGS reads ahead and checks ALL code before the next "Wait()" before running any of it? (Otherwise you could only measure the length of a process as it was completed, so would not be able to warn users ahead of time)

I'm not sure I understand the question. Here's a simplified pseudo-code example of how I do it:

Code: ags

int points;

function CheckPoints() {
   if (points > 50) {
      Wait(1);
      points = 0;
      }
   }

function AddText(String text) {
    //do text drawing stuff
    points = points + 1;
    CheckPoints()
    }

function AddPictureWithCaption(int graphic, String caption) {
   //do picture drawing stuff
   points = points + 10;
   CheckPoints();
   }

function RenderWebpage(int pagenum) {
   if (pagenum == 1) {
      AddText("First text paragraph.");
      AddPictureWithCaption(40, "What a pretty picture");
      AddText("Second text paragraph.");
      //repeat until page is done 
      }
   else if (pagenum == 2) {
      //add content for page 2
      } 
   //and so on
   }
#1320
Quote from: tolworthy on Mon 13/10/2008 18:43:14That's what you think! :) That's the core story code at work, the heart of the whole project.  [...] when you click on anything the engine basically checks the entire story to find the appropriate response. And checks it up to nine times, for reasons that are too boring to go into. I'll need to spend time optimizing the code even more. Not looking forward to that. :)

Ah, I didn't realize it was this complex. Perhaps the game could provide some kind of response (audio, a pop-up icon, or the mouse cursor changing) to indicate that your interaction has been registered before running the CPU intensive functions? Also, you could add a few Wait(1) calls during the check to allow the game engine to proceed a loop and avoid the audio glitching.

I'll give you an example of something similar that I had to implement in my own hypertext module to avoid the music stuttering: I keep track of an int which is incremented by a certain number of points every time a more-or-less CPU heavy operation is called. For example, the function that writes text to the screen adds 1 point while the DynamicSprite-based "insert image with caption" function adds 10 points. At the end of each of these function calls, the total number of points is checked. If it is larger than a pre-set value,  for example 50, a Wait(1) will be called. This prevents the engine from freezing up, and while the player does have to wait half a second for the full page to load, the music is fluid, the cursor can be moved around smoothly and a small animated icon (like in a web browser) shows the player that the game is processing data. The maximum points value changes with the user's chosen detail setting, so those with fast machines will still see the page almost instantly.
SMF spam blocked by CleanTalk