AGS 3.6.1 - Beta 16 -- new WIP version

Started by Crimson Wizard, Sat 27/05/2023 04:37:47

Previous topic - Next topic

Crimson Wizard

AGS 3.6.1 - Beta 16
Full release number: 3.6.1.15

ACHTUNG!
This is a BETA version of AGS 3.6.1.
It's considered relatively stable but is not thoroughly tested yet and also may have planned additions.
Use at your own risk. Please back up any games before opening them in this version of AGS.
New settings in this version may make your project files unusable in previous versions after saving with this version.


For Editor
Spoiler

For Android
Spoiler
NOTE: the Editor now includes Android build component letting you prepare your own games for Android
[close]

For Engine/Editor developers
Spoiler


Released: 28th December 2023

Previous stable version: AGS 3.6.0 P7 forum thread


This release is brought to you by:

- Alan v.Drake (fixes, improvements)
- Crimson Wizard
- edmundito (iOS fixes)
- eri0o
- Walter Agazzi (fixes)



What is new in 3.6.1

3.6.1 is planned to be a focused on improving performance and usability of existing features, and also possibly on restoring few functionalities cut while porting the engine to SDL2 (in 3.6.0).

Common features:
- Implemented Deflate compression option for sprites. (This is an algorithm used in PNG and ZIP formats, and testing shows about x1.5-x2 compression improvement compared to LZW).
- Removed length limits for: Game name, savegame folder, Character's script name and regular name (description), Inventory item's name (description), Mouse cursor's script name, Audioclip's script name.

Editor:
- Discontinued Source control integration functionality, removed "Put sound and sprite files in source control" option from General Settings.
- Made Editor a Dpi-aware application, which might improve its looks in Windows 10 and higher. This is disabled (may be temporarily), as it turned out to cause troubles on some user setups.
- Improved Room Editor controls:
  Added free panning mode done by holding the middle mouse button, or alternatively - by holding Space + LMB.
  Mouse Wheel without key modifiers scrolls the room vertically; Shift + Mouse Wheel scrolls
  the room horizontally.
  Zoom is done by Ctrl + Mouse Wheel and room now zooms towards or outwards the cursor position.
- In Room Editor the context menu is now displayed by RMB or Shift + RMB while editing masks.
  The individual room mode menu is merged with the "copy coordinates" command when shown.
