AGS 3.3.0 Release Candidate

Started by Crimson Wizard, Thu 04/04/2013 19:16:28

Previous topic - Next topic

Crimson Wizard

Quote from: Knox on Wed 23/10/2013 04:15:14
Quote from: Crimson Wizard on Tue 22/10/2013 22:22:24
@Knox: it is in the code, but not in beta 8.

Ah gotcha! :-[

No problem, I should have been more clear actually.


Uhh, I need to gather all known problems. This is what I remember:
1) Re-ordered dialogs mess up the option-answer links.
2) SetMusicMasterVolume does not allow to set real volume of 0.
3) Blinking of the script window in the editor which happens when asteriks is being put or removed from the pane title to notify of existing/none unsaved modifications. For some reason Tzachs could not reproduce this, although I see it clearly at all times. Can anyone else confirm this is happening?
4) Couple of bugs posted in the tracker recently (broken compatibility with existing games).

Anything else?

Radiant

Possibly include script name in NewRoom/Cutscene error messages, and it would be nice if "SetGameOption(OPT_OLDTALKANIMSPD, 0)" worked in the code, but I believe using "SetGameOption(39, 0)" does the trick too. I believe the issue with SpeechAnimationDelay and Sierra-style speech was fixed? That's it for me, thank you for your time :)

Crimson Wizard

#402
Small update: http://www.mediafire.com/download/5lo3pj0ntbqr6da/acwin.exe
Changed the look of "max" filter, and this should be there too:
Quote from: Radiant on Wed 23/10/2013 10:35:45
Possibly include script name in NewRoom/Cutscene error messages,

I might as well say this: I fear some people will certainly ask why there's no "max anti-aliased filter" or "max hqx filter". The answer is that in order to implement nicely customizable selection properly I'd had to rewrite quite a few things there. ATM I added this option with quick hack, and I cannot make myself do more similar hacks, this literally hurts me :(.
So, other time maybe. (Then again, with free resolution selection many things will change anyway)


Quote from: Radiant on Wed 23/10/2013 10:35:45
and it would be nice if "SetGameOption(OPT_OLDTALKANIMSPD, 0)" worked in the code,
After monkey_05_06's changes this will be Speech.UseGlobalSpeechAnimationDelay (true/false) and Speech.GlobalSpeechAnimationDelay (value).
E: Although I wonder why would you need to change that at runtime? Some kind of user option?

selmiak

@knox:
As far as I can see from here the shadow on your sprite 547 has much less opacity than the shadow on image 549 ;)

Knox

Quote from: selmiak on Wed 23/10/2013 17:37:31
@knox:
As far as I can see from here the shadow on your sprite 547 has much less opacity than the shadow on image 549 ;)
Ha, nice catch! I forgot to re-import sprite 547 :P
--All that is necessary for evil to triumph is for good men to do nothing.

Radiant

Quote from: Crimson Wizard on Wed 23/10/2013 16:10:24
E: Although I wonder why would you need to change that at runtime? Some kind of user option?
To put in #ifver blocks for e.g. templates.

monkey0506

Quote from: Radiant on Wed 23/10/2013 10:35:45
Possibly include script name in NewRoom/Cutscene error messages, and it would be nice if "SetGameOption(OPT_OLDTALKANIMSPD, 0)" worked in the code, but I believe using "SetGameOption(39, 0)" does the trick too.

Quote from: Radiant on Wed 23/10/2013 17:47:06
Quote from: Crimson Wizard on Wed 23/10/2013 16:10:24
E: Although I wonder why would you need to change that at runtime? Some kind of user option?
To put in #ifver blocks for e.g. templates.

Even adding that now wouldn't change the built-in headers of old AGS versions, so you still wouldn't be able to use SetGameOption(OPT_OLDTALKANIMSPD, 0) prior to 3.3.0. And as CW mentioned, for 3.3.0 and later versions this is equivalent to setting Speech.UseGlobalSpeechAnimationDelay = false;. The game.talkanim_speed variable is being deprecated in favor of Speech.GlobalSpeechAnimationDelay, but of course the older variable will still be available to game scripts for backwards-compatibility reasons. In the next release I'd actually like to wrap a lot of the game.* variables and SetGameOption settings in new, proper settings and deprecate their usage entirely (e.g., must have "Enforce object-based scripting" set to false to use them).

