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 - Monsieur OUXX

#221
Do you know the way they say "bad advertisement is better than no advertisement at all"? Well, Wadjet Eye benefits from that today, since its name now slowly becomes a familiar name in the video games news.
Proof is this article that talks about the bad experience they had with free keys for Blackwell -- I'd say it's excellent news, because I had never heard from them in a French paper magazine before, outside of a game's test. eventually, only the names "Wadjet Eye" and "Dave Gilbert" remain.

(note: this is translated from French, from Canard PC -- you could say it's the best (and almost only) French video games paper magazine: recently there was a big crisis in that sector, and almost all magazines collapsed simultaneously except for them. The others relied too much on ads, partnerships, and free goodies. Now, Canard PC (which was only getting 20% of its income from ads)  has pretty much the monopoly.)

======

"Wadjet Eye is a rather nice video games development and publishing company. First, they published Resonance, Primordia and Gemini Rue, that gave a lot of happiness to retro-pixels lovers -- and those people too deserve happiness. Then, since Wadjet Eye is really cool, they decided to give away to anyone one episode from the Blackwell, Deception saga, for Halloween. However in their generous exhilaration, they didn't foresee that malevolent people would seize the opportunity to get stacks of keys, in order to sell them once the discount is over. Consequence: big mess at Wadjet Eye, white hair grew on Dave Gilbert's head, who thinks it's a lot of work for not much, and people who would have legitimately benefited from the discount got really annoyed. Wadjet Eye had to cancel 30,000 suspicious keys, and in the end everybody is sad."


(also, in case Dave would read that: Don't mind the sarcastic tone -- that's what they do in that magazine, but that doesn't make you guys sound like losers at all).
#222
I'm considering ways of faking a font outline when a character speaks.
I was thinking of a solution that's not perfect but might do the trick : displaying 4 (or 8) times the text in black, with 1-pixel shift in every direction,, under the actual coloured text.

How would you do that?

I'm trying this :

1) I created a dummy character, cOutline1, with a transparent view (i.e. it can speak, but it has an invisible body)
2) Its speech color is bright green (for tests, to be sure I'll see it on my screen)
3) I tried the following script:
Code: ags

cOutline1.x = player.x; //test pixel offset
cOutline1.y = player.y-10; //test pixel offset
cOutline1.SayBackground(s);
player.Say(s);


Strangely, when I test, I don't see the .SayBackground sentence. I only see the .Say sentence.
What am I doing wrong?
#223
I just wrote that wiki page : http://www.adventuregamestudio.co.uk/wiki/Fonts

Please read it to check that it doesn't contain mistakes.
Then, I suggest to move this topic to "Modules and plugins". Yes, I know this is not a plugin. But this is a combination of guidelines to use the hottest fonts plugins of the moment. It can later on be linked from any other thread. Hence the suggestion.

#224
Hi everyone:

I tried importing that font into AGS 3.2.1 :  http://www.strazer.net/ags/nnscifnt.zip
Apparently it's an SCI font, and according to the readme it's 256-characters enabled.
Yet, AGS refuses to import it, with message "unexpected character".

Since I don't know zootch about fonts, I don't know where I took a wrong turn.
I can't edit it with Radiant's font editor, since (from what I understand) it's only for 128-characters fonts.

#225
There's something I don't understand about outlined fonts:

I have that sprites table here


It has a black outline. But in AGS, the fonts are stored in only two colors: black and white. Black is for the transparent background, and white is where the actual font color will be applied.
But then, how do I create my font to have both the black outline and the color inside?
#226
Hi everyone.

I'm ashamed in advance to ask such a stupid question, so please forgive me. But it feels like the "Fonts" topic has been around for such a long time (Radiant's editor = 2004!) that it seems to be taken for granted now -- and beginners like me don't know where to start.

I have a sprites table with all the characters of my font. It's a rather large (but still pixelly) and fancy font, not too easy to draw again pixel by pixel.

