Skip to content

Releases: adventuregamestudio/ags

v3.6.2 - Beta 2

13 Oct 16:56
Compare
Choose a tag to compare
v3.6.2 - Beta 2 Pre-release
Pre-release

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.

v3.6.2 - Beta 1

07 Oct 20:55
Compare
Choose a tag to compare
v3.6.2 - Beta 1 Pre-release
Pre-release

3.6.2 is planned to be a second minor update to 3.6, focusing mostly on convenience of certain Editor and Engine features, and expanding existing script commands.

Changes in 3.6.2 - Beta 1

Common:

  • Event handler functions are now allowed to be located in any script module.
  • New naming rule for the voice clips: full char name, followed by a number, separated by a dot, e.g. "RogerTheGreat.1234.ogg". The old rule may be enabled again by a switch in "Backwards Compatibility" settings.

Editor:

  • In General Settings added "Use old-style voice clip naming rule" which lets to select whether the game should expect old-style voice clip filenames (4-letter char name followed by number) or the new one (full char name, followed by a number, separated by a dot).
  • Added "TurnWhenFacing" property to Characters.
  • 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).
  • "Events" tab on the Properties Grid now has "ScriptModule" selection, which lets define in which module should the related script functions be generated and looked for. The GUI Controls use a ScriptModule set in their parent GUI, and Room events always has a fixed room script selected.
  • 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.
  • 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.
  • Editor will now remember certain window states: "Sprite selector" window and splitter position, splitter position in "Sprite manager".
  • Support reordering folders in Project Explorer with drag & drop.
  • Support importing plain script files: ash, asc or both, - besides script modules (*.scm).
  • On "Color Finder" pane also display actual RGB values that the engine will use. They may be different from requested RGB, because historically engine limits drawing color's RGB precision to 16-bit.
  • Font's "SourceFilename" and "Font Size" properties now have buttons that let import another font file, or reimport same font with different size respectively, instead of clicking on a button on the preview window.
  • Global Variables panel now allows to declare arrays.
  • Added "Controls transparency" slider to GUI edit pane.
  • Copy, paste and delete commands now apply to all the selected GUI controls in GUI editor.
  • When pasting a copied GUI control, Locked property of a new control will be turned off.
  • Support editing group properties for selected GUI controls.
  • Support importing 1-bit (monochrome) and 4-bit images as sprites, room backgrounds and masks (converted to 8-bit).
  • Support importing indexed PNGs as room backgrounds and masks.
  • Do not alter or clamp palette for 8-bit sprites imported in a 16/32-bit game.
  • Removed obsolete "Copy walkable area mask to regions" command from the Room 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 "/maketemplate" command-line option that tells Editor to run, make template out of the said game, and quit.
  • Fixed Editor refusing to open a project if one or more of the sections are missing in the file.
  • Fixed importing indexed PNG as a sprite, previously Editor would mistakenly treat the source image as 32-bit.
  • Fixed importing 8-bit BMP sprites with no "Remap palette" and "Leave As Is" as a transparency option would still remap palette index 0 to the first found palette entry with Alpha 0, even if that's a filler entry not used by the image.
  • Fixed exporting room backgrounds was always writing a 32-bit image rather than using actual background's color depth.
  • Fixed "Color Finder" and color properties were mapping a color number to RGB values with accuracy mistakes, resulting in slightly different values than the engine would use.
  • Fixed an unhandled exception occuring when rebuilding rooms if any script's header is missing.
  • Fixed double warning message when trying to close the Editor while a game test is running.

Script API:

  • 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 Character.TurnWhenFacing property.
  • Added Character.MoveStraight() complementing WalkStraight().
  • 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 File.GetFileTime() that returns file's modification time.
  • Added Game.GetSaveSlotTime() that returns a time this save slot was last written.
  • Added FileSortStyle and SortDirection enum, and optional "fileSortStyle" and "sortDirection" parameters to ListBox.FillDirList(). This lets to sort resulting list by name or time, in ascending or descending order.
  • ListBox.FillSaveGameList(), RestoreGameDialog() and SaveGameDialog() now let define a range of save slots for display.
  • Added Speech.SpeakingCharacter that returns currently speaking character (for blocking speech).
  • Added MoveSaveSlot() which renames a savegame.
  • 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 System.GetEngineInteger() and System.GetEngineString() for returning diagnostic information about engine's runtime state. Possible arguments are defined by EngineValueID enum.
  • 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.
  • Expanded on_mouse_click callback, now supports two more parameters: click x,y coordinates.

Engine:

  • Dropped support for pre-3.5.0 game saves.
  • Ensure that Character.Speaking returns true when a speech is playing even if the character has no speech view.
  • DynamicSprite.CreateFromFile() may now load 1-bit and 4-bit bitmaps, converting to 8-bit.
  • Assigning InventoryItem.Graphic will no longer reassign CursorGraphic too even if they were identical previously.
  • Calling DeleteSaveSlot() on a slot within 0-50 range will no longer secretly move a save with the topmost number (within the same range) to fill the emptied slot. If you still like to recreate this behavior, then use MoveSaveSlot() command.
  • Implemented video buffering on a separate thread. Allow to drop late video frames.
  • 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.
  • Added "max_save" config option in "override" section: this lets to enforce an arbitrary number of saves displayed in a standard save/restore dialogs in game.
  • Added "--no-plugins" command-line argument that denies loading any plugins; also added respective config option "noplugins" in "override" section.
  • Fixed displaying room masks with Debug command in legacy "upscale" mode.

Engine Plugin API:

  • Added IAGSEngine.Log(), which lets plugins to print using engine's log system.

Compatibility:

  • Fixed loading of games made in AGS 2.55-56 which include plugins.
  • Fixed loading of rare games made with AGS 2.5 or higher, which contained deprecated "room animations" (animations themselves are currently not functional).
  • Fixed old pathfinder imprecision affecting few pre-3.0 games.
  • Allow pre-2.7 games to have RestartGame() command be followed and overridden by a NewRoom(). This is necessary for some older games to be able to proceed.

WinSetup:

  • Redesigned winsetup into a tabbed dialog.
  • Added "Accessibility" settings for skipping speech and text messages.

v3.6.1 - P7 (3.6.1.29)

23 Sep 06:34
Compare
Choose a tag to compare

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)

18 Sep 00:05
Compare
Choose a tag to compare
Pre-release

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)

15 Sep 23:45
Compare
Choose a tag to compare

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)

05 Aug 09:51
Compare
Choose a tag to compare

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)

22 Jul 21:22
Compare
Choose a tag to compare
Pre-release

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_click callback, 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)

07 Jul 10:46
Compare
Choose a tag to compare

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)

20 Jun 23:23
Compare
Choose a tag to compare
Pre-release

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)

09 Jun 11:59
Compare
Choose a tag to compare

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.