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: Radiant on Sun 15/12/2013 21:58:56
By the way, if you're rewriting logging, please make sure that every log gets a line number.
No, I am not rewriting logging globally, I am just changing the way logger starts.

Radiant

Ok. Then please consider that a feature request for 3.4 :)

Crimson Wizard

Quote from: Radiant on Thu 12/12/2013 20:35:09
This is a bug: when Game.ChangeTranslation() encounters a problem, such as an invalid .tra file, then according to the manual it should return false. This is expected behavior, as it allows the game designer to deal with issues gracefully.

Instead, the function terminates the game when a Windows error popup ("the translation is not compatible with this game"). This is correct behavior if winsetup is used to select an incorrect translation, but not when changing it at runtime with ChangeTranslation().

What should happen if the game was changing from one custom translation to another and failed:
1. Fallback to default translation?
2. Fallback to the last selected translation?

Radiant

Well, you're trying to change something, so if that fails for any reason, the result should be no change. So if the current language is French and you're trying to switch to German and German doesn't work, it sticks with French (not switch to English or something). I think #2 would make the most sense, and the programmer can always change it to something else when the function returns false, if he wants that.

Radiant

We've had an odd issue where string formatting ceases working after playing for awhile, leading to such oddities as this one. This does not reproduce so far, unfortunately.

Code: ags

txt  (0, String.Format ("%s's whereabouts", player.name));
txt  (1, "are rarely known,");

// the function is this, but it seems to malfunction at the string.format above
function txt (int l, const string s) {
  if (l == 0) s2 = "";
  s1 = s;
  s1 = s1.Append     ("[");
  SetLabelText       (CRED1, 0, s1);
  s2 = s2.Append     (s1);
  SetLabelText       (CRED2, 0, s2);
}


Crimson Wizard

Quote from: Radiant on Mon 16/12/2013 10:46:23
Instead, the function terminates the game when a Windows error popup ("the translation is not compatible with this game"). This is correct behavior if winsetup is used to select an incorrect translation, but not when changing it at runtime with ChangeTranslation().

I did this, but I feel regrets now :-.
The AGS engine does not have a proper error dealing system, there's program abortion called nearly everywhere something unexpected happened (like passing incorrect parameters to the script function). Dealing with every case individually makes situation much worse. There need to be a general solution for this, like something I mentioned long way ago (http://www.adventuregamestudio.co.uk/forums/index.php?topic=46329.msg622693#msg622693, it is the last paragraph of the post).

Crimson Wizard

#566
Quote from: Radiant on Fri 13/12/2013 00:09:49
The SetVoiceMode() function is meant to allow an in-game switch between playing voice samples, displaying subtitles, and both. However, doing SetVoiceMode(eSpeechTextOnly) will prevent Sierra-style portrait animation from playing; this strikes me as incorrect behavior (the text is shown normally, and the portrait is shown in its mouth-closed frame).
I cannot reproduce this... is there some kind of demo I can see?
(I still have older HQ beta, which I can't access right now; does that game have this error?)

Radiant

I think so; try sliding the speech volume to zero in the control panel (doing so calls SetVoiceMode). If that didn't work, I'll get you a newer version.

Crimson Wizard

#568
Quote from: Radiant on Tue 17/12/2013 12:10:02
I think so; try sliding the speech volume to zero in the control panel (doing so calls SetVoiceMode). If that didn't work, I'll get you a newer version.
Hmm, the speech volume is always zero, because I don't have speech.vox. Yet I do not observe this bug.

PS. I have the "You'd Beta Shape Up" version.

Radiant

Hm, this is odd; I have trouble reproducing this. Apparently it only occurs after some time of gameplay, or something. I'll see if I can narrow it down for you.

Crimson Wizard

#570
Quote from: Radiant on Tue 17/12/2013 18:36:32
Hm, this is odd; I have trouble reproducing this. Apparently it only occurs after some time of gameplay, or something. I'll see if I can narrow it down for you.
Heh, actually I just tried again and had this occured.
I jumped to Chapter 2, entered the inn and spoke to woman inkeeper there EDIT: Sorry, I was mistaken, this is Hervor, the "caretaker" of the Adventure Guild. The introductory part was ok, but as soon as I chose dialog option the speech stopped animating completely.

E: Blinking animation still works though...

Crimson Wizard

#571
Hmm, Radiant, you have "game.close_mouth_end_speech_time" (aka Speech.AnimationStopTimeMargin) set to 250 (>6 seconds) as soon as player selects any dialog option while conversing to Hervor (the Adventure Guild caretaker).

Is this intentional? This is either script mistake, or engine bug that sets wrong variable. Please check dialog scripts...

Radiant

Aha. I thought that parameter was in milliseconds, because its counterpart DisplayPostTimeMs is also in milliseconds. I guess it's in frames, then?

Crimson Wizard

Quote from: Radiant on Wed 18/12/2013 01:55:54
Aha. I thought that parameter was in milliseconds, because its counterpart DisplayPostTimeMs is also in milliseconds. I guess it's in frames, then?
Yes, it is an old parameter, it's in game loops:
Quote
game.close_mouth_end_speech_time
At the end of speech text, the speech animation will stop for this number of game loops. Default 10. No affect in voice mode. 

I added "Ms" part to "DisplayPostTimeMs" name to help differentiate the units.

Radiant

Is it correct that if I call AddInventory() and NewRoom() immediately after each other, then on_event(eEventAddInventory) doesn't get called because it's overwritten by the new room call?

Radiant

Our testing reports that with the latest build from this thread, setting "[threaded]" in the config file, works fine with no stutter.

Crimson Wizard

#576
Quote from: Radiant on Wed 18/12/2013 20:27:22
Our testing reports that with the latest build from this thread, setting "[threaded]" in the config file, works fine with no stutter.
Just to clarify, it is "threaded=1" under "[sound]" category, not "[threaded]".
Engine prints one of the following to the log:
Quote
Audio thread started    -- this means threaded audio ENABLED
- OR -
Failed to start audio thread, audio will be processed on the main thread   -- threaded audio DISABLED
- OR -
Audio is processed on the main thread     -- this means threaded audio DISABLED

Radiant

Yes, that's what I meant.

Crimson Wizard

Quote from: Radiant on Wed 18/12/2013 20:42:08
Yes, that's what I meant.
Ok, great, just wanted to know for sure :).
This means JJS's fix did the trick.

Crimson Wizard

A small update:
http://www.mediafire.com/download/v6mdnueyd1cqinx/acwin1148plus_21dec2013.7z

Couple of fixes:
- A fix to OGG and MP3 files playback ending prematurely if their size is a multiple of 32 KB.
- Game.ChangeTranslation does not make game quit if the trs file is incorrect (e.g. from different game).

Log file is only written if told to. To enable:
a) add under [misc] in acsetup.cfg
Code: text

log=1

b) add "--log" to command line; also "--no-log" overrides acsetup.cfg and disables log file.

Log is saved in "Users\<Name>\Saved Games\.ags" on Vista, Win7 and Win8, and in "My Documents\My Saved Games\.ags" on WinXP.

Other platforms will have their respected paths, e.g. Linux will write to "$HOME/.ags".


SMF spam blocked by CleanTalk