TEMPLATE: 9-verb MI-style 1.6.4 - Last update: 4th April 2019

Started by abstauber, Thu 17/09/2009 16:16:37

Previous topic - Next topic

abstauber

Hehe - never noticed this too. I don't even know to which background that mask belonged to.

I've updated the zip (without a new version number)
http://shatten.sonores.de/wp-content/uploads/2013/07/9verb_131.zip

Crimson Wizard

Quote from: abstauber on Mon 08/07/2013 14:06:41
Hehe - never noticed this too. I don't even know to which background that mask belonged to.

:) Could that be:




abstauber

Wow, so this survived since Proskritos first release in 2006?! Now I almost feel bad that I removed it :)

Also - stunning game guessing skills :)

monkey0506

Quote from: abstauber on Mon 01/07/2013 14:11:30I've just learned that ifver 3.2 means "3.2 and above", so it would have worked all the time.

I was going to say something about this. The whole "checks for #ifver 3.2 and I suppose that breaks for 3.3" bit filled me with unfathomable rage. Especially when no one pointed out that since its induction, #ifver/#ifnver have always meant "version X or higher". This isn't explicitly stated in the manual description text, but it is explicitly stated in the manual's example:

Quote from: The Manual#ifver 2.72
// do stuff for 2.72 and above
#endif

Quote from: abstauber on Mon 01/07/2013 14:11:30Still I've added the constant USE_OBJECT_ORIENTED_AUDIO, so code is a bit easier to read.

Without looking through your code, when you say you've added a constant, which of the following do you mean?

Code: ags
// (1) defined a new VALUED macro, enum, or readonly boolean which the user can edit at design-time
#define USE_OBJECT_ORIENTED_AUDIO true

enum ModuleAudioSettings
{
  USE_OBJECT_ORIENTED_AUDIO = true
};

readonly bool USE_OBJECT_ORIENTED_AUDIO = true; // could also be writeprotected property or readonly attribute of struct

// (2) defined a new VALUED macro or enum which is based on STRICT_AUDIO
#ifdef STRICT_AUDIO
#define USE_OBJECT_ORIENTED_AUDIO true
#endif
#ifndef STRICT_AUDIO
#define USE_OBJECT_ORIENTED_AUDIO false
#endif

enum ModuleAudioSettings
{
  USE_OBJECT_ORIENTED_AUDIO =
  #ifdef STRICT_AUDIO
    true,
  #endif
  #ifndef STRICT_AUDIO
    false,
  #endif
};

readonly bool USE_OBJECT_ORIENTED_AUDIO =
#ifdef STRICT_AUDIO
  true;
#endif
#ifndef STRICT_AUDIO
  false;
#endif

// (3) defined a new UNvalued macro based on STRICT_AUDIO
#ifdef STRICT_AUDIO
#define USE_OBJECT_ORIENTED_AUDIO
#endif


Any of the variants of (1) would IMO make the code "a bit easier to read" at the expense of conditional compilation (only compiles on AGS 3.2+), and requiring STRICT_AUDIO to be false:

Code: ags
 // some_func
  if (USE_OBJECT_ORIENTED_AUDIO)
  {
    aSound.Play();
  }
  else
  {
    PlaySound(1);
  }


The variants of (2) would be utterly useless because if STRICT_AUDIO was set to false then USE_OBJECT_ORIENTED_AUDIO would never be true, and otherwise, the else branch would fail to compile.

Code: ags
  if (USE_OBJECT_ORIENTED_AUDIO)
  {
    // if STRICT_AUDIO is true this branch is run and compiles fine
    // if STRICT_AUDIO is false this branch is ignored but compiles fine
    aSound.Play();
  }
  else
  {
    // if STRICT_AUDIO is true this branch won't compile
    // if STRICT_AUDIO is false this branch is run and compiles fine
    PlaySound(1);
  }


The final way I can think of "defining a constant" in AGS (3) would do nothing except complicate the code by serving as an exact replacement for checking STRICT_AUDIO:

Code: ags
#ifdef USE_OBJECT_ORIENTED_AUDIO
  aSound.Play();
#endif
#ifndef USE_OBJECT_ORIENTED_AUDIO
  PlaySound(1);
#endif


This is exactly similar to using STRICT_AUDIO (in fact, the two are exactly synonymous in this case).