I've been searching how to turn that into an AGS Font, but I'm not too sure :
- Radiant's editor targets SCI fonts and already-existing TTF fonts.
- The more recent WFN font editor also allows to use TTF fonts.

But how do I do if I start from my sprites table? Once agian sorry if the answer is obvious but mys earches always lead me to Radiant's tool.

#227
Hi everyone,

This is not really for Critics Lounge, as it's more a general question about what makes a good semi-maze?
By "semi-maze", I mean typically what you'd find in a good Indiana-Jones nazi base: it's rather large and confusing, but all-in-all it's not really a maze. It's not design to make you get lost.

Discuss choice #1 and choice#2, with variations A and B.

========================================

Choice #1 : Monkey Island 2 style
READ CAREFULLY:
- there is no top-down view of the corridors
- each corridor section is a (smart) variation of a basic background
- the payer is able to navigate in the corridors without getting lost
    o Each background is easy to recognize,
    o Most of them have their own purpose,
    o The base is not too giant

That is what you see in the final scene of MI2 (even though, in that case, the corridor is straight and doesn't have any turns. But we can add some)
From 3:17:20 to 3:17:30 http://www.youtube.com/watch?v=AerjOGn6jGo

====

Choice #2 : Last crusade style
READ CAREFULLY
- there is a top-down view of the corridors. The player has an idea of the general map of the place (even though, in Last Crusade, there is a very annoying Fog of War)
- the "regular" player view comes back only when he enters a room, or interstingly (see video) when he's in front of a locked door.
- There is only a handful of actual rooms, they are used stricly for puzzles.

From 37:50 to 38:50 http://www.youtube.com/watch?v=CwsvTQfsD4A

====

Also important: In FoA, there are two variations of those two systems :

- VARIATION A : In the underground maze of Knossos, we have a variation of the Monkey-Island-2 style (no top-down map), except it's meant to semi-confuse the player by adding additional, useless rooms (some backgrounds are very similar to one another). But an attentive player can still find his/her way. (The rooms are not fully randomized, like they are in the Monkey-Island-1-monkey-head maze, or MI1-forest maze.)

- VARIATION B: In the city of Atlantis, we have a variation of the Last Crusade style (top-down view + rooms you can enter), except there are quite a lot of generic rooms, that are not here to confuse you, but instead to make the place look bigger (based on this background: http://imgur.com/a/jNECF#85)



#228
Hi everyone!

Still as part of our development effort for Indiana Jones and the Seven Cities of Gold, we're releasing this module based on Scavenger's prototype.
We had to change a few things to make it more flexible and to work around the alpha channel bugs in GUI backgrounds (which should be fixed in AGS 3.3+, hopefully).

WHAT DOES IT DO
Remember in the Indiana Jones movies? Every time he travels, there's a close-up on a (scrolling) map, and a red line showing where he's travelling. Optionally, his vehicle is shown on top of the scene, with transparency.
This module does exactly that! Try out the demo to check for yourself.

[imgzoom]http://img22.imageshack.us/img22/5827/07f9.png[/imgzoom]



HOW DOES IT WORK?
Read the manual included with the module.
In a nutshell: create a room (with the map as the background), add one object and 2 dedicated gui's (to fit the module's inner architecture) and call the few functions to initialize stuff (see the manual).

Then, just queue up some waypoints and the red line will travel there. In the room , manually draw some regions, and when the red line goes over that region, then the corresponding vehicle overlay is shown (e.g. a plane when Indy travels over the sea).
Off you go.

DOWNLOAD
Version 1.0 Here : https://www.dropbox.com/s/4v72d2o6hnl2zd5/Map_noDynamicSprites%201.0.zip
#229
Hi everyone,

I consistently fail to remember/understand what exact scenario will cause the "alpha channel" bug to pop-up.
Therefore I need to ask you:

- I have a 32-bit game
- I use AGS 3.2.1 (current stable release)
- I imported some PNGs files with a pink background. AGS asked "do you want to use the alpha channel?" I said no (but the issue is the same when I try with "yes").
- In repeatedly_execute_always, I use a DynamicSprite : I get its DrawingSurface, I clear it, then paste the imported sprite into it like this: mySurface.DrawImage (0, 0, graphicID, customTransparency);

And Iget the bug: whenever customTransparency is not exactly 0, the non-transparent parts of the sprite appear pink instead of having their own color and being partly transparent.

What should I change to make it work? Halp mee plez.


#230
Hi all! Do you remember how Indiana Jones fights have those weird, over-the-top punching sounds?

(see here at 0:13 )

http://www.youtube.com/watch?v=-au9DeVKi8E

I don't think there were those sounds in the talkie version of FoA. Did anyone ever play subsequent Indy games like "Infernal Machine" and such?
Usually the punching sound comes with a moaning sound of the guy receiving the punch ;)

