Releases: adventuregamestudio/ags
v3.6.1 - P9 (3.6.1.31)
This is a 3.6.1 Patch 9.
Editor:
- Fixed dragging an item to a folder in Project Explorer might cause that item to visibly appear in a wrong folder, if there are folders which name differ only in letter case.
Engine:
- Fixed Character.Animate() could cause game to error reporting "invalid loop" if this character was idling at the time, and Character.LockView() was not called prior to Animate(). (This is a regression in 3.6.1)
- Fixed inventory cursor hotspot (crosshair) not drawn properly over item sprites with alpha.
OSX:
- Fixed location of global config file: was in game installation directory, now in "Library/Application Support/uk.co.adventuregamestudio".
v4.0.0.13 (AGS 4.0 Alpha 17)
This is AGS 4.0 Alpha 17.
Contains all the new features and fixes from 3.6.2 Beta 5 (excepts ones related to backwards compatibility).
Own changes:
Editor:
- Fixed incorrect default values of GUI color properties (BackgroundColor, etc). This is a regression in 4.0 Alphas since we support full 32-bit color range values.
- Fixed default value of ListBox's SelectedBackgroundColor is being treated as "transparent", for the same reason.
Scripting:
- May omit struct's name when addressing a static member from within a struct's member function.
Script API:
- Added Game.RoomCount, RoomNumbers[] and RoomNames[] properties.
- Added Room.Number and Name properties.
Engine:
- Fixed program exception when Character.AddWaypoint() is called in script.
v3.6.2 - Beta 5
Editor:
- Fixed a "unterminated string" error in Dialogs was not pointing to the actual error location.
- Fixed a possible "index out of range" exception that may occur while user types a function declaration (a regression in previous 3.6.2 Beta).
Script API:
- Changed eEventGUIMouseDown and eEventGUIMouseUp events to receive click position in GUI-relative coordinates.
- Renamed File.ReadBytes() and WriteBytes() to ReadRawBytes() and WriteRawBytes() respectively, in sake of consistency with other File functions.
- Added File.ReadFloat() and WriteFloat() that safeguards the written value with a tag.
Engine:
- Increased the cap of simultaneously loaded scripts to 1024 (this includes all regular script modules, a single active dialog script, and a single active room script).
- Character.FollowCharacter() can now have a distance parameter up to 32766 (was limited to 255).
- Ensure that the objects with identical z-order (baseline) always keep same relative sort order when being drawn (note: engine does not guarantee a predefined order, only a persistent one).
- Fixed inventory cursor's crosshair hotspot was drawn incorrectly if active item's sprite has a alpha channel.
Engine Plugin API:
- Added IAGSEngine.CreateDynamicArray(), which lets plugins to create dynamic arrays.
- Added IAGSEngine.GetDynamicArrayLength() and IAGSEngine.GetDynamicArraySize(), which tell the passed array object's number of elements, and total size in bytes respectively.
v4.0.0.12 (AGS 4.0 Alpha 16)
This is AGS 4.0 Alpha 16.
Contains all the new features and fixes from 3.6.2 Beta 4 (excepts ones related to backwards compatibility).
Own changes:
Editor:
- Added Flip property to View Frame, replacing a boolean Flipped property. The new property supports all 3 flip variants: horizontal, vertical and both at once.
- Fixed certain errors like "not terminated string" in Dialog Scripts did not report correct Dialog and line, making it difficult to find the cause of mistake.
Compiler:
- Fixed function bodies mistakenly declared with "import" keyword could cause program memory corruption during compilation.
Scripting:
- When calling a function you may specify parameter names like "name1: value, name2: value", and when doing so - pass arguments in any order.
Script API:
- Added Overlay.Flip property that lets to set one of the 3 standard flip styles.
- ViewFrame.Flipped property now returns eFlipDirection instead of bool.
Engine:
- Engine now supports up to 1024 simultaneously loaded scripts (was 128).
- Fixed Type.GetByName() not working (regression since one of the previous v4.0 Alphas).
- Fixed Software renderer not handling all the Overlay transformations correctly (like rotation).
v3.6.2 - Beta 4
Editor:
- Property Grid now displays Custom Properties right in the main properties list for each item that supports them.
- Support reordering folders in Sprite Manager with drag & drop.
- Script's Autocomplete will now work for dynamic array's Length property.
- Editor will now report any script functions that look like event functions, but not assigned to corresponding events, as warnings when compiling the game.
- Fixed dragging an item into the folder in Project Explorer could move it into a wrong folder if the folders have similar names only different in letter case.
Scripting:
- Support zero-length dynamic arrays. This may be useful if you need to have a dynamic array with no elements, but don't want to bother about checking a null pointer.
Script API:
- Added Character.Following property that returns another Character that this one follows after.
- Added System.DisplayFPS property that toggles FPS counter (a replacement to Debug(4, 1)).
Engine:
- Removed arbitrary limit of 2k bytes for the result of String.Format().
- Fixed calling Character.Animate() during idling state could cause incorrect error, reporting invalid animation loop. (This is regression in 3.6.1)
- Fixed GUI controls get shuffled when restoring saves made by pre-3.6.2 engines (regression since 3.6.2 Beta 3).
- Fixed Game.ScanSaveSlots() erroring on GUI in saves made by pre-3.6.2 engines.
v4.0.0.11 (AGS 4.0 Alpha 15)
This is AGS 4.0 Alpha 15.
Contains all the new features from 3.6.2 Beta 3
Own changes:
Editor:
- The "Watch Variables" panel has an option to automatically enlist local variables (relative to current position in script) when testing the game.
- Added "Add to Watch Panel" command to Script Editor's context menu.
- Support dragging a text from the script window into the "Watch Variables" panel.
- Fixed mistakes occuring when overwriting existing room files by a imported room.
Scripting:
- Managed structs may have constructors. Constructor is a member function which name is identical to the struct's name, and type is "void". Constructor will be called automatically when the managed object is created with "new" command.
- Dialog Scripts dropped support for a number of obsolete commands: "run-script", "new-room", "set-speech-view", "set-globalint", "play-sound", "add-inv", "lose-inv". All of those have contemporary equivalents.
v3.6.2 - Beta 3
This is 3.6.2 - Beta 3
Includes all the fixes from v3.6.1 - P8
Own changes:
Editor:
- In "Start New Game Wizard" game template selection now displays template's description right in the dialog.
- "Game statistics" now have Ctrl + F2 shortcut instead of F2.
- F2 can be used for starting editing names of items in the Project Tree (ones that support that) and folders in the Sprite Manager.
- Added a multiline Text edit window for Button and Label controls, that may be called by Ctrl+E, from context menu, or by pressing "..." button of the Text property in the Properties grid.
- In Room Editor, during any area drawing mode Ctrl + LMB now works as area picker regardless of the currently selected tool.
- Editor will now report any missing script functions that are assigned to events but not present in script as warnings when compiling the game.
- Fixed font preview not updating after importing a new font over. (regression in 3.6.2 Beta)
- Fixed editing Color property of multiple selected GUI controls.
Scripting:
- Dynamic arrays now have Length readonly property that returns their number of elements.
Script API:
- Events eEventGUIMouseDown and eEventGUIMouseUp now get additional parameters: mouse button, mouse x and y positions.
- Added RestoredSaveInfo struct which contains information about game save's contents,
- Support "validate_restored_save" callback, which lets user to validate restored saves with mismatching data and request cancellation or continuation of restoring this save.
- Added FileSortStyle and SortDirection enum, and File.GetFiles() function that returns a dynamic array of filenames found using certain pattern, and optionally sorted by name or time, in ascending or descending order.
- Added SaveGameSortStyle enum and Game.GetSaveSlots() function that returns a dynamic array of save slot indexes, optionally sorted in certain way.
- Added Game.ScanSaveSlots() that scans a range of game saves and tests them for compatibility, using "validate_restored_save" too if it's present in user script. This action is not run immediately, but is scheduled to be executed after current script ends. It reports of scanning completion by sending eEventSavesScanComplete event.
- Added optional "fileSortStyle" and "sortDirection" parameters to ListBox.FillDirList().
- Added optional saveSortStyle and sortDirection parameters to ListBox.FillSaveGameList().
- Added ListBox.FillSaveGameSlots(), which initializes a list of saves from a dynamic array of save slot indexes.
- Added Object.DestinationX and DestinationY properties, complementing ones in Character.
- Added SendEvent() function that allows to trigger "on_event" function calls in script. Special event value eEventUserEvent may be used as a base index for user-defined events.
- Add SaveComponentSelection enum and game option OPT_SAVECOMPONENTSIGNORE, which lets to skip certain components when saving or restoring a game. This has dual purpose: reduce number of things in game that may break older saves by simply not having them in a save, and also reducing the size of game saves on disk (e.g. in case of dynamic sprites). Note that all things that were not restored from the save will retain their current state.
Engine:
- Engine now potentially supports reading saves made in older game versions with different content, so long as these saves have less data in any given type (i.e. less Characters, or less controls on a certain GUI, or less variables in script, and so forth). This feature is enabled by having a special "validate_restored_save" function anywhere in the game script, that accepts an argument of type RestoredSaveInfo. RestoredSaveInfo contains various information about the restored save, and "Cancel" property, that must be explicitly set to "false" in script in order to allow to restore such save.
- Engine supports returning to previously saved rooms which have less script data. It's important to remember though that it does no validation of restored room state on its own.
- Engine no longer quits with error in case a script function assigned to a Room event is missing. Logs warnings about missing script functions assigned to any events.
- Support calling StopDialog() inside a dialog script, that will schedule dialog's stop command at the end of the current option script.
- Added new config setting to "access" section called "textreadspeed" which lets to override game's text reading speed parameter.
- Fixed calling Dialog.Start() inside a dialog script would create a nested "dialog state", which could eventually lead to internal mistakes and program stack overflow. Dialog.Start() will now schedule a proper dialog topic switch, equivalent to "goto-dialog" command.
- Fixed Character may get stuck in "move without animating" state if Move called before Walk. (regression in 3.6.2 Beta)
- Fixed 8-bit room bgs in 32-bit game are imported filled with "magenta". (regression in 3.6.2 Beta)
- Fixed crash on game quit if there was any queued music. (regression in 3.6.2 Beta)
WinSetup:
- Added "Text reading speed" to "Accessibility" settings tab.
- Fixed setup could save wrong setting values in categories located on other tabs, if player never opened these tabs.
- In "disabled" section of config "access_skipstyle" setting lets disable all options in setup related to the speech and text skipping.
v3.6.1 - P8 (3.6.1.30)
This is a 3.6.1 Patch 8.
Editor:
- Fixed game cannot be loaded if its GameFileName setting is an empty string.
- Fixed pressing Alt was not selecting Main Menu.
- Fixed error occuring when trying to assign an image to the multiple selected View Frames if they have different initial images.
- Fixed script preprocessor directive "#else" in the nested conditions.
Engine:
- Made File.ReadStringBack() support reading back strings without null-terminator in the end
(ReadStringBack() reads a string, which has its length prepended to the sequence of chars). - Improved graphic mode selection when game window is moved to a secondary monitor.
Note that still not all graphic setups are reliable on secondary monitors, specifically "real fullscreen" mode may be behaving unexpectedly if you try to switch to it on non-primary display. - Fixed AudioChannel's Paused state is not saved when saving the game.
- Fixed error in case a character was walking while being locked to a temporary View, and switched to a directional loop which does not exist in the locked view.
- Fixed active item cursor's image may duplicate itself onto other cursors under certain conditions.
(this is regression since 3.6.1 Patch 6) - Fixed Inventory Window in automatic mode not redrawing its contents immediately when player character changes.
- Fixed ListBox.FillDirList() may add case-sensitive duplicates on platforms with case-sensitive filesystems.
- Fixed room's fade-out effect playing while skipping a cutscene (it must skip instantly).
- Fixed FadeOut or FadeIn not toggling screen state if they are inside a skipped cutscene. This could have resulted in screen not turning to black or not restored as expected if cutscene was skipped by player.
- Fixed Wait() delay of value > 32k would be treated as infinite timeout.
- Fixed Ctrl + Alt key combination not working (toggle mouse lock). This is a regression in 3.6.1.
- Fixed game may fail loading on platforms with strict memory alignment (e.g. MIPS processors).
Compatibility:
- Fixed SetCharacterViewEx() not treating "align" parameter according to old-style set of values.
- Fixed SetTextOverlay() could cause internal mistakes leading to unexpected errors in game.
- Fixed Wait() calls for pre-3.6.0 versions of Script API, where negative delay was treated as 0.
WinSetup:
- Fixed setup not distinguishing "desktop resolution" and "native resolution" from explicit resolution sizes when saving or loading config. Made sure that it remembers exactly the choice that user made ("desktop", "game resolution" or explicit resolution size).
- Fixed "native game resolution" not present in the list if it equals desktop resolution.
- Fixed nearest resolution selection in case config requested a resolution equal to the native game's resolution, but that resolution was not among the supported ones.
v4.0.0.10 (AGS 4.0 Alpha 14)
This is AGS 4.0 Alpha 14.
Contains all the new features from 3.6.2 Betas 1 and 2.
Other changes:
Common:
- Fonts are split into Font Files and Fonts, where multiple Fonts may use same Font File, or not have any Font File assigned at all (for instance, if they are meant to act as placeholders and get replaced by fonts from plugin).
Editor:
- "Fonts" node in the Project Explorer now contains separate "Font Files" and "Fonts" sublists.
- Actual font files on disk are now stored in "Fonts" subfolder in the project when imported, and keep their original names (no longer renamed to "agsfntN.*").
- In General Settings replaced "Use Extended Compiler" option with "Script Compiler" option that acts as a dropdown list, with compiler names to choose from.
- Added "Source FontFile" property to Fonts, this property lets assign a Font File to the Font.
- Fixed GUI controls failing to copy/paste via Clipboard (regression in previous Alpha versions).
Engine:
- Allow to run the game even if it has no fonts (log a warning).
- Allow to continue running the game if any font failed to load on startup. Such font will simply not get drawn, unless replaced by a plugin, for example.
v3.6.2 - Beta 2
Among other things, this update includes few simpler script API additions backported from AGS 4 Alpha release.
Changes in 3.6.2 - Beta 2
Editor:
- Added "WrapText", "TextPaddingHorizontal", "TextPaddingVertical" properties to GUI Button.
- GUI Labels can select full range of Alignment values in their TextAlignment property.
Script API:
- Added global events: eEventDialogStart, eEventDialogStop, eEventDialogRun, eEventDialogOptionsOpen, eEventDialogOptionsClose (these are handled in "on_event").
- Added Button.WrapText, TextPaddingHorizontal, TextPaddingVertical.
- Added DateTime.CreateFromDate() and CreateFromRawTime().
- Added static Dialog.CurrentDialog property and non-static ExecutedOption and AreOptionsDisplayed properties.
- Added File.Copy() and File.Rename().
- Label.TextAlignment has now type Alignment, rather than HorizontalAlignment, and has full alignment range (both horizontal and vertical).
- Added Overlay.SetPosition() and SetSize() functions for convenience.
- Added GetTimerPos() that returns timer's position (remaining time), in ticks.
- Added CopySaveSlot() to complement MoveSaveSlot(), and new File functions.