Releases: adventuregamestudio/ags
v3.6.1 - P7 (3.6.1.29)
This is a 3.6.1 Patch 7.
Engine:
- Hotfix mouse cursor not being drawn sometimes after changing rooms (regression in 3.6.1 P6).
v4.0.0.9 (AGS 4.0 Alpha 13)
This is AGS 4.0 Alpha 13.
Contains fixes from 3.6.1 Patches 5 and 6 (except ones related to backwards compatibility).
Other changes:
Common:
- Support true 32-bit colors in GUI, text messages and drawing commands in script. Color number properties now correspond to the encoded 32-bit RGB (R8G8B8 format). Older projects will have all Color properties upgraded by the Editor (but not colors in script!).
- Removed support for 16-bit games. Any older 16-bit project will be converted to 32-bit on import by the Editor.
SPECIAL NOTE: 8-bit games are still supported.
Editor:
- Editor will now remember certain window states: "Sprite selector" window and splitter position, splitter position in "Sprite manager".
- Copy, paste and delete commands now apply to all the selected GUI controls in GUI editor.
- Support editing group properties for selected GUI controls.
- When importing room backgrounds of a different size Editor will now let user decide whether to reset, keep or rescale room masks.
- Ensure that Editor exports room backgrounds in their actual color depth.
- Removed obsolete "Copy walkable area mask to regions" command from the Room editor.
- Merged all "***Color" and "***ColorNumber" paired properties into a single "***Color" property. This property is internally saved as a number, but is viewed and edited as RGB combination for 32-bit games, and as a palette index for 8-bit games.
- Added Custom Properties for: Audio Clips, Dialogs, GUI, GUI Controls, Regions, Walkable Areas.
- Textual GUI controls can now select "Null Font" as their font: this will prevent any text to be drawn even if one is assigned, and make it have zero size (when it matters).
- Added "/maketemplate" command-line option that tells Editor to run, make template out of the said game, and quit.
- Fixed "Flood Fill" operation on mask in the room editor for masks of sizes which are not multiples of 4.
- Fixed "Recent games" menu could throw a error if a saved Editor's config contained empty paths for any reason.
- Fixed "Make template" operation was not adding Rooms subfolder to a template.
Compiler:
- Compiler no longer requires explicit pointer declaration for imported global variables of managed types. Now they are always assumed to be pointers by default, and non-pointer imports of builtin managed types are not permitted, unless a backwards compatibility option is set.
- Fixed compiler could cause memory corruption while compiling certain expressions.
- Fixed parsing of bracketed expressions inside ternary operation ( ? : ).
- Fixed a error message reported in case of undefined symbol, now it correctly states that the symbol is undefined, instead of making a vague statement of "unexpected expression".
Script API:
- All ***Color properties and function arguments now require a 32-bit RGB number. Where Game.GetColorFromRGB() is used to create a color number, there the script should continue to work as before, but if a literal number was used in script, these must be updated by hand or wrong colors will be displayed at runtime.
- Added eNullFont constant that lets assign or pass a "null font" to any property or function parameter which expects a font's ID. This "null font" will simply make any text not drawn and have no actual measurements (size, spacing, etc).
- Added global events: eEventDialogStart, eEventDialogStop, eEventDialogRun, eEventDialogOptionsOpen, eEventDialogOptionsClose (these are handled in "on_event").
- Added Custom Properties interface to types: AudioClip, Dialog, GUI, GUIControl, Region, WalkableArea. This includes functions: GetProperty(), GetTextProperty(), SetProperty() and SetTextProperty().
- Added static Dialog.CurrentDialog property and non-static ExecutedOption and AreOptionsDisplayed properties.
- Added RenderLayer enum, and optional "layers" parameter to DynamicSprite.CreateFromScreenShot(), that tells which of the game's render layers to capture when making a screenshot.
- Added Overlay.SetPosition() and SetSize() functions for convenience.
- Added Overlay.Tint(), SetLightLevel() and RemoveTint() functions, Overlay.HasTint, HasLightLevel, LightLevel, TintBlue, TintGreen, TintRed, TintSaturation, TintLuminance properties, matching Character and Object tinting functionality.
- Expanded String.IndexOf() with new parameters: "StringCompareStyle", "index" and "count".
- Added optional "sprite" parameter to SaveGameSlot(), that lets to pass a number of an arbitrary sprite to write into this save instead of a standard "screenshot".
- Added new game-wide option OPT_SAVEGAMESCREENSHOTLAYER that lets to define which of the game's render layers will be captured when making a standard screenshot for the save game.
Engine:
- Do not alter or clamp palette for 8-bit sprites loaded into a 16/32-bit game at runtime.
- Assigning InventoryItem.Graphic will no longer reassign CursorGraphic too even if they were identical previously.
- Added new accessibility config settings in "access" section: "speechskip" and "textskip". These let player to override game's skipping style for character speech and text messages respectively.
- Fix transformed (scaled or rotated) overlays could look wrong in Software renderer.
WinSetup:
- Redesigned winsetup into a tabbed dialog.
- Added "Accessibility" settings for skipping speech and text messages.
v3.6.1 - P6 (3.6.1.28)
This is a 3.6.1 Patch 6.
Editor:
- Fixed Ctrl+C and Ctrl+V not working in GUI editor.
- Fixed sprite export and copying a sprite to clipboard operations were always exporting a 32-bit image, regardless of the actual sprite's color depth.
- Fixed "Recreate spritefile" command was unintentionally converting any sprite to 32-bit if its source was not found, and it was taking existing image from the old spritefile.
Engine:
- Fixed Software renderer could crash the game under some circumstances when the sprite cache's limit is exceeded (this is a regression in 3.6.1).
- Fixed text-based lipsync's frame delay calculation: the existing formula was causing the delay value to "jump" back and forth with the slightest difference of speech text length, resulting in the speech lines of close length to be played with the notably different animation speeds.
- Fixed drawing a 32-bit sprites on a 8-bit surface (e.g. a room mask), it was done wrong and was causing a memory corruption too.
- Fixed drawing a room's walkable mask in script could cause errors during character walking if used colors exceeded walkable area number limit.
- Fixed walk-behinds not drawn over characters and objects anymore (regardless of their baselines) after walk-behind mask was changed using drawing operations in script.
- Fixed Game.SimulateKeyPress() not working in "old key-handling mode" (regression since 3.6.0).
- Fixed script location is not reported in case of logical errors in engine's functions (regression since 3.6.0).
WinSetup:
- Removed an obscure "Use 85 Hz display" option.
v3.6.1 - P5 (3.6.1.27)
This is a 3.6.1 Patch 5.
Editor:
- When the room background size changes, clamp Room Edges to the new size.
- Fixed Editor refusing to load a project if its folder name exceeds 40 characters.
(An obsolete historical limitation which we forgot to cut from the program.)
Compiler:
- Fixed script compilation hanging forever if a non-latin unicode character is met in script (outside of comments).
Engine:
- Fixed GUI.ProcessClick() using mouse position when detecting a GUI control, instead of the position passed in the argument list.
- Fixed Region.GetAtScreenXY() was returning null for offscreen coordinates. Made it return region[0] for consistency with other room areas, and backwards compatibility.
- Fixed room Overlays not sorted in the order of their creation, like screen Overlays.
- Fixed a potential mistake in Lucas-Arts speech position when there are multiple room viewports and speaking character is not directly visible in any of them.
- Fixed Engine could switch program's locale to the current system locale by mistake when player is typing text. This could potentially lead to random glitches in text input in games which are run in ASCII mode and are handling extended characters.
- Fixed TextBox was trying to display unsupported characters (in ASCII mode), resulting in random garbage.
v4.0.0.7 (AGS 4.0 Alpha 12)
This is AGS 4.0 Alpha 12.
Contains fixes from 3.6.1 Patch 4 (except ones related to backwards compatibility).
Other changes:
Editor:
- Improved scrolling of drop-down lists in the Room's navigation bar: made scroll buttons larger, and support mouse wheel.
- Do not delete previously built game exe from Compiled/Windows folder when testing a game from the editor.
- Added "Open Recent" submenu in the File menu.
- Sync script editor's commands in Edit menu with the context menu.
- Added "Toggle Line Comment" command to Edit menu for scripts.
- Added "Word Wrap" command to Edit menu for scripts.
- Support to import and keep sprites as explicitly 8-bit images without converting to the game's default color depth. This lets to have chosen sprites used as 8-bit masks in a 16/32-bit game.
- Added TurnWhenFacing property to Characters.
- Fixed Character.Enabled and Visible properties not written correctly when the game is built.
- Fixed an unhandled exception occuring when rebuilding rooms if any script's header is missing.
Script API:
- Added MaskPathfinder struct, which lets to initialize a Pathfinder using a 8-bit sprite serving as a navigation mask.
- Added Character.TurnWhenFacing property.
- Added ColorFormat enum, and optional "color_format" parameter to DynamicSprite's functions: Create(), CreateFromBackground(), CreateFromDrawingSurface(), CreateFromExistingSprite() and CreateFromFile().
- Added readonly DrawingSurface.ColorDepth property.
- Added readonly Game.SpriteColorDepth[] indexed property.
- Added StringSplitOptions enum, and "options" parameter to String.Split().
- Expanded
on_mouse_clickcallback, now supports two more parameters: click x,y coordinates. - Global generated game objects (Characters, GUIs, etc) are now declared as object pointers in script (this complements recent similar change done to arrays of game objects).
- All the area-related GetAtScreenXY functions (for Hotspot, Region, Walkbehind and WalkableArea) now return a null pointer if no room viewport is found under given coordinates.
Engine:
- GetTextHeight() no longer reduces "width" parameter by -1. This was an ancient mistake in the engine kept for many years for backwards compatibility.
- Fixed a crash occuring when debugger requested a variable's value, but script contains no "table of contents".
- Fixed Character.MovePath and WalkPath not reacting to the "path" parameter being a null pointer, and proceeding with mistakes.
- Fixed a crash in SaveScreenShot (repeating regression in AGS 4).
- Fixed WalkableArea.GetAtScreenXY and GetAtRoomXY returning "garbage" values instead of a valid WalkableArea pointer.
v3.6.1 - P4 (3.6.1.26)
This is a 3.6.1 Patch 4.
Editor:
- Fixed extracting templates with very large files inside would cause "Out of memory" error.
- Fixed crash occuring when trying to import a non-existant GIF frame during Sprite Import.
- Fixed potential mistake with sprite transparency occuring when importing a 8-bit sprite into 16/32-bit game.
Compiler:
- Fixed "\t" (and few other less common escaped chars) not handled properly when they are inside string literals.
- Fixed a crash in compiler occuring if user script defined a variadic function.
(User-defined variadic functions are not properly usable at the moment, but this at least prevents an unhandled exception.)
Scripting:
- Declare "UNICODE" macro for scripts if game is made in unicode mode.
Script API:
- Added a number of missing OPT_* constants used with Get/SetGameOption functions.
Engine:
- Fixed setting Screen.AutoSizeViewportOnRoomLoad to false in "game_start" could cause primary viewport and camera become initialized with zero width and height.
- Fixed setting camera's size in "game_start" would unexpectedly get camera clamped to 320x200.
- Fixed number of mistakes in Text Parser occuring when handling "multiwords".
v4.0.0.6 (AGS 4.0 Early Alpha 11)
This is AGS 4.0 Early Alpha 11.
Contains fixes from 3.6.1 Patch 3 (except ones related to backwards compatibility).
Other changes:
Editor:
- Added "Watch Variables" panel which lets to watch values of the selected script variables while running the game. This feature is working only if game is built in Debug mode.
- Support importing 1-bit (monochrome) and 4-bit images as sprites, room backgrounds and masks (converted to 8-bit).
- Ensure that Editor exports room backgrounds in their actual color depth.
- Improved scrolling of drop-down lists in the Room's navigation bar: made scroll buttons larger, and support mouse wheel.
- Fixed breakpoints not working in room scripts.
Script API:
- Added Pathfinder struct, which lets to search walkable paths in certain two-dimensional "space", and returns them as an array of Points.
- Added Room.PathFinder property that returns a Pathfinder object, searching paths over this room's walkable areas.
- Added Character.MovePath() and WalkPath(), which makes character to move along an arbitrary list of coordinates, and Character.GetPath() that returns current character's walking path.
- Added Object.MovePath() and Object.GetPath() functions, that work similar to Character's.
- Added GUI.ScaleX and ScaleY properties, GUI.SetScale() function.
- Added GUI.GUIToScreenPoint() and GUI.ScreenToGUIPoint() functions.
- Added Speech.SpeakingCharacter that returns currently speaking character (for blocking speech).
Engine:
- Ensure that Character.Speaking returns true even if character has no speech view.
- DynamicSprite.CreateFromFile() may now load 1-bit and 4-bit bitmaps, converting to 8-bit.
- Fixed VideoPlayer's looping mode not working.
Engine Plugin API:
- Added IAGSEngine.Log(), which lets plugins to print using engine's log system.
v3.6.1 - P3 (3.6.1.25)
This is a 3.6.1 Patch 3.
Editor:
- Fixed that after deleting a View's frame editor did not select next frame (regression in 3.6.1).
- Fixed "Delete last loop" button not appearing in the View Editor if the view is filled using "Assign sprites to view" command from the Sprite Manager.
Engine:
- Implemented an alternate solution for rendering "bad" TTF fonts that does not increase their loading times (after previous patch 2).
- Allow scene render during "load room" event if the last room transition was "Instant".
This has to be done because number of games used this event for custom transitions. - For games compiled in "Debug" mode "warnings.log" file will be written in "savegame dir" on platforms where modifying game directory is forbidden in principle (OSX, iOS, Android, Web).
- Fixed System.Log() was registered for plugins using a wrong argument list.
Compatibility:
- Fixed loading of 3.5.0 saves (broken in 3.6.1).
Windows:
- Fixed disk space check was testing space in the current directory instead of the save game location.
v4.0.0.5 (AGS 4.0 Early Alpha 10)
This is AGS 4.0 Early Alpha 10.
Contains updates and fixes from 3.6.1 up to Patch 2 (except ones related to backwards compatibility).
Other changes:
Editor:
- More panes in the Editor are DPI-aware (rescale well with the system font scaling).
- Editor tabs now display icons indicating their contents (may be disabled in Editor Preferences).
- Room panel tabs now display room names.
- Support reordering folders in Project Explorer with drag & drop.
- Support importing plain script files: ash, asc or both, - besides script modules (*.scm).
- Added "Controls transparency" slider to GUI edit pane.
- Fixed few problems occuring when importing old rooms into the new editor.
- Fixed some of the new files could be left after old room upgrade in case of a failure.
- Fixed import, palette remap and compilation of 8-bit room backgrounds in 8-bit games.
- Fixed double warning message when trying to close the Editor while a game test is running.
Script API:
- Added Character.MoveStraight() complementing WalkStraight().
- Added String.Join(), String.Split() and String.Trim() functions.
- Added System.GetEngineInteger() and System.GetEngineString() for returning diagnostic information about engine's runtime state. Possible arguments are defined by EngineValueID enum.
Engine:
- Overlay.X and Y properties of textual screen overlays, such as blocking speech, now treat assigned values correctly as screen coordinates and return values set by user consistently. They also return the assigned values without any offsets for textual overlays created using a TextWindow (having extra borders and padding).
- Added "--no-plugins" command-line argument that denies loading any plugins; also added respective config option.
- Fixed taking screenshots not working properly (regression in AGS 4.0).
v3.6.1 - P2 (3.6.1.24)
This is a 3.6.1 Patch 2.
Editor:
- Fixed few potential program errors for "Generate Keystore" in Android preferences.
- Fixed external processes (such as test game runs) were started using ShellExecute, which could theoretically lead to unintended results.
Engine:
- Fixed String.Replace crashing the engine if the resulting string exceeds 3000 bytes.
- Fixed releasing a mouse button could cause double "on_event" call (with eEventGUIMouseUp).
- Improved rendering of TTF fonts which have glyph sizes surpassing declared font's height.
This fixes the look of text on gui controls, and automatic outlining on these fonts. - Fixed a dialog shown with InputBox() function drawing typed text beyond text box'es border.
- Fixed custom dialog options in the "old mode" not triggering redraw when the active option changes.