Any idea  if other adventure games (or movies) have similar pulp sound effects?
Our final goal is to extract those sounds and have clean samples.

I believe it's rather unique to Indiana Jones.
#231
I'm trying to have the following workflow:
- We use the same game files for both demo and final game (with a #define for all required code branches)
- We release the game "as is". But before we release the demo, we quickly remove most of the unnecessary resources (rooms, etc.), mostly  to reduce the size.

That's where I need to work out the sound cache file : I've noticed that removing the sound resources from the game (using the Editor) doesn't seem to reduce the final game size. I believe it's because all the sounds are cached in that intemediate file, onto which the game-maker has no direct control.

So, two questions:

1) What are the "real" .wav and .mp3 for? Do they become useless as soon as the sound is imported into the game, usign the Editor? They can be removed without impacting the game?
2) How do I force-update the audio cache file -- to make sure that all sounds removed using the Editor will actually be removed from the final compiled game?

Thanks.

#232
Hi all,

Is it possible to use the "create template" room feature to create rooms separately and then "import" them into the "main" game file?
We're working as a team and it's a bit complicated to work on the game when only one person can use the main game file at a time.

Would there be a catch in that idea?
#233
Quote
IMPORTANT NOTE :
- This module was created before late_repeatedly_execute_always was introduced
- If you replace repeatedly_execute_always with late_repeatedly_execute_always it should procude better results (no latency in character frame mirrored)




This allows you to create small mirrors in your game very quickly.

FEATURES:
- three types of symmetry: front/back (the mirror is facing you), left/right (the mirror is turned 90° from your viewpoint), none (the character is repalced with any character of your choosing, allowing upside-down symmetry of any crazy idea you have).
- you can choose the opacity of the mirror: 0.0 means it reflects perfectly. 1.0 means it doesn't reflect anything.
- Custom-shaped mirrors : just pick a sprite as a mask and your mirror can have any shape. It also uses alpha (you can have cracks in your mirrors, a soft outline, etc.).
- Attenuation: when the player moves away from the mirror, his reflection becomes less and less visible.
- Moving reflection : you can make the character's reflection move around to simulate a moving mirror (water surface, etc.)
HOW TO USE
- See the demo game and the header script. It's as simple as possible : choose an object as the mirror, another object as its symmetry center, and a region to trigger it on or off when the player walks on it.

KNOWN ISSUES
- [version 1.x only] [It's quite slow. It's meant for small mirrors. I'd say no more than 200x100 pixels reflecting simultaneously.
- [version 1.x only] There are tiny rendering bugs (sometimes the mirrored image is late one frame, or sometimes it's not aligned properly -- but the player won't really notice). Those will be fixed in next version.

- It only reflects the player character. It doesn't reflect any object or animated background or anything else. But it's easy to tweak the module and make it reflect one or several NPCs.

HISTORY
- 2013: uploaded version 1.x which work with per-pixel computation (allows shaders)
- 31 july 2014 : uploaded version 2.0 which drops the whole per-pixel thing and uses standard AGS characters as the reflection.

>>> DOWNLOAD 1.1 (obsolete, per-pixel computation) <<< (sources + compiled demo game)
>>> DOWNLOAD 2.0 (faster, more reliable) <<< (sources + compiled demo game)

Also you might like the private jokes for point-n-click lovers in the demo ;)