- In Room Editor the hint with coordinates is now also displayed when moving Objects or Characters with keyboard.
- In Dialog Script editor support most Edit menu and context menu commands from the regular Script editor, with a few exceptions.
- In Sprite Manager added command "View" -> "Show filenames" which toggles display of a sprite's source filename under the sprites.
- During sprite export Editor will display a proper progress dialog.
- Zoom controls in Character and View panes now allow downscaling too. View editor displays the preview sprite stretched to fill the parent panel.
- View editor now allows to select multiple frames at once, across multiple loops too, using standard Shift + LMB and Ctrl + LMB combinations. Properties panel lets modify properties for all the selected frames at once.
- Added "Replace with all sprites from folder" command to the View editor's context menu.
- For Audio Clips in the project tree added "Force Reimport", "Force reimport all file(s)" and "Replace Source File" context menu commands.
- For Output Panel added "Copy selection" context menu command.
- Implemented Log Panel that lets you see the engine and game logs right in the Editor.
- Improved LipSync panel looks in case user's system has display scaling option enabled.
- "Goto Definition" command in script will now work for most of the game entities too, such as Characters, GUIs, and so forth. In that case it will find a game's entity and open a respective editor panel for it. This still does not work for some types, such as Room objects, and Views.
- Added main menu commands for opening a Project folder and Compiled folder.
- Added "Export Global Messages to script" menu command. This command is meant for upgraded pre-3.2 game projects, and will generate a script with a String array, moving global messages texts there.
- For script's tabs added a context menu command for opening this script's location.
- In General Settings moved few properties to different groups for better consistency.
- Added "Scale Character sprite offsets" property to General Settings. This property refers to scaling of Character.z and sprite offsets added by LockViewOffset script command.
- Added TextureCacheSize and SoundCacheSize properties to Default Setup. These let configure the sizes of runtime texture and sound cache sizes respectively.
- Added "Leave room after fade-out" event to Rooms (script function called "Unload" by default).
- Added Translated property to all GUI Controls (was available only in ListBox). Translated property tells whether this control's text has to be translated, and applied text direction (in right-to-left text mode).
- Support '\n' linebreak character in the Label's Text and potentially other text properties.
- When run with "/compile" argument Editor will print all messages to the console (stdout), instead of displaying modal message windows.
- For Android build target Editor now supports a directory to place plugins in.
- For Android build target disabled compression of .ags and .vox assets, as that seriously slows down engine streaming resources (sprites etc).
- When building a game for Android and Linux the Editor will now be more tolerant to missing plugins and only issue a warning instead of stopping with error.
- Config will now be saved in UTF-8, letting to support setup program's title text in unicode.
- For non-Windows build targets Editor will fix config containing Direct3D graphics driver option and set OpenGL instead.
- For Color Themes: implemented character literal, braces match and braces error settings.
- Made Editor be somewhat more tolerate to missing XML nodes in Game.agf, in many cases it will still let open a game.
- When upgrading older game projects, Editor will insert a call to SetRestartPoint() in the end of the 'game_start' function in GlobalScript.asc. This is done to complement removal of an automatic restart point in the engine. This inserted command is safe to remove.
- When upgrading pre-3.2 rooms with disabled SaveLoadEnabled property the Editor will reset this property and insert a comment with a warning into the corresponding room's script. This is done because this property is deprecated as is no longer accessible.
- Fixed Editor refusing to open a game if one of the translation files is missing.
- Fixed General Settings and Default Setup not working correctly right after importing a pre-3.* game project.
- Fixed importing GIFs or 8-bit PNGs may lose transparent pixels if source images used other palette index than 0 for transparency.
- Fixed sprites may get wrong transparency settings after "Crop sprite edges" operation.
- Fixed Project Explorer's folders collapsing after certain user actions, such as dragging items or renaming things.
- Fixed a rare exception when scrolling the room in the editor.
- Fixed deleting collapsed "region" in script would sometimes lead to portion of the script undeleted but staying invisible.
 - (Possibly) Fixed a "Index out of range" exception in Script editor, related to the "script location" drop-down list, which could occur at random circumstances while working with the script, and any Color Theme is enabled.
- Fixed Dialog properties displaying internal values not meant to be seen by a user.
- Fixed selecting parent GUI after its control did not display GUI's own properties in the Properties Grid.
- Fixed Editor could miss some of the files when cleaning up old compiled files after the Game's Filename property is changed.
- Fixed Editor generating deprecated settings in the default config file.

Scripting:
- Support "#else" preprocessor directive.

Script API:
- Implemented Room's "After fade-out" event.
- Added eEventLeaveRoomAfterFadeout event for the global "on_event".
- Added eEventGameSaved event which runs after game was saved.
- Expanded interaction functions for Character, Object, InventoryItem, Hotspot and Region types: now they all receive respective object's pointer as a parameter, similar to GUI event functions, as well as a cursor mode this interaction was run with, if applicable.
- Added Game.ResetDoOnceOnly(), which completely resets all DoOnceOnly instances.
- Added Game.PrecacheSprite() and Game.PrecacheView(), which preload certain sprites and linked frame sounds into the engine's cache memory.
- Added ScriptName property to AudioClip, Character, Dialog, GUI, GUIObject, Hotspot, InventoryItem, Object.
- Added static GetByName() function to AudioClip, Character, Dialog, GUI, GUIObject, Hotspot, InventoryItem, Object.
- Added Object.AnimationVolume property, which works similar to Character.AnimationVolume.
- Added static File.ResolvePath() and File.Path attribute.
- Added support for a text formatting to a number of functions: DisplayAtY(), Character.SayAt(), Character.SayBackground(), DrawingSurface.DrawStringWrapped().