So, the only way I can conceive that USE_OBJECT_ORIENTED_AUDIO could possibly be useful is (1), which requires STRICT_AUDIO to be set to false to prevent compilation errors. The end-user then has to open the module script and edit the design-time definition if they want to change audio styles. If they replace/upgrade the module, their setting will be lost. In the end, there is no way that this "benefit" would outweigh the end-user's costs. I like the concept you were going for, but I see no practical use case for it, and I'd say you should stick to the editor-defined macro and conditional compilation.

If you really wanted to, I suppose that you could try conditionally importing the old-style audio commands directly into the module script if STRICT_AUDIO is defined (the functions still exist, they just aren't imported). Of course my understanding is that to use the old-style audio commands with the new-style audio the clips have to be given very specific script names...I'm not sure. It could give a way of getting around the nastiness of conditional compilation and allow you to provide a native if-else statement block instead of using the preprocessor. But there's not a way to translate an AudioClip* into an ID for PlayMusic/Sound/etc. So I don't know how genuinely useful it would ultimately be anyway. Interesting idea though...and I could see uses for the concept elsewhere...

Crimson Wizard

#164
Quote from: monkey_05_06 on Mon 08/07/2013 15:06:09
I was going to say something about this. The whole "checks for #ifver 3.2 and I suppose that breaks for 3.3" bit filled me with unfathomable rage. Especially when no one pointed out that since its induction, #ifver/#ifnver have always meant "version X or higher". This isn't explicitly stated in the manual description text

That's the point, isn't it? It is not explicitly stated in manual, and the name of the preprocessor command does not explicitly imply it either. Is there really a reason for "unfathomable rage"? Doesn't your religion teach you of understanding and forgiveness? Oh well, doesn't plain common sense teach to understand such situations?

Quote from: monkey_05_06 on Mon 08/07/2013 15:06:09
Without looking through your code, when you say you've added a constant, which of the following do you mean?

What can I say? Just *facepalm* maybe.
Definition:
Code: ags

#ifver 3.2
#define USE_OBJECT_ORIENTED_AUDIO
#endif

Usage example:
Code: ags

#ifdef USE_OBJECT_ORIENTED_AUDIO
// In AGS 3.2 you do it this way:
//   Audioclip *openDoorSound = aDoorsound;
AudioClip*  openDoorSound,  
            closeDoorSound, 
            unlockDoorSound;    
#endif


Regarding STRICT_AUDIO, as I mentioned several posts above, this is theoretically possible that user writes 3.2 game while backwards compatibility is enabled to allow him/her to use old PlayMusic functions along with AudioClips.

abstauber

#165
* abstauber needs way to long for teh english.
I still post it for the records :)

Quote from: monkey_05_06 on Mon 08/07/2013 15:06:09
The whole "checks for #ifver 3.2 and I suppose that breaks for 3.3" bit filled me with unfathomable rage.
Such things should never fill you with rage :P

Quote from: monkey_05_06 on Mon 08/07/2013 15:06:09
Without looking through your code,...

Let me support your laziness
Code: AGS

#The very first script header:
#ifver 3.2
#define USE_OBJECT_ORIENTED_AUDIO
#endif


And this is how it works
Code: AGS

#ifdef USE_OBJECT_ORIENTED_AUDIO
  import int wicked_sound_function(AudioClip *sound);
#endif

#ifndef USE_OBJECT_ORIENTED_AUDIO
  import int wicked_sound_function(int sound);
#endif


