Releases: adventuregamestudio/ags
v4.0.0.28 (AGS 4.0 Alpha 32)
This is mainly a bug fixing release.
Editor:
- When run with a "/compile" command-line argument, Editor will automatically recreate sprite file from sources (if possible) without asking a question. This helps automatic game builds.
- In script mark Overlay's factory methods as
$AUTOCOMPLETENOINHERIT$, which prevents them from appearing in AnimatedOverlay's autocomplete. - Fixed Characters and InventoryItems loosing their ScriptModule property when upgrading from 3.x project.
- Fixed Room and room objects's interactions not imported when upgrading from 3.x project.
- Fixed GUI OnClick event property is not written into the compiled game.
- Fixed Room's FaceDirectionRatio property not written into the compiled game.
- Fixed room masks of certain peculiar sizes getting corrupted.
- Fixed a project tree's item is activated without intent when user double clicks to open a folder, and project tree scrolls down so that a different item appears under mouse cursor.
- Fixed AudioClip's label missing ID after clip is renamed in the project explorer.
- Fixed unhandled exception in the "Change ID" dialog occuring if the item has ID greater than the total number of items. This situation may occur if the project file was modified by hand.
- Fixed copy-pasted gui controls always get linked to a GlobalScript, and not a script module of their parent GUI.
- Fixed that if a room editor is opened, and user changes one of the present Character's RealName, such Character becomes impossible to select in the room.
- Fixed Walk-behind's baseline is not drawn in the room editor if Zoom is less than 100%.
- Fixed game plugin's extra dependencies not found in the Compiled/Windows folder when game is run from the Editor.
Script API:
- Added Overlay.AutoSize, Overlay.ScaleX, ScaleY properties and SetScale() function.
Engine:
- Fixed object event tables ignoring the ScriptModule property set in game file.
- Fixed GUI's ScaleX,Y properties written incorrectly in saves.
- Fixed AnimatedOverlays not removed when the base overlay is removed, and not removed automatically on room unload / game restore, which would usually lead to program errors.
- Fixed inventory cursor hotspot crosshair not being drawn properly.
- Fixed a mistake in registering of the script exports, could lead to linking errors, in particular when loading scripts compiled by a 3.x compiler.
- Fixed Dialog.Start() and Dialog.Stop() not working when called from dialog script.
- Fixed a program crash occuring when restoring modified room masks from game's save.
- Fixed a potential error occuring when a animating object or character was assigned a view's loop without any frames (possibly a regression since some previous patches).
- Fixed ListBox.FillDirList() and File.GetFiles() not being able to find files in subdirectories, if a search pattern has relative parent path.
- Fixed a mistake in ListBox.FillDirList() and File.GetFiles(), which could prevent files from different places (like from game package and game directory) to be merged in a single list when using
$DATA$location token. - Fixed ListBox.FillDirList() and File.GetFiles() listing files from within the game package with their relative parent paths. It is supposed to list only filenames, for consistency with the regular files on disk.
- Fixed ListBox.FillDirList() and File.GetFiles() not sorting the filenames alphabetically properly if these names contain non-latin unicode characters.
- Fixed ListBox.FillSaveGameList() always sorting saves by the filetime, disregarding the function parameters.
- Fixed Dictionary and Set not sorting their items properly if the keys contain non-latin unicode characters.
- Fixed a potential error that may occur when a temporary dynamic object is created inside the script function's parameter list, but there's a blocking action or a Wait call between when it's created and when it's passed into the function.
Example case: "func( WaitAndReturnValue(), String.Format(...) )". - Fixed another rare case when a WAV file can get stuck in the end of the playback forever.
- Fixed SetGameOption(OPT_PORTRAITSIDE) not always working correctly.
- Fixed restoring a save with active screen overlays could break future overlay creation.
v3.6.3.11 - Beta 11
This is a hotfix release, made because of a couple of bad regressions found in the recent Beta update.
Editor:
- In translation source syntax changed annotation key-value separator from '=' to ':' (this affects
$SECTIONand$PARSERWORDannotations). - Fixed incorrect sprite import which may occur with the source images of particular sizes (a regression since 3.6.3.10).
- Fixed that room objects which have a non-existent sprite assigned to them are not drawn; should display placeholder sprite 0 instead.
- Fixed translation update not carrying existing entry annotations over.
Engine:
- Fixed restoring a save with active screen overlays could break future overlay creation (a regression since 3.6.3.10).
v3.6.3.10 - Beta 10
Contains all fixes from 3.6.2 Patch 9.
Own changes:
Common:
- Increased number of Audio Channels to 32 (was 16).
Editor:
- In General Settings added "Text language" option, that lets specify a base game language. This option is used whenever engine needs to identify the game text as being of a particular language or using particular alphabet (e.g. alphabetic string sorting).
- In General Settings added "Display single dialog option", which corresponds to the previously existing "game.show_single_dialog_option" variable in script.
- In General Settings added "Translate Text Parser" setting, which makes Editor export Text Parser's words dictionary to the translation file.
- Allow to rename custom properties in the Schema, in which case the Editor will process all the objects in all game and adjust property names there.
- Custom Properties Schema dialog now has a Cancel button which lets to revert any changes.
- Text Parser pane now allows to enter multiple comma-separated words per entry, which may be a more convenient way to create list of synonyms.
- Translation source is now divided on sections, using "//$SECTION" markers, where a section is created for each script module, each room, and each category of global objects.
- When updating a translation source, obsolete entries will now be removed, and if there's already a translated line present, then marked with a "//$OBSOLETE" tag for user to notice them.
- Translation compiler now supports "Language" setting, with the same meaning as the one in General Settings, but associated with the particular translation.
- Translation compiler supports "AutoTranslateParserSaid" setting, that, if enabled, instructs engine to automatically translate sentence patterns in Parser.Said().
Script API:
- Moved eAlignHas* constants from Alignment to AlignmentMask enum.
- Added two new options for StringCompareStyle: eCaseInsensitiveLocaleAware and eCaseSensitiveLocaleAware. These two "LocaleAware" styles compare strings using proper alphabetic rules, as opposed to comparing character code values. For example, with standard styles the accented letter 'À' is positioned after letter 'Z'. With locale aware style it is positioned after letter 'A'. But the exact result depends on the "Text language" setting set either in General Settings or current Translation.
- Added HitTestOptions enum with a eHit_Any and eHit_Interactable constants.
- For each GetAtScreenXY and GetAtRoomXY function added an optional "hitOptions" parameter, that lets tell whether to detect only clickable/enabled objects, or all of them regardless.
- Deprecated Character.AnimationVolume and Object.AnimationVolume, and added AudioVolume property to these types as a replacement.
- Added Character.AudioPanning and AudioSpeed properties, and Object.AudioPanning and AudioSpeed.
- Added Character.Inventory[] and InventoryCount readonly properties that let iterate all items that character currently holds, including item duplicates (if they are allowed).
- Added ListBox.SortItems() function.
- Added Mouse.IsAnyButtonDown().
- Added Utils.SortStrings(), Utils.SortInts() and Utils.SortFloats() array sort functions.
- Added IsAnyKeyPressed() function.
Engine:
- Number of individual items (including item duplicates) that a Character can hold is now 32k (was 500).
- Changing Character.InventoryQuantity[] now automatically adds and removes items from the Character's list of items; there's no need to call UpdateInventory() anymore.
- Inventory Item's hotspot now treats 0,0 value exactly, and not as "centered in graphic".
- Inventory Item's hotspot marker can now be drawn outside of the cursor graphic's boundaries.
- Text Parser supports translation and unicode strings.
- Parser.Said() does automatic translation of the sentence pattern (if respective option is enabled in the current translation).
- Fixed InventoryWindow not getting redrawn immediately if one of the item's has a dynamic sprite assigned as a graphic and that dynamic sprite gets edited (like, drawn upon).
- Fixed SetGameOption(OPT_PORTRAITSIDE) not always working correctly.
v3.6.2 - P9 (3.6.2.19)
Editor:
- Don't issue a warning if the script function of the standard interaction name is linked to a different event (e.g. "Character_Look" linked to a "Interact" event).
- When run with a "/compile" command-line argument, Editor will automatically recreate sprite file from sources (if possible) without asking a question. This helps automatic game builds.
- Fixed a project tree's item is activated without intent when user double clicks to open a folder, and project tree scrolls down so that a different item appears under mouse cursor.
- Fixed AudioClip's label missing ID after clip is renamed in the project explorer.
- Fixed unhandled exception in the "Change ID" dialog occuring if the item has ID greater than the total number of items. This situation may occur if the project file was modified by hand.
- Fixed copy-pasted gui controls always get linked to a GlobalScript, and not a script module of their parent GUI.
- Fixed that if a room editor is opened, and user changes one of the present Character's RealName, such Character becomes impossible to select in the room.
- Fixed Walk-behind's baseline is not drawn in the room editor if Zoom is less than 100%.
- Fixed game plugin's extra dependencies not found in the Compiled/Windows folder when game is run from the Editor.
Engine:
- Fixed a potential error occuring when a animating object or character was assigned a view's loop without any frames (possibly a regression since some previous patches).
- Fixed ListBox.FillDirList() and File.GetFiles() not being able to find files in subdirectories, if a search pattern has relative parent path.
- Fixed a mistake in ListBox.FillDirList() and File.GetFiles(), which could prevent files from different places (like from game package and game directory) to be merged in a single list when using
$DATA$location token. - Fixed ListBox.FillDirList() and File.GetFiles() listing files from within the game package with their relative parent paths. It is supposed to list only filenames, for consistency with the regular files on disk.
- Fixed ListBox.FillDirList() and File.GetFiles() not sorting the filenames alphabetically properly if these names contain non-latin unicode characters.
- Fixed ListBox.FillSaveGameList() always sorting saves by the filetime, disregarding the function parameters.
- Fixed Dictionary and Set not sorting their items properly if the keys contain non-latin unicode characters.
- Fixed a potential error that may occur when a temporary dynamic object is created inside the script function's parameter list, but there's a blocking action or a Wait call between when it's created and when it's passed into the function.
Example case: "func( WaitAndReturnValue(), String.Format(...) )". - Fixed another rare case when a WAV file can get stuck in the end of the playback forever.
v4.0.0.27 (AGS 4.0 Alpha 31)
This is 4.0 Alpha 31.
This update is meant primarily to sync with the recent 3.6.3 Beta, only adds few improvements of its own this time.
Contains all the additions and fixes from 3.6.3 Beta 8 and 3.6.3 Beta 9 (excepts ones related to backwards compatibility).
Own changes:
Editor:
- Added GraphicAnchor and GraphicOffset properties to Characters and Room Objects.
- Optimized operation of rescaling room masks when importing a background of different size, lowering used memory spike.
- Restored applying DefaultMaskResolution setting to new rooms. This was dropped at some point in the past updates, by mistake.
Engine:
- Fixed Character could keep turning around after ordered StopMoving or FaceDirection.
- Fixed engine crashing if user closed the game in the middle of the script execution.
v3.6.3.9 - Beta 9
This is 3.6.3 Beta 9.
This update shares some fixes with 3.6.2 P8
Editor:
- All input fields that allow decimal values with a fractional part now use a dot ('.') separator regardless of the local system settings. This is done primarily to make it easier to share values between property fields and script.
- Fixed a potential crash when saving game after adding or modifying a sprite.
- Fixed Editor treating custom properties names as case-sensitive when loading them from the project file, although they are considered case-insensitive everywhere else.
- Fixed deleted custom property values were remaining in objects data, apparently forever (they were not visible, unless you re-add the property under same name).
- Fixed "dialog_request" not being added automatically to GlobalScript if it's missing. (Regression since previous 3.6.3 Beta.)
- Fixed Editor resizing its own application window instead of Help window when Help->Index or Help->Contents menu command was ordered by user.
Script API:
- Added DrawingSurface.Valid readonly property.
- Added Game.IsSpriteDynamic[] and TopSpriteNumber readonly properties.
- Added Game.InventoryCursorHotspotGraphic, InventoryCursorHotspotColor, InventoryCursorHotspotCrossColor and UseActiveInventoryGraphicForCursor properties.
Engine:
- DynamicSprite.CreateFromFile() and SaveToFile() functions now support loading and saving 32-bit BMP files with alpha channel.
- Fixed characters and room objects scaling not being updated while the cutscene is being skipped. (Regression in 3.6.2.)
- Fixed user script functions that match the existing engine API would not get registered and not called in script (engine functions get called instead). NOTE: such situation may occur if certain deprecated engine API functions were disabled during compilation, and user script have declared functions with names identical to these. (Regression in 3.6.2.)
- Fixed ListBox.FillDirList() and File.GetFiles() not finding any files if request was made to search right in the game's directory. (Regression in 3.6.2, or possibly earlier version)
- Fixed inventory cursor not updated immediately if OPT_FIXEDINVCURSOR option is set.
- Fixed that DrawingSurface didn't register when its source image (such as a dynamic sprite or a room background) gets unavailable, which could led to a invalid memory access would user script continue to operate this DrawingSurface object.
- Fixed a potential script interpreter error occuring after the closing of dialog options using custom rendering.
- Fixed a potential script interpreter error occuring if dynamic sprite was deleted prior releasing of its drawing surface object.
v3.6.2 - P8 (3.6.2.18)
This is a 3.6.2 Patch 8.
Editor:
- All input fields that allow decimal values with a fractional part now use a dot ('.') separator regardless of the local system settings. This is done primarily to make it easier to share values between property fields and script.
- Fixed Editor treating custom properties names as case-sensitive when loading them from the project file, although they are considered case-insensitive everywhere else.
- Fixed deleted custom property values were remaining in objects data, apparently forever (they were not visible, unless you re-add the property under same name).
- Fixed "dialog_request" not being added automatically to GlobalScript if it's missing. (Regression since 3.6.2 Patch 7.)
- Fixed Editor resizing its own application window instead of Help window when Help->Index or Help->Contents menu command was ordered by user.
Engine:
- Character and object scaling properties, and auto-tracking Camera positions will now be updated extra time prior to "Room Before Fade-in" and "late_repeatedly_execute_always" events. This is done to ensure that user scripts can read proper up-to-date values during these events.
- Fixed characters and room objects scaling not being updated while the cutscene is being skipped. (Regression in 3.6.2)
- Fixed user script functions that match the existing engine API would not get registered and not called in script (engine functions get called instead). NOTE: such situation may occur if certain deprecated engine API functions were disabled during compilation, and user script have declared functions with names identical to these. (Regression in 3.6.2)
- Fixed ListBox.FillDirList() and File.GetFiles() not finding any files if request was made to search right in the game's directory. (Regression in 3.6.2, or possibly earlier version)
- Fixed inventory cursor not updated immediately if OPT_FIXEDINVCURSOR option is set.
v3.6.3.8 - Beta 8
This is 3.6.3 Beta 8
Contains all fixes and additions from v3.6.2 Patch 7
Own changes:
Editor:
- In General Settings added Translation settings: "Include script texts with prefix", "Exclude script texts with prefix" and "Exclude script function calls", that let configure selection of the script texts which are added to translation file.
- Added property TextOutlineColor to GUI Button, Label, ListBox and TextBox controls.
- Added Custom Properties node in the Project Explorer.
- Added commands for importing & exporting Custom Properties Schema.
- Custom Properties Schema window and Global Variables list now support different sorting orders, requested by clicking on the table column headers.
- Custom Properties Schema now lets specify whether the String property value's should be added to Translation file, or not.
- View preview now refers to the game's default FPS setting when displaying animation.
- View preview lets to optionally play frame sounds.
- Properties Grid now has a context menu which lets copy Property's Name or Value to clipboard.
- "Go to Definition" command in script editor now works for Room elements too.
Also, "missing event function" warnings support double click to go to event pane for Rooms and Room elements as well. - Implemented performance optimization for Translation update process.
- Translation compiler now supports "Font override" settings, that let configure custom font overrides for the given Translation file.
Script API:
- Added Button.TextOutlineColor property.
- Added Button.IsHighlighted and IsPushed readonly properties.
- Added Character.IdleDelay and Character.IdleTime.
- Moved newest Dialog properties related to dialog options, which were previously added in 3.6.3 dev version, to the new struct DialogOptions.
- Added DialogOptions.HasCustomRender, ItemCount, ItemOptionID, ItemX, ItemY, ItemWidth and ItemHeight readonly properties that let find out the number and location of dialog option items on screen.
- In DynamicSprite.ChangeCanvasSize() function made "x" and "y" parameters optional.
- Added Label.TextOutlineColor property.
- Added ListBox.TextOutlineColor property.
- Added TextBox.TextOutlineColor property.
Engine:
- Character and object scaling properties, and auto-tracking Camera positions will now be updated extra time prior to "Room Before Fade-in" and "late_repeatedly_execute_always" events. This is done to ensure that user scripts can read proper up-to-date values during these events.
- Ensure that no other events or script callbacks are run in between "Room Before Fade-in" and "Room After Fade-in". Previously it was possible to have "repeatedly_execute_always" function run once between them, and also certain Region's events could run if player character appeared standing on one when entering the room.
- Speech skip key will also apply to skipping Display messages.
- Support for "Font overrides" instructed by the loaded Translation.
- Added "enabled" config option to "mouse" section. It's on by default, but when off, this option tells engine to ignore the real mouse device completely, after which the in-game cursor may only be moved by the respective script commands.
- Added "new_key_mode" config option to "override" section, that lets force the new key handling mode while running old games.
- Added "smooth_walk" config option to "override" section, that allows smooth walk transitions if running old games (this feature may cause glitches in some of the old games's scripts, so it's normally disabled for them.
- Fixed SetTimer() not allowing to stop the active timer. (Regression in 3.6.3 Beta)
v3.6.2 - P7 (3.6.2.17)
This is a 3.6.2 Patch 7.
Editor:
- Restore AutoComplete showing static struct members for the struct's instances. Static members were supposed to be shown for instances too, unless they are tagged by
$AUTOCOMPLETESTATICONLY$marker in script. (Broken in earlier 3.6.2 patches) - Fixed bad file created when the new room template is overwriting existing one.
- Fixed editor was not loading any script changes done externally when compiling the game.
- Fixed Mouse Cursors having "Character" as a type name displayed in the property grid's title.
Engine:
- Try initialize a "dummy" audio driver if other known drivers failed. This will not make player hear anything, but prevents typical script errors which might occur when the audio playback is not created.
- Optimize DynamicSprite.ChangeCanvasSize() and Crop() functions to not recreate a bitmap in case the sprite's size does not actually change.
- Improved "--loadsavedgame" command-line option. Allow to pass a save slot number instead of a exact file name as an argument, and try to find the file both in the game's own directory and saves folder.
- Fixed SetRestartPoint() was writing a save immediately instead of waiting until the current script ends, as it should. (Regression in 3.6.2)
- Fixed a error in the engine if there was any blocking action run in game_start(). (Regression since one of the previous 3.6.2 updates)
- Fixed character, who was facing a diagonal loop, unexpectedly switching to an orthogonal loop after idle animation, if the idle view has only 1 frame in its diagonal loops.
- Fixed a rare case when a character would interrupt its continuous idle animation when commanded to walk, even though no actual walk takes place, because the character is either at destination or too close to destination for making a step.
- Fixed engine was printing "character stop moving" into the log unnecessarily in some cases.
- Fixed DynamicSprite.Crop() was letting to "crop" to an invalid region of a source image.
Compatibility:
- In pre-3.6.2 games don't snap a character to a walkable area if it stopped moving while turning on a spot. This behavior was accidentally required in some very old games to keep character positions correct.
v4.0.0.26 (AGS 4.0 Alpha 30)
Contains all the additions from 3.6.3 Beta 4, 3.6.3 Beta 5, 3.6.3 Beta 6 and 3.6.3 Beta 7 (excepts ones related to backwards compatibility).
Own changes:
Editor:
- When upgrading older projects, Editor will replace old-style linebreak ('[') in string properties (Label.Text and similar).
- Fixed CursorEventIndexer property must not be displayed for the user.
- Fixed script function suffixes generated for various GUI events.
Script API:
- Added GraphicAnchorX, GraphicAnchorY, GraphicOffsetX and GraphicOffsetY properties to Character, Object and Overlay types.
- Added Character.ViewAnchorX, ViewAnchorY, ViewOffsetX, ViewOffsetY readonly properties, that report current effective graphic anchor and offset (may be dictated either by the common GraphicAnchor and GraphicOffset properties, or LockView* functions).
- Added Character.LockViewAnchored() function.
- Character.LockViewAligned now accepts Alignment parameter instead of HorizontalAlignment.
Engine:
- All the object interaction events triggered by a script function call will now run immediately, as opposed to being scheduled to run after the current script finishes. This refers to function calls such as ProcessClick and RunInteraction, and also to functions which trigger on_event callback, such as AddInventory.
- Fixed AnimatedOverlay.CreateRoomAnimated() was creating a screen overlay instead.
- Fixed Overlay.HasLightLevel property was not registered correctly, causing script linking errors.
- Fixed Overlay.TintLuminance property return value.