Quote from: Radiant on Wed 23/10/2013 10:35:45I believe the issue with SpeechAnimationDelay and Sierra-style speech was fixed? That's it for me, thank you for your time :)

As per CW's findings, anything compiled with 3.1.2 or earlier versions, game.talkanim_speed was ignored for Sierra-style speech which always had a fixed delay of 5. Anything compiled with 3.2 or 3.2.1 would respect game.talkanim_speed for Sierra- and LucasArts-style speech. 3.3.0 maintains this behavior, depending on what version the game was compiled with. Moving forward (games compiled with 3.3.0 and later) will preserve the 3.2+ behavior, and can be modified using the appropriate settings of the Speech class.

Radiant

Quote from: monkey_05_06 on Thu 24/10/2013 02:06:36As per CW's findings, anything compiled with 3.1.2 or earlier versions, game.talkanim_speed was ignored for Sierra-style speech which always had a fixed delay of 5. Anything compiled with 3.2 or 3.2.1 would respect game.talkanim_speed for Sierra- and LucasArts-style speech. 3.3.0 maintains this behavior, depending on what version the game was compiled with. Moving forward (games compiled with 3.3.0 and later) will preserve the 3.2+ behavior, and can be modified using the appropriate settings of the Speech class.
I don't quite follow this. Do you mean that it's possible to take a game compiled with 3.2 and run it with 3.3? Or that the behavior of the 3.3 editor is different if you import your game from an earlier version? Or something else?

Crimson Wizard

To put this simply: everything should be fine. :)

The only difference in behavior would be when you import 2.72 project into 3.+: the Sierra speech will start using global speech delay setting (therefore your code from ATOTK and HQ3 will work properly in 3.+).

Radiant


Crimson Wizard

Minor editor bug: the Output log is not cleared when you load another project.

Crimson Wizard

#411
@Radiant, regarding SetMusicMasterVolume.

I made a stupid mistake not fully testing how previous versions of AGS really worked prior to making assumptions. Problem also is that I never made any real game with pre-3.0 AGS.
I made a test game in 2.72 and found that SetMusicMasterVolume acts exactly as in 3.3.0.
As hinted in the manual:
Quote
SetMusicMasterVolume (int volume)
Sets the overall music volume, from 0-100. This is slightly modified by the individual room volume settings.

The only way to mute the music completely is to do two calls:
Code: ags

SetMusicVolume(-3); // set room volume factor to "quietest".
SetMusicMasterVolume(0); // set master volume to 0



E: Another thing is that the room volume setting does not save when player leaves room, so you'll have to keep track of it with some global variable and apply at every room load event... Unless I miss some easier solution; but, as I said, I never made a game with 2.72.

Radiant

Yes. The problem with that approach is that you'd have to repeat SetMusicVolume(-3) whenever the player enters a new room, and that the music may 'spike' to the louder volume while the room is loading. That lasts only a few milliseconds but it's audible.

The point, however, is that if a player sets master volume to zero, the reasonable expectation is for the volume to be zero. If you want to preserve the current way things work, then I would like to request that SetMusicMasterVolume accepts parameters between -60 and 0 (which would currently abort the game with an error message), since the function's internals set the actual volume to the parameter plus sixty anyway. Then the old behavior is preserved, and people can do SMMV(-60) to make the music actually quiet.

Crimson Wizard

#413
Yes, I see your point now, that could be reasonable; I guess CJ did not want to mess with the old audio system anymore (and frankly I feel reluctant to do so myself).

However, I think I found a better alternative for you ;). Try this:
Code: ags

Game.SetAudioTypeVolume(eAudioTypeMusic, NEW_VOLUME_VALUE, eVolExistingAndFuture);

