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:
/// Should the drawing surface have alpha channel
bool DialogOptionsRenderingInfo.HasAlphaChannel;
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:
/// Manually marks whether the option was chosen before or not.
void Dialog.SetHasOptionBeenChosen(int option, bool chosen);
- Added extra constant to
enum eKeyCode:
eKeyNone // self-explanatory
- 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:
eSkipKeyMouseTime ,
eSkipKeyTime,
eSkipTime,
eSkipKeyMouse,
eSkipMouseTime,
eSkipKey,
eSkipMouse
- Introducing
class Speech:
/// 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;
- 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.
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
--------------------------------------------------
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 PanelsFolders: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 VersionAndroid VersioniOS VersionPSP VersionYou 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

) 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 outputEngine 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:
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:
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:
[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 codeAll here:
https://github.com/adventuregamestudioReporting bugsSince 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]