Engine:
- Significant performance improvement to scripts. Script running speed restored to a level close to AGS 3.2.1. Testing few "script-heavy" games showed fps raise by up to 30-40% compared with 3.6.0 engine.
- Improved performance of String objects in script. For instance, appending a character to a String is now roughly x2 times faster, *sequential* iteration of String.Chars[] in Unicode mode is about x12 (!) times faster (Strings in ASCII mode have relatively less improvement, because they have been faster than Unicode mode already).
- Improved performance when creating, deleting and manipulating Overlays; allows the game to have thousands of those with much less slowing down.
- Improved performance when updating and deleting dynamic sprites, and notifying any objects that have to redraw themselves. Engine no longer resets Graphic properties of objects referencing deleted dynamic sprite to 0.
- Implemented "texture cache", in addition to the existing "sprite cache". The texture cache keeps textures generated from raw sprites and lets reusing them, improving performance and reducing CPU workload. The textures mostly occupy the video memory (on GPU). The actual impact is proportional to the game's resolution and amount of simultaneously animated objects on screen.
- WFN font renderer now supports unicode texts in utf-8.
- Buttons, ListBoxes and TextBoxes now support Right-to-left text direction.
- DrawingSurface.DrawString now supports Right-to-left text direction.
- All the script File functions now treat paths in case-insensitive way (including subdirs), which makes them platform-independent.
- Removed an automatic SetRestartPoint() call at startup. This is done in case user does not want to use default "restart" save slot, or has a custom save system.
- Support handling multiple mouse clicks per game frame, similar to how multiple key presses were supported since 3.6.0.
- When starting up, engine will now precache only first 4 or 8 loops of the starting player character's View. This is done to avoid filling sprite cache with too much sprites at once in case when the player's View contains lots of additional animations.
- Characters will now have their graphic offsets, set by Character.z property and LockViewOffset() function, scaled along with the character's own scaling. This is done so long as the respective game option is enabled in the General Settings.
- Ensure that character and object scaling is updated even when the game is not drawn. This fixes rare issues when their scale property did not update in time whilst the game was completely fadeout, and similar cases.
- Allow to change Character's move speed while its moving.
- When Character is ordered a new move command while already moving, the engine will try to make a smooth transition between old and new moving without a delay.
- Engine will now log a warning for the most incorrect parameters to Animate function instead of quitting the game.
- Engine will now skip blocking Character.Say commands instantly while skipping a cutscene.
- Added new config settings in "graphics" section: "sprite_cache_size" (which replaces deprecated "cachemax" in "misc") and "texture_cache_size".
- Character.AnimationVolume now applies to the portrait animation too.
- Object.SetView now lets invalid loop and frame values, and fallbacks to using loop 0, frame 0, printing a warning. This is also consistent with backwards-compatble SetObjectFrame() behavior.
- Changed Object.SetView() to not play a frame's sound, which could lead to a duplicated sound play if Object.Animate is run right after.
- Text Overlays internal images are now registered as dynamic sprites, and their IDs may be read from Overlay.Graphic. This lets find out their sizes using Game.SpriteWidth/SpriteHeight and optionally draw them somewhere using DrawingSurface.DrawImage().
- Ensure all the script API is now correctly available for the plugins.
- Engine will now safeguard plugin's reading and writing of game saves, so that any mistakes done by plugins won't affect other parts of a save.
- Engine will disable vsync in a "infinite fps" mode, because vsync prevents getting more fps.
- Engine will force any in-game debug messages to be displayed in standard message boxes, disregarding game's "Display all messages as speech" option.
- Print some info about memory usage when reporting a "Out of memory" error.
- Deprecated in-game "console", as practically useless.
- Added new config settings in "graphics" section: "sprite_cache_size" (which replaces deprecated "cachemax" in "misc") and "texture_cache_size".
- Fixed Characters may be seemingly "walking in place" for some time when arriving at destination.
- Fixed Display and Say commands treating the second met "&" sign as a voice-over token too (they must only check the first one in string).
- Fixed PlayMP3File() function limiting filename argument by an arbitrary number of characters.
- Fixed speechlines were adjusting their Y position while trying to not overlap GUIs even when these GUIs are completely offscreen.
- Fixed first Sierra-style speechline in a sequence was adjusting its Y position without need when GUIs are set to be hidden during game pause (this includes blocking speech). Normally, the speechlines are adjusting their Y position in order to not overlap GUIs, but when GUIs are hiding during speech there should not be any need to do so.
- Fixed GAMENAMElabel is not updated if Game.Name changes in script.
- Fixed script behavior in case a local variable was assigned a value without being initialized with a zero memory by compiler's instruction beforehand. This is not a problem with the standard compiler, but technically could be an issue with any custom implementation.

Engine Plugin API:
- Added IAGSStream interface, IAGSEngine.OpenFileStream() and GetFileStreamByHandle().
- Added IAGSEngine.ResolveFilePath() method, which resolves a script path (with location tokens) into a proper system filepath.
- Fixed IAGSEngine.GetFontType() incorrectly reporting TTF font type for WFN fonts with more than 128 characters.

