AGS 3.3.0 Release Candidate

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

Previous topic - Next topic

Crimson Wizard

AGS 3.3.0 Release Candidate




3.3.0 RC was released 27th January 2014



--------------------------------------------------
General
--------------------------------------------------


- Increased maximal Font number from 15 to 30.
- Added "Translated" property to ListBox gui control, which forces engine to translate ListBox items. Default is True. Set to False if you are using ListBox for listing savegames. NOTE: when older projects are imported, it is set to False automatically.
- Proper alpha blender for blending two 32-bit sprites with alpha channels. Added new option for gui alpha blending which turns the proper blender on. Option is named "Multiplied Translucence, Blend Source Color" - because that's what it does (better name anyone?). The old "AdditiveOpacity" option is renamed to "Additive Opacity, Copy Source Color". The default for new projects is "Multiplied Translucence, Blend Source Color". For the use of the blender in general cases (such as DrawingSurface.DrawImage function) a new setting is added in "Visual" group, named "Sprite alpha rendering style", which may be set to "Improved".
Also fixed inventory items and cursor crosshair with alpha channel not being drawn properly.
- Added new property to the DialogOptionsRenderingInfo class:
Spoiler

Code: ags

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

[close]
This property must be set it in "dialog_options_get_dimensions" function, the one where you normally define size and position of the drawing surface. Default is False.
- Added new function to the Dialog class:
Spoiler

Code: ags

/// Manually marks whether the option was chosen before or not.
void Dialog.SetHasOptionBeenChosen(int option, bool chosen);

[close]
- Added extra constant to enum eKeyCode:
Spoiler

Code: ags

eKeyNone // self-explanatory

[close]
- Added two more options for the Skip speech style: "skip by key only" and "skip by mouse only" (no timer).
- Introducing enum SkipSpeechStyle.
Defines how player may skip speech:
Spoiler

Code: ags

  eSkipKeyMouseTime ,
  eSkipKeyTime,
  eSkipTime,
  eSkipKeyMouse,
  eSkipMouseTime,
  eSkipKey,
  eSkipMouse

[close]
- Introducing class Speech:
Spoiler

Code: ags

  /// Stop speech animation this number of game loops before speech ends (text mode only)
  int  Speech.AnimationStopTimeMargin;
  /// Enables/disables the custom speech portrait placement.
  bool Speech.CustomPortraitPlacement;
  /// Gets/sets extra time the speech will always stay on screen after its common time runs out
  int  Speech.DisplayPostTimeMs;
  /// Gets/sets global speech animation delay (if using global setting).
  int  Speech.GlobalSpeechAnimationDelay;
  /// Gets/sets speech portrait x offset relative to screen side.
  int  Speech.PortraitXOffset;
  /// Gets/sets speech portrait y position.
  int  Speech.PortraitY;
  /// Gets/sets special key which can skip speech text.
  eKeyCode Speech.SkipKey;
  /// Gets/sets how the player can skip speech lines.
  SkipSpeechStyle Speech.SkipStyle;
  /// Gets/sets the style in which speech is displayed.
  eSpeechStyle Speech.Style;
  /// Gets/sets how text in message boxes and Sierra-style speech is aligned.
  Alignment Speech.TextAlignment;
  /// Gets/sets whether speech animation delay should use global setting (or Character setting).
  bool Speech.UseGlobalSpeechAnimationDelay;
  /// Gets/sets whether voice and/or text are used in the game.
  eVoiceMode Speech.VoiceMode;

[close]
- 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;


** WARNING **
Following functions and variables are now deprecated. If you have any of them in script you will likely receive compilation errors.
Either turn Backwards Compatibility mode in Global Settings ("Enforce object-based scripting" setting), or consider using corresponding property from Speech class.
Spoiler

Code: ags

void SetVoiceMode(eVoiceMode);        // use Speech.VoiceMode
void SetSkipSpeech(int skipFlag);     // use Speech.SkipStyle
void SetSpeechStyle(eSpeechStyle);    // use Speech.Style