People should let go of "play-by-numbers" anyway. If somebody insists of addressing sounds by numbers in AGS 3.2 (including the template's two functions), one can still comment the definition of USE_OBJECT_ORIENTED_AUDIO.

edit:
@Crimson: Hooray, we even quoted the same lines :D

abstauber


Monsieur OUXX

I suggest this font be added to the template : https://www.dropbox.com/s/5dx072m33a6v6vm/iMuseFont.zip



It's the Lucasarts credits font, as seen in Fate of Atlantis.
I know this is a MI template, but it's the closest thing to the FoA gui.
 

abstauber

There are two things to consider: copyright and internationalization.
Can this font e.g. display Señörá ? If yes and it's free to use, then +1 from my side.

Monsieur OUXX

Quote from: abstauber on Wed 23/10/2013 14:57:51
There are two things to consider: copyright and internationalization.
Can this font e.g. display Señörá ? If yes and it's free to use, then +1 from my side.

No to both answers. :(
That's the real font from FoA. But isn't the speech font of AGS too?
That's not an international font but I must admit I don't know how these work (i.e. how to create one from this). I'll have to have a close look.
 

abstauber

Quote from: Monsieur OUXX on Thu 24/10/2013 01:54:06
That's not an international font but I must admit I don't know how these work (i.e. how to create one from this). I'll have to have a close look.
As far as I know you need to create a ttf font for this. Otherwise you'd need to replace special chars with foreign ones (like * acting as an ä). Strazer made such a font: http://www.strazer.net/ags/nnscifnt.zip

The default speech font of AGS should be from Space Quest 4, but I don't know if it's a rip or a facsimile.

Monsieur OUXX

Quote from: abstauber on Thu 24/10/2013 12:48:14
The default speech font of AGS should be from Space Quest 4, but I don't know if it's a rip or a facsimile.
I meant the Lucasarts-like font. But maybe that font doesn't actually exist in AGS, and I've dreamt it. Maybe so far I've only used unofficial templates that included it, without realizing. I'm not sure.

Thanks a lot for the link you gave.
Only for accuracy's sake: That font is not the same one as the one I posted("my" FoA font's capital letters are about 12 pixels tall, and the small letters are actually capital letters too, just small. "your" font's capital letters are 16 pixels tall and the small letters are regular letters).
I don't know if the font you linked is from a Lucas game, or just meant to look similar. They sure look similar.
 

Crimson Wizard

I want to point out a specific problem that some people may have with this template.

For two times a user reported a bug that his "speech animation plays only first two frames". I myself got into same once when randomly testing speech animations.
Upon investigation I found that this is caused by Lip sync from 9-verbs template, which only has 1 frame used for vocals. This caused speech animation to jump between two frames.

Is this made on purpose?
May I propose to remove lipsync from this template? Lip sync is usually an "advanced" thing and seem to confuse beginners.

abstauber

#173
Quote from: Crimson Wizard on Thu 24/07/2014 21:24:08
Is this made on purpose?
As far as I remember this is just a relic. I usually use portraits so I didn't even notice it.

Quote from: Crimson Wizard on Thu 24/07/2014 21:24:08
May I propose to remove lipsync from this template? Lip sync is usually an "advanced" thing and seem to confuse beginners.
Proposal accepted :)
I'll upload an updated version today.
--edit: done!

Crimson Wizard

I just noticed.
There's a manual PDF included to the old version archive, but not to the latest.

abstauber

You are right, but since the manual is also included inside the template itself I got a little lazy ;)

I've just uploaded a add-on package including the gui graphics and the manual.
http://shatten.sonores.de/wp-content/uploads/2014/10/9verb_addon.zip
Thanks for the heads up!

Crimson Wizard

I want to report a bug.

1. Open main menu.
2. Press any key (I tested with letter and number keys).
3. Click "Resume".

The Action text dissapears and show up only after you click right mouse button.
This bug also occurs with version installed with AGS 3.2.1.

abstauber

Sorry for the late reply, a nasty cold kept me away from the screen until now.

Anyway I've fixed this bug and two others reported by rmonic79.
http://shatten.sonores.de/wp-content/uploads/2014/11/9-verb-MI-style_beta.zip

And I've asked for a portuguese translation - so hopefully the next version won't only contain bug-fixes :)

abstauber


Monsieur OUXX

#179
EDIT
Spoiler

There's something weird with the template: you need to do "Pick up" envelope to open it, and "open envelope" gives the default "it doesn't work" speech.
I noticed that this issue is also present in "Indiana Jone è l'orro di Genghis Khan", which uses the template I believe.

And I have to confess that the script is far too complex for me to spot if this is a bug related to the connection between the buttons and the actions (seriously: wow 8-0) or just a misuse of the cursor modes. Quick tests strongly suggest that there's a mixup between "open", "look at" and "use".

I used the template version shipped with AGS 3.3.0 RC1
[close]

EDIT : I've narrowed it down to two issues: one bug and one clumsy game design choice:
1) Template Bug: The "Pick up" action turns into the "use" action when clicking onto inventory items (it works fine otherwise). I don't know if it's only in the English template but the fact that an Italian game was impacted too suggests it's in every language.
2) Clumsy choice: The envelope cannot be opened using "Open". The player needs to use "Use"


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


EDIT: unrelated note: Here is the 9-verb template with all graphics re-imported as 32-bits and the default settings set to 32-bits / D3D9. DOWNLOAD FROM HERE.
abstauber, I suggest that you correct the bug I mentionned then provide the latest version to AGS installer maintainers.

Notes:
- I've also reduced the number of frames for Beman's walkcycle, because it wasn't used in the demo game (and it was a pain to re-import all sprites one by one).
- I have based my work on the version that's included in 3.3.0 RC1, I have no idea if that's the same version as your latest version available for download in your latest post above.
 

SMF spam blocked by CleanTalk