==================

UPDATE: You know the way you always learn new things in AGS scripts?
Well, you'll notice that my module uses the following silly technique to get sprites Width and Height :
Code: ags

      //not the actual code in the module
      DynamicSprite* s sprite= DynamicSprite.CreateFromExistingSprite(something.Graphic);
      int width=s.Width;
      int height=s.Height;


Well, feel free to replace it with this, which will be much faster and memory-savy:
Code: ags

      width = Game.SpriteWidth[something.Graphic];
      height = Game.SpriteHeight[something.Graphic];

#234
The manual doesn't say that "GetPixel()" returns -1 (constant COLOR_TRANSPARENT) on transparent pixels, even in a 32-bits game.

On a side note, that also answers the question: "how the hell do I know if a pixel is transparent, considering the top-left corner of the image is not necessarily pink in the images I import?".
#235
OK, I'm sorry to post that here, but I'm going crazy over this.
It must be something obvious, but I keep looking at that script and fail to spot the obvious mistake.

It's a script to render a character onto a background pixel by pixel, with a little twist: there's also a surface used as a mask, to decide if the pixel is copied.

i and j iterate on every pixel of the mask surface, and then I look up what pixel from the character should be drawn (only if both the pixel from the mask and the pixel from the character are non-transparent). The pixel matching (i,j) in the "mask" surface has coordinates (x_on_char, y_on_char) in the character sprite.

There's also a perspective correction: E.g. depending on where "player" is standing, y_on_char gets altered by perspective_correction_y.

That's about it.
Here's the script: (I'm hiding it because it's full of unnecessary bullshit)
Spoiler

Code: AGS

  int color_char;
  int color_mirror;
  DrawingSurface* ds_mirror = data[mir_index].obj_spr.GetDrawingSurface();
  
  int i=0; int j=0;
   while (j<data[mir_index].height) //iterate on every pixel row in the mirror object
  {
    i=0;
    
   while (i<data[mir_index].width) //iterate on every pixel column in the mirror object   
    {
      color_mirror = ds_mirror.GetPixel(i, j);
      if (color_mirror!=data[mir_index].TRANSP_COLOR)
      {
        /*
        #define x_on_screen   x+i
        #define y_on_screen   y+j

        #define  x_correction  (-data[mir_index].x_offset) 
        #define  y_correction  (-data[mir_index].y_offset) 
        */
        
        int x_on_screen =  x+i;
        int y_on_screen = y+j;
        
        x_in_char = x_on_screen-frameData.x;
        y_in_char = y_on_screen-frameData.y;

        if (frameData.flipped)
          x_in_char = frameData.w - x_in_char;
          
        x_in_char = x_in_char /*+x_correction*/ +perspective_correction_x;
        y_in_char = y_in_char /*+y_correction*/ +perspective_correction_y/*+ofs*/;

        //Status.Text=String.Format("persp=%d",perspective_correction_y);//DEBUG
        
        if (     x_in_char>=0 && x_in_char<frameData.w 
              && y_in_char>=0 && y_in_char<frameData.h)
        {

          color_char = char_ds.GetPixel(x_in_char, y_in_char);
          
          if (     color_char!=frameData.TRANSP_COLOR )
          {
            ds.DrawingColor = color_char;
            ds.DrawPixel(x_on_screen,   y_on_screen);
          }
        }
        
      }
      
      i++;
    }
    j++;
  }

[close]

But now, here's the problem:
The script works OK, except perspective_correction_y doesn't seem to change.