int game.close_mouth_end_speech_time; // use Speech.AnimationStopTimeMargin
int game.speech_text_align;           // use Speech.TextAlignment
int game.skip_speech_specific_key;    // use Speech.SkipKey
int game.talkanim_speed;              // use Speech.GlobalSpeechAnimationDelay

[close]

--------------------------------------------------
Editor
--------------------------------------------------


Docking Panels.
Every panel in the editor window (such as Project Tree, Property window, sprite editor and so forth) may now be dragged from their initial position and dropped on a new place, aligned to side of screen or other panels. Panels may be joined in tabbed groups, pinned to make them stay on screen, or unpinned to make them hide when they aren't used (leaving their tab visible).
There is a new "Window" menu to control all the windows.
The layout of the panels is saved when closing AGS (to Layout.xml file), and restored when opening AGS (not including the project's documents).

Video Tutorial on using Docking Panels

Folders:
You may now create folders for characters, dialogs, inventory items, guis, rooms, scripts and views.
Added new menu items for all folders to move up/down, and the ability to drag/drop files to be before other files.

For scripts:
- Script and header files are now combined into one and can be expanded/collapsed, similar to room settings & script.
- Removed the menu option to move files up/down, this can now be done with normal drag/drop (and not only for scripts).
- Removed the "exclude script" option.
- The order of the scripts (for script dependencies) is the same as it was before, a script can use all the scripts
above it.

For rooms:
- The "Sort room by number" now sorts within folders.

Find all usages:
Added a menu item to find all usages for characters, dialogs, views, inventory items and global variables.
It won't actually find scripts that use the character id (or dialog/view id), just scripts that use the actual script name of that specific object.


Navigate (in tree):
Added a menu item for almost all document tabs, to navigate to their node on the project tree (can be useful for large projects).


Goto Line:
In script editor, pressing Ctrl+G will now open the "Goto line" dialog, you can select a line number and the editor will jump to that line. Since "Ctrl+G" was already used as a shortcut to open the global script, that shortcut is replaced with Ctrl+Shift+G (and also replaced the shortcut to open the global header from Ctrl+H to Ctrl+Shift+H for consistency).


Reload sprite from source:
In Sprite Manager right-click on a sprite and choose "Replace sprite(s) from source" command. This will re-import all the selected sprites from their source images, given they are kept in their original location.

Minor additions:
- 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).
- Added a "browse" button to the "Create in folder" field in the Start New Game wizard.
- Sprite Import window is now resizable.
- Force the intellisense cache refresh before showing autocomplete list.

Editor Plugin API
- Added property for getting playable character.
- Added property for getting ScriptsAndHeaders collection.
- Added methods for refreshing project's tree.
- Added method for refreshing property grid.
- Added methods for controlling output panel.

Bug fixes:
- Editor no longer allows to create more game items than engine supports (fonts, cursors, dialogs and inventory items), which could result in crashes in Editor or running game.
- Fixed incorrect selection of a new sprite, imported while the "Select sprite" dialog is open.
- Fixed sprite lookup in folders, differing only by name case;
- Set last script's save time at the save end rather than before the save, in case file writing takes significant time.
- Fixed overlapping labels in the Editor Preferences dialog.
- Fixed "savegameindex[]" array was declared with incorrect size in script (20, while it must be 50).


--------------------------------------------------
Engine
--------------------------------------------------


Ports:
There are now following several engine ports. While they are not included with this package, they may be counted as a part of 3.3.0 release too. For more information on how to install them and play games please visit following forum threads:

Linux Version
Android Version
iOS Version
PSP Version

You may also check JJS's Daily builds here: http://jjs.at/daily/

WinSetup was changed:
- Removed "Replay" option, for it was unused for years.
- Moved all secondary options to "Advanced" section.