Compatibility:
- In Editor, restored all the Character's variables available in "backward-compatible" mode. This is primarily to make it easier to import very old games.
- Fixed slower character walking speeds in pre-3.1 upscaled and high-resolution games.
- Fixed Object.SetView() and SetObjectFrame() not treating -1 for loop and frame as "keep previous values" in older games.
- Allow to run an animation over a loop with zero frames, by using the placeholder frame. This lets particular old games to continue running instead of crashing with error.
- Fixed inventory window not updated after game.top_inv_item is assigned a new value.
- Fixed a "New Room" command in old-style dialog scripts was preventing "First time Enter room" event to be called.

iOS:
- Updated port for 3.6.*.

Windows:
- Fixed a rare bug when the Windows engine could fail loading the game for no good reason. This error is related to a bug in Windows SDK 8.1.

Web / Emscripten:
- Fixed Safari cannot switch the game into fullscreen mode.

WinSetup:
- Added options for setting texture cache and sound cache size.





Log Panel

We're now featuring a new Editor window called "Log Panel".



If it's not present, it may be enabled in the "Window" menu.

This panel receives log messages from the engine when running the game in a test mode (F5), and prints in the text box. This is a short-term log, it's limited by 4k messages (i think) and when hitting the limit it will clear the older ones. Its main purpose is to let users see the current and the recent state of the game.

The log settings may be configured by pressing the "Show configuration" tool button, this will make them visible to the right from the log window. The settings include 2 groups of settings:
* Log Output - lets configure the minimal level of messages that the Editor will receive. These options are only applied once the game is starting.
* Log Filter - lets configure the current (temporary) level of messages. These options may be applied anytime.

The message types are dividing between Main, Game and Script.
Main - is the main engine messages, mostly related to something important initializing or changing.
Game - are various game-related events.
Script - are messages printed by a System.Log command in script.

The Log window's font may be configured separately, in Editor Preferences, on "Advanced" tab.

Expanded interaction functions

Regarding expanded interaction functions, these are functions connected to Look at, Interact, Talk to and other similar events. They all now may have 2 parameters: a pointer to object, and cursor mode, similar to the following examples:
Code: ags
function Ego_Interact(Character *c, CursorMode mode)
function oObject1_Look(Object *o, CursorMode mode)

Exceptions:
- Hotspot WalkOn and MouseOver events do not have CursorMode parameter.
- All Region events do not have CursorMode parameter.

The purpose of this addition is to improve situation where you connect same function to multiple events and/or multiple objects at once. In such case you will be able to distinguish object and mode for which the function is actually called.

These new parameters are optional. If you don't have them declared in script, they will be ignored by the engine, and your script is going to run as before.
Also, naturally, you do not have to use them, if you don't need to (even if they are declared).

WFN fonts supporting Unicode

Engine can now draw unicode texts using WFN fonts too, if WFN fonts have appropriate letters.
Unfortunately, existing WFN editors do not let add letters at indices higher than 255. This means they need to be upgraded to allow arbitrary higher slots.
Current WFN format does not exactly have a limit to the glyph index, but it has a limit to 64k bytes of letter pixel data. This amount potentially allows it to store several alphabets in low-resolution within a single font. You may always split languages into separate fonts anyway.

Here's the modified Radiant's FontEdit which supports editing any character in range 0-65535:
https://www.dropbox.com/s/xth28bfzu78vtqi/FontEditUni.zip?dl=0
this is an "unofficial" version made purely for test.
The source project may be found here (if anyone is interested):
https://github.com/ivan-mogilko/fontedit
The example of the WFN font hosting Greek alphabet (only capitals, for test):
https://github.com/adventuregamestudio/ags/files/11540578/AGSFNT0_UNI.zip
may be tried with e.g.
Code: ags
Display("ΟΙ ΘΕΟΙ ΤΟΥ ΟΛΥΜΠΟΥ"); // THE GODS OF OLYMPUS

edmundito

#1
As mentioned on Discord, I'm excited about this release!

I tested the editor on my high DPI display, and many panels must be fixed. I also wonder if Editor plugins would also be affected.

I made a video showing the glitches: https://1drv.ms/v/s!Ap-i3SuJykLihinGCZ0jdiCcj6E_?e=eBEiVC

Edit: I just tested the Speech Center editor plugin, and there are problems: https://1drv.ms/i/s!Ap-i3SuJykLihituN9TEAgr3nvmj?e=XQgu9p
The Tween Module now supports AGS 3.6.0!