Damn, no, this not working properly with PlayMusic function :~(...

Crimson Wizard

#414
Quote from: Radiant on Sun 27/10/2013 13:42:51
Yes. The problem with that approach is that you'd have to repeat SetMusicVolume(-3) whenever the player enters a new room, and that the music may 'spike' to the louder volume while the room is loading. That lasts only a few milliseconds but it's audible.

I tried setting this in "OnLoad" (aka Before Fade-in) room event, and it caused no volume spikes. Can you try that out?
If that still not working (although I'd consider this is a wrong behavior then...), I can make the change you ask for. Actually, that would need  minimal volume = -210 to compensate both +60 adjustment and the max room volume setting.

E: No, I am wrong. I emulated longer loading times and I now clearly see hear music volume "spike". I will go for SetMasterMusicVolume fix.

Crimson Wizard

#415
AGS 3.3.0 BETA 9 released (engine version 3.3.0.1146)
-------------------------------------------------------
Hmmmm, this takes tad longer that I hoped for, but there's definitely the finish somewhere out there.

-------------------------------------------------------
Changes from BETA 8:

Features:
- Custom text windows now support alpha blending;
- Custom dialog options GUI now supports alpha blending;
- New property in DialogOptionsRenderingInfo class:
Code: ags

/// Should the drawing surface have alpha channel
bool HasAlphaChannel;

You must set it in "dialog_options_get_dimensions" function, the one where you normally define size and position of the drawing surface. Default is False.
- The "Old-style game-wide speech animation speed" game setting (in "Backwards compatibility" group) is replaced with two settings in "Dialog" group: "Use game-wide speech animation delay" (true/false) and "Game-wide speech animation delay" (value).
Also added related properties in Speech class:
Code: ags

/// Gets/sets global speech animation delay (if using global setting).
int  GlobalSpeechAnimationDelay;
/// Gets/sets whether speech animation delay should use global setting (or Character setting).
bool UseGlobalSpeechAnimationDelay;

- SetMusicMasterVolume() legacy script function now accepts volume values between -210 and 100 respectively (was between 0 and 100); this may be used as a workaround for guaranteed music mute if you imported old project and do not want to convert to new audio system;
- Defaulted threaded audio option to False for desktop builds (Linux & Windows). You may enable it by manually adding an option in "sound" section of acsetup.cfg:
Code: text

[sound]
threaded = 1

- Added "Max nearest-neighbour filter" option to filter list in winsetup. This corresponds to manually setting "gfxfilter" option to "max" in acsetup.cfg. If this option is selected, AGS will choose the maximal possible scaling filter your graphics driver supports.
- Added more useful information to error messages related to incorrect NewRoom, RunDialog, StopDialog, StartCutscene and GetGameParameter calls.

Bug fixes:
- Fixed dialog script pane missing a syntax highlight on certain occasions (regression);
- Fixed game compilation error which occured after project items are re-ordered with drag&drop (regression);
- Fixed incorrect gui name convertion, which occured when importing a 2.72 project (regression);
- Fixed "savegameindex[]" array was declared with incorrect size (20, while it must be 50).
- Fixed crash in RawClearScreen() script function (regression);
- Fixed incorrect behavior of the RawDrawImageTransparent() script function (regression);
- Fixed return value of the AudioChannel.PositionMs for MOD/XM clips;
- Fixed error which occured when old-style strings were assigned to new String variable, or compared with each other using '==' and '!=' operators (regression);


Download links (also updated at first page):
EXE:
http://www.adventuregamestudio.co.uk/betas/AGS-3.3.0-beta9.exe
ZIP:
http://www.adventuregamestudio.co.uk/betas/AGS-3.3.0-beta9.zip

Radiant

Awesome! Does this count as an RC? :)

Joseph DiPerla

CW! The new CJ! Lol. Nice job for all parties involved! Thanks for all your hard work guys.
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

Radiant

I think I found a bug...
In this block of code, on the line "if ((here >= 30...", the compiler breaks with the error "Line too long (max line length = 500)". This code hasn't been changed in awhile and worked fine in the previous build, and the line is clearly shorter than 500 characters. I'm not sure what's going on here.

Code: ags

      if (action == 1 || action == 4) clickx = -1;
      CallRoomScript (action * 100 + spot);
      if (action == 2 && spot == 0) {
        // the next line
        if ((here >= 30 && here <= 33) || here == 60 || here == 70 || here == 75 || here == 76 || here == 80 || here == 81 || (here == 82 && scene[LIFFY] < 8) || (here >= 83 && here <= 93)) {
          if (player.View != EGOWALK && player.View != EGOSNEAK && player.View != EGORUN) {
            message ("This is not a good time to make snowballs.");
          } else {
            // snipped
          }
        }
      }

Radiant

#419
Wait... 'here' is a macro that's #defined as " character[GetPlayerCharacter ()].room ", so I suppose that does make the line too long (edit) And changing it to "player.room" solves the error. Nevertheless this error did not occur in earlier builds.

SMF spam blocked by CleanTalk