Backward Compatibility:
Engine is now able to run AGS games from version 2.50 and higher. This was done mainly for ports users, because they cannot run games in their original form, but Windows users may find this useful too. For example, you may now run many older games with new setup settings (such as Direct3D renderer and scaling filters).
How to do this:
1. Go to AGS program folder and find 'acwin.exe' file. This is a pure engine program (without any game attached).
2. Copy this acwin.exe to the game's folder (where you have corresponding game's *.exe).
3. You cannot use original winsetup.exe to run new setup, because that will run original game setup. Therefore you should run acwin.exe with "--setup" parameter. This may be done from command line. If you don't know how to use command line in Windows (and don't want to bother learning  :tongue:) download this batch file: http://www.mediafire.com/view/?66373m22i8pa6b8.
Simply put it to the same game folder and run every time you want to change new setup settings.
For the curios ones: the batch file is just a text with few Windows commands, it runs acwin.exe, sending it "--setup" parameter string.
4. Run acwin.exe to run the game on the new engine.
Most games allow to know the current engine version by pressing Ctrl+V. New engine is version 3.3.0.1150, if you see this in the version info, this means you did everything correctly. Also, new engine writes a log file when it runs a game (see below).

More scaling filters:
Added x5, x6, x7 and extreme one x8 nearest neighbour filters. Direct 3D renderer may use both normal and anti-aliased variants of those.
Added "Max nearest-neighbour filter" option to filter list in winsetup. If this option is selected, AGS will choose the maximal possible scaling filter your graphics driver supports.

Log output
Engine can now write down a log file when running the game. The feature has limited use currently, but the file may sometimes contain useful information if any errors or unexpected behavior happened in game.
Logging is enabled either by setup file, by putting this line under "[misc]" category:
Code: text
log=1

or "--log" to command line; also "--no-log" overrides setup file and disables logging.
Log file is called "ags.log" and it is saved in "Users<Name>Saved Games.ags" on Vista, Win7 and Win8, and in "Documents and Settings<Username>My DocumentsMy Saved Games.ags" on WinXP.
Other platforms have their respected paths, e.g. Linux will write to "$HOME/.ags".

Improvements
- Improved character walking at 60%-80% scaling.
- Game.ChangeTranslation() script function no longer causes game to quit if the translation file belongs to different game or has unknown format.
- The game automatically fallbacks to Software graphics driver if the Hardware one could not run or initialize gfx mode for any reason.
- Threaded audio support. This feature has both pros and drawbacks, and is not currently recommended to be used for your project on desktop platforms by default. You may enable it by manually adding an option in "sound" section of acsetup.cfg:
Code: text

[sound]
threaded = 1

Threaded audio may sometimes increase perfomance on low-end systems, but reportedly causes audio desync with the rest of the game on particular systems (such as WinXP): this also makes it not fully compatible with Pamela lip-sync feature at this moment.
- Added two "overriding" options for game config:
Code: text

[override]
multitasking=0/1
os=dos/win/linux/mac

* Multitasking - overrides game's multitasking mode. Useful if game has lengthy unskippable sequences. Keep in mind that this will lock game in the given mode and make it ignore script commands that change it.
* Os - overrides System.OperatingSystem return value. Useful for ports when game disables some feature for the system because it thinks it's not supported.
- For every "long" command line argument the traditional GNU form (--arg) is supported, for example "--windowed", "--letterbox", etc.
- Windows version of the engine will now write crash dump on "out of memory error" to help diagnose the situation if this occured due bug in the engine.