Crimson Wizard

#2
Quote from: edmundito on Sat 27/05/2023 14:35:40I tested the editor on my high DPI display, and many panels must be fixed. I also wonder if Editor plugins would also be affected.

I made a video showing the glitches: https://1drv.ms/v/s!Ap-i3SuJykLihinGCZ0jdiCcj6E_?e=eBEiVC

Edit: I just tested the Speech Center editor plugin, and there are problems: https://1drv.ms/i/s!Ap-i3SuJykLihituN9TEAgr3nvmj?e=XQgu9p

Could you demonstrate how the previous version looks on the same monitor?
Also, which OS do you run this on?

Personally I did not know how this works, as I have only 1 monitor and still using Windows 7...
EDIT: I might experiment with the Windows 10 vm later if I figure out how to emulate a very big monitor.

We might revert this change if there's no easy fix to this.

edmundito

Quote from: Crimson Wizard on Sat 27/05/2023 14:43:12Could you demonstrate how the previous version looks on the same monitor?
Also, which OS do you run this on?

Sure, it looks like it always does but pixelated compared to the rest of the os:
https://1drv.ms/i/s!Ap-i3SuJykLihiyT3svQiDjWaPNo?e=7ESpxl

My specs are:
Windows 10 Home 21H2
Resolution: 2880x1800
Scale: 200%
The Tween Module now supports AGS 3.6.0!

Crimson Wizard

#4
Quote from: edmundito on Sat 27/05/2023 14:50:56My specs are:
Windows 10 Home 21H2
Resolution: 2880x1800
Scale: 200%


So it has these glitches on a particular monitor only, or overall on Win 10? Or do you have only 1 monitor (i was not sure how to interpret what you say)?

eri0o

#5
Uhm, that is weird, I did the change because I always do this setting manually on Win10 by right clicking the AGS Editor executable and selecting the scaling option by hand to get rid of the bluriness of the script editor. I don't have the side effects, like in theory some things could be fixed by using a layout instead of hardcoded positions, but things like the tabs and other details that I see in your print screen should already just scale correctly. When running AGS Editor through wine (in Linux or macOS) you can set font scaling options and the text in the tab appears to scale correctly - without being cut in the bottom like in your screenshot capture. We can rollback that change until someone can figure a better way to test for these. :/

Edit: for some reason I thought it was windows 11, I see now you have windows 10 too. I don't have a monitor with the same resolution or some way to reproduce it.  :sad: 

Edit2: wait a minute, now I see you mentioned you have scaling set to 200%, so possibly this is something I can set here to see what happens. I know in theory moving to NET 4.8 gives access to a different windows forms that could possibly improve this situation but maybe it's something better in ags4.

edmundito

Quote from: eri0o on Sat 27/05/2023 15:36:39Edit2: wait a minute, now I see you mentioned you have scaling set to 200%, so possibly this is something I can set here to see what happens. I know in theory moving to NET 4.8 gives access to a different windows forms that could possibly improve this situation but maybe it's something better in ags4.

To clarify, I have to set it to 200% because the whole desktop would be too small to read. When I change it to 100%, the editor looks fine (same as 3.6.0) so it may be that the scaling setting is not compatible with the current forms.

You can test it out by going to the Windows screen/display settings and changing the scale.
The Tween Module now supports AGS 3.6.0!

eri0o

#7
@edmundito made a test for download here, where the color palette, sprite manager, inventory and lipsync panels should be scaling correctly. Could you try to see if I am on the right path?

edmundito

@eri0o I tested the build and the panels you mentioned are looking good!



The Tween Module now supports AGS 3.6.0!

Crimson Wizard

#9
Updated to Beta 2
(Please use download links in the first post)

This includes all the fixes from 3.6.0 Patch 2 too.

Backported a group of UI improvements from ags4 branch (forgot to do this much earlier); + couple of simple but convenient script events.

Editor:
- Improved Room Editor controls:
   Added free panning mode done by holding the middle mouse button, or alternatively - by holding Space + LMB.
   Mouse Wheel without key modifiers scrolls the room vertically; Shift + Mouse Wheel scrolls the room horizontally.
   Zoom is done by Ctrl + Mouse Wheel and room now zooms towards or outwards the cursor position.
 - In Room Editor the context menu is now displayed by RMB, or Shift + RMB while editing masks.
   The individual room mode menu is merged with the "copy coordinates" command when shown.
 - Reimplemented multiple sprites properties edit in the Sprite Manager. This ability was dropped in 3.5.0 unintentionally.
 - Added "Leave room after fade-out" event to Rooms (script function called "Unload" by default).