As you can see, in the loop I even display its value into "status.Text". Thanks to that, I can see that when the character moves around, the value of perspective_correction_y increases and decreases as expected...
...BUT the rendered pixels stay in the same place on the screen. No matter how perspective_correction_y varies, the final value of  y_on_screen stays the same. The rendered character copy stays on the same horizontal line.

Where do I screw up the overwriting of my variables values? Or do I have two variables cancelling each other? I just fail to see it... It's driving me mad :D


#236
Today's Google Doodle is a point n' click!

I didn't check what technology they used (HTML5?) but it's quite impressive.
#237
Notice how each face is different. Which one is the best in your opinion?

The first one is obviously the one that looks the most "naive" (with the childish face and the nose sticking out) but it's also the one that has that cheeky Harrison Ford look on it.

What do you think?

[imgzoom]http://img259.imageshack.us/img259/4055/muol.png[/imgzoom]

Damn, in moments like this I wish I could swap bodies with ProgZmax. I'd do it in his sleep, he'd never notice.
#238
Advanced Technical Forum / Module for mirror?
Thu 04/07/2013 16:53:05
I've searched through the forums and even though several threads ask what would be the best way to implement a mirror, there doesn't seem to be an actual module that does it. Or, if so, those are extremely old threads (2003, 2004...).

It wouldn't be too hard to script it myself but I'm looking for something a bit flexible (distorsions, etc.) -- or at least I'd like to focus on scripting that bit instead of starting from scratch.

Do you know of any such mirror module, or a module that does something else but could be modified? (e.g. the Lake Reflection module or the Underwater module)
#239
WHAT DOES IT DO
      It allows you to play any sound so that it repeats smoothly,
      thus allowing you to transform any sound effect into an ambient loop.

Quote

     
      Note that it will work better if the sound is rather uniform (no
      recognizable repeating sound in it) and not too short.
      For example, if you have a "storm" sound effect, avoid having
      one outrageously recognizable thunderclap sound right in the middle of
      your ridiculously short loop.
     
    USE:
   
    Example :
      aSound1.Play_Ambient(); //this plays aSound1 in a smooth loop

      aSound1.Stop_Ambient(); // stops aSound1
      Stop_Ambient_All(); //stops all ambiant sounds
     
    LIMITATIONS
      You can play up to 10 ambiant sounds simultaneously. change macro
      MAX_AMBIENTS to increase the limit.Please note that the real limit
      is the number of channels. There is a need of 2 channels per ambiant sound.

WHAT DOES IT NOT DO
    No handling of spanning
    Plays the sounds on the first found channel, with priority 1
    => You can easily tweak the module to add those refinements.

Compatibility :
    made in 3.2.1 (not tested below)
    Works with "enforce new style audio scripting" to true.


Download (version 1.0)
#240
It's probably obvious but I don't understand why this script (appearing in a dialog) throws the error : "Dialog 7(84): Script commands can only be used in the area between a @ entry point and the closing return/stop statement"

Code: AGS


@5  // Listen carefully, all of you...
Indy: The subject will be...

  //did we already resolve this?
  if (DialogsLogic.GetVar(eDialog_FoundProperSubject))  {
Indy: ...wood carving...
Indy: ...artwork...
Indy: ...constantinople...
Indy: ...Mehmet IIs reign.
goto-dialog 10 //dStudent2_HowAbout3. That will compute the outcome  
return
  }  /////////// THAT LINE THROWS THE ERROR /////////////////////
  else
  {
goto-dialog 9 //dStudent2_HowAbout2
return
  }
  
return




Because of that error, I get another error "Dialog 8(1): Error (line 1): Nested functions not supported (you may have forgotten a closing brace)" in the dialog immediately after. But I suppose it's only a side-effect.

If I remove the bit I quoted just above, then the code compiles fine.
SMF spam blocked by CleanTalk