Bug fixes
- Fixed side-borders that were not applied properly at newer (larger) widescreen resolutions.
- Fixed crash that occured when ListBox.GetItemAtLocation() is called from repeatedly_execute_always() just before the list box is about to be drawn on screen for the first time.
- Fixed custom dialog options clickable area by correcting its horizontal coordinate range.
- Fixed error which took place when user restored a game saved with background music playing, in case the music is not found in resources anymore.
- Fixed audio behavior during cutscenes (error caused audio volume to reset to default). Also AudioChannel.Volume will now return correct value when called from skipped cutscene.
- Stopped play.close_mouth_end_speech_time variable from making effect in voice mode and Sierra-style speech (which it wasn't supposed to do).
- Fixed return value of the AudioChannel.PositionMs for MOD/XM clips;
- Fixed division by zero which occured if there was a 1px tall walkable area (a precisely straight horizontal line) with vector scaling applied.
- Fixed OGG speech ending prematurely if the audio file size is a multiple of 32 KB.

AGS Source code
All here: https://github.com/adventuregamestudio


Reporting bugs
Since this is still beta, please report any problems right in this thread.
When doing so, provide following information:
1. Version of AGS.
If you run engine port, the date of build, or date of last source change - if you were building engine yourself from the sources.
2. What OS do you run AGS on.
3. What game(s) you had problems with (if you were running a game with the new engine).
4. IMPORTANT. Please, explain what were you doing and what happened. Don't say "it does not work", say "I pressed this button and it did this instead of that", or "I run that game and it crashed in the first room", etc. Don't be afraid of being verbose, sometimes the answers are in little details.
5. If you had any error messages in the editor or running the game, please mention them by copying their text. On Windows - if a standard Windows message box appeared, it is still possible to copy the text to clipboard by hitting Ctrl+C (even though the text is not visibly selected, it should still able to copy - this is how it works for message boxes).
6. If you had any errors in game, which is available in public (i.e. not your project), please keep a saved game made somewhere close to the problematic moment, so that we could use it to see what you saw.
7. If you had a crash running Windows version of the engine, and there was a message box telling you - "An error file CrashInfo.dmp has been created. You may be asked to upload this file when reporting this problem on the AGS Forums." - please find a CrashInfo***.dmp file in the game folder and keep it somewhere for a while (we may use it to know details of the crash).[/code]

Joseph DiPerla

Awesome job Crim! And everyone else! Thanks for all your hard work. Its well appreciated. Just a little note, if you are looking for an updated version of AGS (V 3.30) for Android, check out this thread: http://www.adventuregamestudio.co.uk/forums/index.php?topic=44768.msg636449832#msg636449832

Maybe later tonight I may do a build to include the changes from today. Either way, these are daily/semi-daily builds. Last one was compiled on 4/3/13. Again, I take no credit for the port. I am simply downloading from the Git and Compiling the engine for everyone.

Thanks Again CW, CJ, JJS, Tzachs and everyone else I am forgetting!
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

selmiak

So, will importing a game made with one of the previous versions into 3.3.0 make it impossible to open it again in an older version?

Quote from: Crimson Wizard on Thu 04/04/2013 19:16:28

This looks really cool. What could be really usefull would be the option to rename Character and rename all Usages in Scripts.
Also for all other objects and hotspots and whatnot, especially audiofiles. I rename audiofiles like I change my socks. Actually even more.


Crimson Wizard

Quote from: selmiak on Thu 04/04/2013 22:54:05
So, will importing a game made with one of the previous versions into 3.3.0 make it impossible to open it again in an older version?
I am afraid that yes, there is some change to project format (probably related to folders feature, tzachs should know better).
But there might be ways to downgrade project in critical need. The project file is just an XML document, one could learn the differences between two formats and edit the project manually.

Snarky

Well done, open source team!

I'll definitely download and start playing with this beta over the next few days. The editor improvements sound class! (I also second Selmiak's call for a project-wide rename feature. I change my mind about variable names constantly, and always worry about breaking references.)

Crimson Wizard

Quote from: Snarky on Fri 05/04/2013 11:47:07
I'll definitely download and start playing with this beta over the next few days. The editor improvements sound class! (I also second Selmiak's call for a project-wide rename feature. I change my mind about variable names constantly, and always worry about breaking references.)
Yes, I too would support this; if Tzach or someone else could do that in reasonable time, we could add it to 3.3.0, otherwise it may be planned for next release.

Other than that, I would like to have Calin's "reload sprite from source" feature added here.

selmiak

Quote from: Crimson Wizard on Fri 05/04/2013 12:16:49
Other than that, I would like to have Calin's "reload sprite from source" feature added here.

+1

better wait a bit more for the final release and have it in than waiting even longer for the next editor version that might have it in :)

Peder 🚀


tzachs