Script API:
 - Implemented Room's "After fade-out" event.
 - Added eEventLeaveRoomAfterFadeout event for the global "on_event".
 - Added eEventGameSaved event which runs after game was saved.


Also fixed Sprite Manager and Inventory pane's misalignment on Windows 10+ with desktop scaling. There are few more panes that have the problems, but they were not fixed yet, as it turned out to be more difficult to be compatible with different OSes and scaling variants.

boycalledjames

#10
@Crimson Wizard

As requested, just reporting the scaling issues discussed previously on Discord.

3.6.1 WIP build scaling bug:
Text and icons on the AGS Editor UI appear small or cut off and become difficult to navigate when using a 4K display on Windows 10/11. This can be mitigated somewhat by setting Windows' High DPI settings under the exe's properties to either 'System' or 'System (enhanced)'. However, this overrides AGS Editor's in-game Fullscreen/Windowed scaling settings when playtesting, resulting in pixels that stretch and warp at uneven rates when sprites move across the screen.

(Configuring the High DPI settings separately on the acwin.exe has also been tested, but this does not appear to impact results.)

Crimson Wizard

Updated to Beta 3
(Please use download links in the first post)

Changes in this update:

Editor:
- In Sprite Manager added command "View" -> "Show filenames" which toggles display of a sprite's source filename under the sprites.
- During sprite export Editor will display a proper progress dialog.
- Added Translated property to all GUI Controls (was available only in ListBox). Translated property tells whether this control's text has to be translated, and applied text direction (in right-to-left text mode).
 - Reverted Editor's "dpi awareness" (possibly temporarily), as in current state it was causing disproportional scaling of Editor and editor plugins' panels on Windows 10+ with enabled desktop scaling.
 - Fixed importing SCI fonts with >128 chars.
 - Fixed font preview did not properly display characters with indexes 128-255 (regression since 3.6.0).
 - Fixed full spritefile recreation would write duplicate sprites into the spritefile, if game project (Game.agf file) contained multiple sprites with same ID for any reason (for example, if they were added by manually editing Game.agf).

Script API:
 - Added Game.ResetDoOnceOnly(), which completely resets all DoOnceOnly instances.

Engine:
- Performance improvement to creating, deleting and manipulating Overlays; allows the game to have thousands of those with much less slowing down.
- Buttons, ListBoxes and TextBoxes now support Right-to-left text direction.
- DrawingSurface.DrawString now supports Right-to-left text direction.
- Object.SetView now lets invalid loop and frame values, and fallbacks to using loop 0, frame 0, printing a warning. This is also consistent with backwards-compatble SetObjectFrame() behavior.
- Engine will disable vsync in a "infinite fps" mode, because vsync prevents getting more fps.
- Engine will force any in-game debug messages to be displayed in standard message boxes, disregarding game's "Display all messages as speech" option.
- Fixed character & object tint usage was inverted: applied ambient tint when told to use explicit one, and vice-versa (regression in previous 3.6.1 Beta).
- Fixed speechlines were adjusting their Y position while trying to not overlap GUIs even when these GUIs are completely offscreen.
- Fixed first Sierra-style speechline in a sequence was adjusting its Y position without need when GUIs are set to be hidden during game pause (this includes blocking speech). Normally, the speechlines are adjusting their Y position in order to not overlap GUIs, but when GUIs are hiding during speech there should not be any need to do so.
- Fixed GUI controls were not redrawn right after option OPT_RIGHTTOLEFT is changed in script.
- Fixed "noloopcheck" script function modifier was not handled correctly sometimes (regression in 3.6.0).

Engine Plugin API:
- Fixed IAGSEngine.GetFontType() incorrectly reporting TTF font type for WFN fonts with more than 128 characters.

Compatibility:
- Fixed Object.SetView() and SetObjectFrame() not treating -1 for loop and frame as "keep previous values" in older games.



NOTE: I will need to make another patch to 3.6.0 bit later with few of these fixes, because they also apply there.

Crimson Wizard

Unfortunately this was not noticed prior to Beta 3 release, but there's a new regression: the GUI labels do not draw any text in the Editor (at design time).

Here's a fixed update:
https://cirrus-ci.com/task/6658536059437056

Crimson Wizard

#13
Updated to Beta 4
(Please use download links in the first post)

Changes in this update:

Editor:
- Added TextureCacheSize and SoundCacheSize properties to Default Setup. These let configure the sizes of runtime texture and sound cache sizes respectively.
- Fixed Labels don't draw text in preview (regression since the previous Beta 3).

Engine:
- Implemented "texture cache", in addition to the existing "sprite cache". The texture cache keeps textures generated from raw sprites and lets reusing them, improving performance and reducing CPU workload. The textures mostly occupy the video memory (on GPU). The actual impact is proportional to the game's resolution and amount of simultaneously animated objects on screen.
- All the script File functions now treat paths in case-insensitive way (including subdirs), which makes them platform-independent.
- Added new config settings in "graphics" section: "sprite_cache_size" (which replaces deprecated "cachemax" in "misc") and "texture_cache_size".

WinSetup:
- Added options for setting texture cache and sound cache size.



These were the the last major changes planned for the 3.6.1 update. I suppose we'll leave this in Beta stage for a couple of months, to let people test this, and fix/improve things as needed.

Crimson Wizard

#14
There have been a report about the recent Beta causing error
"UpdateDDBFromBitmap: mismatched colour depths".
Unfortunately, I was not able to test the game which caused this, because it is a big download, and i had issues with internet connection recently.
I suspect that particular graphic feature is causing this. I may experiment with various things, but this is a unreliable kind of test.
If anyone experience same problem, please report here!

EDIT: okay, what's happening is a "false positive" error check , happens when sprites are not 32-bit.

Crimson Wizard

#15
Updated to Beta 5
(Please use download links in the first post)

Changes in this update:

Editor:
- Support '\n' linebreak character in the Label's Text and potentially other text properties.
(along with the traditional AGS's '[')

Script API:
- Added static File.ResolvePath() and File.Path attribute.
These are mostly useful for diagnostic purposes, or logging, or to pass into plugins, for instance. File.ResolvePath() takes path like "$SAVEGAMEDIR$/data.dat" and returns the actual path on player's computer. File.Path returns the actual path this file was opened at.

Engine:
- Fixed IsSpeechVoxAvailable() returning positive result if run from IDE and Speech folder is empty.
- Fixed speech and messages were skipped by modifiers and other special keys (Ctrl, Alt, etc). (regression since 3.6.0)
Also fixed few regressions since previous Beta 4:
- Fixed engine crash when trying to render a non-32bit sprite.
- Fixed ListBox.FillSaveGameList() fills the items in a wrong order.
- Fixed File.Open() fails if no location token is present in a path.
- Fixed walkable area 0's scaling is completely ignored by characters and objects.

Plugin API:
- Added IAGSEngine.ResolveFilePath() method, which resolves a script path (with location tokens) into a proper system filepath.

Crimson Wizard

#16
Found few more regressions in 3.6.1.

One noteable one is: calling ChangeRoom from the dialog script is broken and leads to weird behavior.


EDIT: sorry, false alarm, it was a scripting mistake in my test game apparently.

.M.M.

Great work everyone, I love the way AGS gets constantly better and better with time - the log panel window is a perfect addition!

Unfortunately, every time I close the game, I get an error message:
Quote---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x0050387A; program pointer is +9904, engine version , gtags (10,70)

AGS cannot continue, this exception was fatal. Please note down the numbers above, remember what you were doing at the time and contact the game author for support or post these details on the AGS Technical Forum.



Most versions of Windows allow you to press Ctrl+C now to copy this entire message to the clipboard for easy reporting.

An error file CrashInfo.dmp has been created. You may be asked to upload this file when reporting this problem on the AGS Forums. (code 0)
---------------------------
OK   
---------------------------

I tried reinstalling (BETA 5 version), but it keeps showing up. I don't see any problem with the project - is it safe for the project files if I just continue working and ignore the error message for now?

Crimson Wizard

@.M.M.  could you try the latest build here and tell if the error still persists?
https://cirrus-ci.com/task/5862661473173504

you may download either installer or a zip archive from where it sais "Artifacts".

.M.M.

@Crimson Wizard No errors with the new build, everything runs smoothly. Thank you!  :)

SMF spam blocked by CleanTalk