Quote from: Snarky on Fri 05/04/2013 11:47:07
(I also second Selmiak's call for a project-wide rename feature. I change my mind about variable names constantly, and always worry about breaking references.)

Well, you have project wide "Replace All" which is pretty close to rename (if you use long and descriptive names then 90% of the time it will work every time)... Rename is harder to program since you have to know the context of what you're renaming and there are a lot of edge cases.

cat

Wow, great! I'll definitely try that one.

About renaming: I had to rename a character once (with 3.2.1) and search-replaced it all over the project. However, this didn't get me the occurencies in the dialog topics. I only found that one later on :( Could this be included in the search?

Stee

<Babar> do me, do me, do me! :D
<ProgZMax> I got an idea - I reached in my pocket and pulled out my Galen. <timofonic2> Maybe I'm a bit gay, enough for do multitask and being romantical

Cerno

Great news!

I am especially thrilled about the subfolder extensions (I know, the little things), finally I can stop naming my dialogs dPrlgBlahBlah (Prlg for Prologue) to organize them. Neato!

Thanks to everyone who had a hand in this.

Quote from: selmiak on Fri 05/04/2013 15:33:33
Quote from: Crimson Wizard on Fri 05/04/2013 12:16:49
Other than that, I would like to have Calin's "reload sprite from source" feature added here.
+1
+1 as well. This would be so helpful for replacing whole animations. :)
123  Currently working on: Sibun - Shadow of the Septemplicon

AGA


Igor Hardy

#13
The new engine... Could anyone that tested a number of games with it, tell me how its performance compares to the old one?

Has the way the graphics are rendered/displayed/interpreted changed in any significant way?

tzachs

Quote from: cat on Sat 06/04/2013 13:14:35
About renaming: I had to rename a character once (with 3.2.1) and search-replaced it all over the project. However, this didn't get me the occurencies in the dialog topics. I only found that one later on :( Could this be included in the search?
Yes, dialogs are included in this (and the previous) version.

bush_monkey

I just converted my game from V2.7 to 3.2! I'm glad I did this as this new beta version sounds awesome. Downloading now.

Joseph DiPerla

#16
Just Tried Running the Supergirl Game from 2005 (Using AGS 2.62 it seems) and I got this(Note, the game works perfectly with AGS for Android):
---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x004181C7 ; program pointer is +3330, ACI version 3.3.0.1130, gtags (0,1)

AGS cannot continue, this exception was fatal. Please note down the numbers above, remember what you were doing at the time and post the details on the AGS Technical Forum.



Most versions of Windows allow you to press Ctrl+C now to copy this entire message to the clipboard for easy reporting.

An error file CrashInfo.dmp has been created. You may be asked to upload this file when reporting this problem on the AGS Forums. (code 0)
---------------------------
OK   
---------------------------


Thoughts on that? Thanks. And yes, I know, SuperGirl.... LOL I am using Win 7 64 Bit btw... Here is the download for the game if you need it: http://adventurestockpile.com/sg.zip


ONE MORE EDIT:

When I run ACWIN --Setup, and then save and run the configuration, it gives me the following error message as well: Unable to determine startup path: GetShortPathNameW failed. The specified game file might be missing. Then it runs the game and thats when the message above pops up.
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

Crimson Wizard

#17
DiPerla, one question: what is in the folder with the game? Are there any extra files, like acsprset.spr for example?
The error place is very similar to what happens when you have special editor files in the same directory with the game. The engine loads sprite data from standalone acsprset.spr instead of one, packed in game, and fails to find proper sprites.
That's my guess, but please give me some info.
I was able to run game up to first room without any problems.

Regarding second problem, what is the path to game's folder?

Crimson Wizard

Quote from: Ascovel on Sun 07/04/2013 10:07:33
The new engine... Could anyone that tested a number of games with it, tell me how its performance compares to the old one?

Has the way the graphics are rendered/displayed/interpreted changed in any significant way?

Oops, somehow missed this one.
Graphics changed in no way since 3.2.1.
Regarding perfomance, it may be slightly slower on script heavy games, but the difference is almost negligible on PC, we had some issues on PSP related to this. If that still would be problem, I think it is possible to increase the speed, just did not want to spend time on this without actual need.

Joseph DiPerla

Yeah, you were right CW. However, just so you know, even though the game works and runs flawlessly, I am still getting the "Unable to determine startup path: GetShortPathNameW failed. The specified game file might be missing. " But once I click ok, it goes to the game and runs well.
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

SMF spam blocked by CleanTalk