AGS 3.6.1 - Release Candidate (RC 6)

Started by Crimson Wizard, Sat 06/01/2024 16:56:21

Previous topic - Next topic

Crimson Wizard

AGS 3.6.1 - RC 6
Full release number: 3.6.1.21


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: 13th March 2024

Previous stable version: AGS 3.6.0 P10 forum thread


This release is brought to you by:

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



Summary

3.6.1 update is focused mainly on improving performance and usability of existing features.

The noteable addition to the Editor is a "Log Panel", which lets you read game logs right in the editor's window. "Goto definition" now works on game object script names and opens their respective panels. Room editor features better panning and zoom controls. Views allow to select and modify multiple frames at once.

In the engine, there's a significant improvement to script performance, which may make script-heavy games run 30-40% faster compared to AGS 3.6.0 (these were real test results on a certain game with 3D simulation). There's a big improvement to the speed of manipulating Overlays, and general speed improvement of graphics rendering primarily useful for high resolution games.

There are other fixes and additions to various parts of the program too.

The full changelog follows.


What is new in 3.6.1

Common features:
- Implemented Deflate compression option for sprites.
- 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.
- 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 (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.
- 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.
- Adjust sprites' import settings after "Crop sprite edges" command; this would ensure that these sprites are restored from source file keeping their cropped sizes.
- 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.
- 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.
- 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 a warning condition for copying 32-bit bitmaps to a desktop clipboard of less color depth.
- 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 keyboard shortcuts for GUI Editor's Copy and Paste commands.
- 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 Editor could miss some of the files when cleaning up old compiled files after the Game's Filename property is changed.
- Fixed "Auto-number speech lines" and "Create voice acting script" operations failing if a Character's name contains underscore.

Scripting:
- Support "#else" preprocessor directive.
- Fixed escaped character literals not being parsed correctly. This makes character literals like '\n' and '\t' actually work in script.

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 sprite 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:
- Updated to SDL 2.28.5 and SDL_Sound 2.0.3+.
- 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 actual impact is proportional to the game's resolution and amount of simultaneously animated objects on screen.
- Improved OpenGL texture management, which should result in less system and video memory spent on sprite textures.
- WFN font renderer now too supports unicode mode and renders texts in utf-8, so long as the font contains glyphs of corresponding indexes.
- 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.
- 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 that when Overlays have identical ZOrder they will be sorted in the order of their creation. Besides convenience, this is also meant to restore historical behavior from before Overlay.ZOrder property was introduced.
- Allow game to call DynamicSprite.CreateFromDrawingSurface() and CreateFromBackground() with zero or negative size, clamping it to 1x1, in consistency with Create().
- 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.
- Display critical alerts as message boxes on all platforms that support that (unless engine is run with "--no-message-box" parameter).
- 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 script behavior in case a local variable was assigned a value without being initialized with a zero memory by compiler's intruction beforehand. This is not a problem with the standard compiler, but technically could be an issue with any custom implementation.
- Fixed old-style letterbox viewport getting broken after loading an old pre-3.5.0 save.

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.
- 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 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.
- 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.*.

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

Windows:
 - 32-bit Windows engine is now built as "large address aware" program, which will allow it to use up to 3 GB of RAM on 32-bit systems and 4 GB of RAM on 64-bit systems (was 2 GB previously).

WinSetup:
- Added options for setting texture cache and sound cache size.
- Added options to disable particular graphic drivers and graphic driver selection, and fullscreen mode selection.





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

vga256

Can confirm the dissolve transition transparency fix works great. Thank you!

Dave Gilbert

Quote- 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.

This alone is worth the update. Thanks so much! Can't wait to dive in.

Dave Gilbert

Sorry for the double post. I've installed the RC and I've run into a weird issue. When I make an executable of my game and try to run it, the music does not play. But when I run my game in test mode by pressing F5, the music plays normally. Other sounds like sfx play fine. Here are my setup settings:



Any light-shedding appreciated!

-Dave

eri0o

#4
I reproduce @Dave Gilbert mentioned issue. It seems it's just audio files that are big enough to require streaming (bigger than MaxLoadAtOnce). I am not sure yet why - (load_sound_clip is giving me a nullptr).

I get 0 frames here
https://github.com/icculus/SDL_sound/blob/c5639414c1bb24fb4eef5861c13adb42a4aab950/src/SDL_sound_vorbis.c#L126

Edit: reported it here
https://github.com/adventuregamestudio/ags/issues/2287

Crimson Wizard

Yes, there was a mistake in one of the recent betas. I cannot believe i missed this, probably was testing games without audio lately. I will have to create a new release today.

eri0o


Crimson Wizard

@Dave Gilbert there's a temporary build with a fix here:
https://cirrus-ci.com/task/5565412033691648

Something else came up, so I'm delaying a proper update for a short while.

Dave Gilbert

The fix works! Music now plays properly. Thanks so much.  :-D

Crimson Wizard

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

Editor:
 - Adjust sprite's import settings after "Crop sprite edges" command; this would ensure that this sprite is restored from source file keeping the cropped size.
 - Fixed "\\[" escaped sequence not saved correctly in game properties (GUI Label, etc) (regression since 3.6.1 Beta).
 - Fixed a warning condition for copying 32-bit bitmaps to a desktop clipboard of less color depth.
 - Fixed keyboard shortcuts for GUI Editor's Copy and Paste commands.

Engine:
 - Fixed NumPad keys not handled properly by the engine (in on_key_press, IsKeyPressed, and TextBox control).
   This is a regression since 3.6.0.
 - Fixed loading pre-3.* games could lead to a memory corruption (regression in RC1).
 - Fixed audio not playing when loaded from the game package (regression in RC1).

Dave Gilbert

#10
I am unsure if this issue has been here for awhile, or if it's new to RC2.

In my game, I animate heads on top of bodies (using two different characters) so they can do gestures and expressions seperately. I noticed that if I tick the "render sprites at screen resolution" option on, and play the game in a window, there are lines where the heads and bodies meet:



(there's a line on the man's neck as well but it's harder to notice).

In fullscreen, everything is displayed fine.

I personally don't use the "render sprites at screen resolution" option, but I feel like this shouldn't be the proper behavior? I'm sure someone, somewhere, will accidentally turn it on and call it a bug. :) Anyway, will keep plugging away!

-Dave

Edit: Some additional info!  I typically use openGL. I tested it in "software renderer" mode and the line didn't show up.
Edit2: I tried it in Direct3D mode and the line returned.
Edit3: Here's some more! I typically run the game using "linear interpolation". I switched to "nearest neighbor" just to check and the line didn't show up in any of the three drivers.

Crimson Wizard

#11
Quote from: Dave Gilbert on Fri 12/01/2024 22:37:11I am unsure if this issue has been here for awhile, or if it's new to RC2.

In my game, I animate heads on top of bodies (using two different characters) so they can do gestures and expressions seperately. I noticed that if I tick the "render sprites at screen resolution" option on, and play the game in a window, there are lines where the heads and bodies meet

This has been an issue for a while. I've seen it in another game, run in 3.6.0, and maybe earlier versions, where similar problem affected walk-behinds. It looked like a 1 pixel gap between walkbehind cut-out and a non-walkbehind part of room background.

This problem exists only in non-software renderers, and is probably related to a "uneven" texture size.
Linear interpolation causes antialiasing where texture edges may become half-translucent. Although I can't remember if this problem was seen with nearest-neighbour or not.

At the moment, I don't know how to fix this, or if this is even possible to fix in the engine.

The only non-engine solution I may think of is to overlay objects a little, by a few pixel lines. In other words, you make your head sprites higher by 2-3 pixels and have copy of body pixels in this extra part. When positioning, the head should overlay a body by this amount (or other way around). This might make things look seamless.

eri0o

@Dave Gilbert curious, can you check if the heads where the line appears between the bodies have odd height? If they are indeed an odd height, can you try adding an empty blank line so they have even height and see if this fixes? (I don't know how you attach the heads to the bodies though, the code there may need adjustments because characters usually are referenced by feet)

Snarky

#13
It occurs to me that the way I would probably do this compositing of separate character parts would be to make both the sprites the full character size, just with transparent portions. That way the positioning and scaling would be trivial. Is that what you've done as well, @Dave Gilbert?

Because in that case, I think the seams may be an unavoidable consequence of smooth scaling. A pixel that belongs 50% to the head sprite and 50% to the body sprite will end up 25% transparent, because each part is rendered at 50% opacity.

The only way around it I can think of is to merge the two sprites together on a full-scale dynamic sprite and then scale that—but this might end up causing the game to stutter.

Edit: Another possible solution, if there is a static overlap between the two parts of the character (i.e. a row of pixels along the seam that doesn't animate), would be to include this overlap in both sprites. While this will not completely eliminate the seam in all situations, it will make it a lot less noticeable.*

Unfortunately, if you do this you might end up with a little "bump" along the edge of the character, as the anti-aliased edge become less transparent than it is supposed to be just there. If this is noticeable in practice, a refinement would be to exclude the edge pixel from the overlap.

Similarly, the approach only works if the character is fully opaque. For a semi-transparent character (like a ghost or hologram), you will be drawing the overlap twice and therefore end up with the opposite problem: a line where the opacity is too high.

*I believe that in general, with an overlap of n pixels and a scaling factor of p, the worst case is ((1-np)/2)^2. With no overlap, this gives a 25% transparent seam in the worst case at 50% scaling (or, in this case, any scaling). With 1 pixel overlap, it gives just a 6.25% transparent seam at the same scaling. (And if np>= 1, there will be no seam at all; so that with a 2-pixel overlap you are guaranteed no seam at 50% scaling or above.)

Dave Gilbert

You are right. If I extend the head/neck areas by a few pixels it does make the line go away. There are dozens of characters in the game so I was hoping to avoid having to manually edit every single talking frame on every expression for every character  (that's hundreds of files), but if it can't be avoided I guess that's what I'll do. That's what I get for not testing this out long before now! Thanks either way.  :grin:

Crimson Wizard

#15
Quote from: Dave Gilbert on Sun 14/01/2024 18:59:26You are right. If I extend the head/neck areas by a few pixels it does make the line go away. There are dozens of characters in the game so I was hoping to avoid having to manually edit every single talking frame on every expression for every character  (that's hundreds of files), but if it can't be avoided I guess that's what I'll do. That's what I get for not testing this out long before now! Thanks either way.  :grin:

I'm certain that this may be automated. If your sprite files are organized in pairs (e.g. by having matching part in the name), someone could write a tool that would load both images, copy first few non-transparent lines from body sprite to head sprite, and save head sprite. Then you could run this tool over a folder with image files.

Snarky

#16
Yeah, depending on how you have it set up, it may be fairly simple to automate (ideally as a batch operation over all files, but at least to do the necessary edit as a single action on each file). Might be possible to do as a macro in Photoshop with a bit of ingenuity, if you're not prepared to script it in a command-line tool like imagemagick.

If you have to check in each case how many rows of pixels you can overlap before it starts interfering with the animation, things get a lot more complicated.

(I thought I should also mention that this approach will not be exactly identical to the "correct" approach of pre-merging the sprites, since along the edge the pixels that are part of the overlap will have more weight than neighboring pixels that aren't part of the overlap when rendering the final "smooth-scaled" pixel value, since they are drawn twice. For example, a rendered pixel that should properly be an even 50-50 blend of two neighboring sprite pixels may end up as a 75-25 blend instead. I think in most cases this will not be noticeable, though.)

eri0o

Hey, did more people downloaded and ran this version? I saw few comments here.

Dave Gilbert

#18
Update on the weird line situation. I did a few more tests and found an area where there are lines around the boundries of a object that is placed on top of another object. For context, there is a door. The player clicks on the door hotspot, then the door object appears and plays an opening animation. When the door object appears, there are lines around it:

Version with the object not visible (no lines)


Version with the object visible. Note the lines,

I'm curious why the lines only appear on the sides, and not the top and bottom.

Unlike the character sprites I mentioned earlier, the object sprite and background aren't slotting together like jigsaw pieces. The door object is placed directly over the door in the background image. There are no alpha channels on the sprite. (Here is the sprite if you want to have a look)

I'm using the same settings as before (openGL, "render sprites at screen resolution" ticked on, only happens in windowed mode)

Any help appreciated!

-Dave

Crimson Wizard

Quote from: Dave Gilbert on Wed 17/01/2024 23:17:59I'm using the same settings as before (openGL, "render sprites at screen resolution" ticked on, only happens in windowed mode)

Could you clarify if this happens with any filter or only linear one?

I suppose that this happens in windowed mode probably because then the screen resolution is not evenly divided on game resolution. It's also possible that if you resize the window, the lines will look different.


In regards to fixing this, I currently don't have much ideas.
But I think it may be worth rendering this sprite to a completely white surface, and also write the texture to file to see the actual runtime texture contents. Because it will be interesting to find out which color these lines actually are, and if these black lines appear as a part of a texture, or as a result of that texture being rendered on screen.

Writing the texture to a file would require some addition or a hack to the engine.

Dave Gilbert

#20
Ah. Good question. I tested it and the problem seems to have gone away when I switch to "nearest neighbor." But since the game is so high res, the nearest neighbor filter scales the character sprites *horribly* when in windowed mode (especially when the monitor is 1920 x 1080, the window size is smaller than the game's native resolution) so I prefer to stick with linear interpolation.



Crimson Wizard

Strictly speaking, for the 1920x1080 game "render sprites at screen resolution" setting is useless, unless the monitor is much bigger (2k, 4k).

I will try to investigate this problem again, but last time I failed to get any fixing ideas in the engine, so cannot promise anything.

Dave Gilbert

4K monitors are quite common now! But keeping it in "linear interpolation" mode fixes any problem.

For my end, I was experimenting with zooming in, and I noticed it got very pixellated when "render at screen resolution" was disabled, and looked much better when it was ticked. But I was just playing around. I can just as easily do without it.

Crimson Wizard

Quote from: Dave Gilbert on Thu 18/01/2024 19:18:074K monitors are quite common now! But keeping it in "linear interpolation" mode fixes any problem.

I am confused, earlier you said that the problem appears with "linear interpolation"?

Dave Gilbert

#24
The problem occurs with linear interpolation AND "render at screen resolution". If I untick "render at screen resolution", the lines don't appear in windowed mode even if I'm using linear interpolation.

What I was referring to is if the game is running on a 4K monitor, keeping it in linear interpolation mode still looks decent.

Crimson Wizard

#25
Quote from: Dave Gilbert on Thu 18/01/2024 20:46:00What I was referring to is if the game is running on a 4K monitor, keeping it in linear interpolation mode still looks decent.

Ah, alright.

Have you tried "smooth scaled sprites" option? I think it uses linear interpolation for scaled sprites, while keeping the final game scaling using nearest neighbour.
This may or may not improve things with zooming things even without "render in screen resolution", but I cannot predict how that will look like.

Crimson Wizard

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

Engine:
- Updated to SDL 2.28.5 and SDL_Sound 2.0.3+.
- Display critical alerts as message boxes on all platforms that support that (unless engine is run with "--no-message-box" parameter).
- Fixed failing comparison between character[] script array's element and a Character* pointer (regression since the recent 3.6.1 RC).

iOS:
- Fixed some game elements could potentially be rendered incorrectly in "Render in screen resolution" mode.
(NOTE: this is NOT related to Dave Gilbert's problem described above.)

noblonski

hello, something probably pretty specific happened to me after upgrading from 3.6.0 to RC2 (haven't tried RC3 yet): i'm using the FloatingHotspot Module by Calin Leafshade and in order to not show any hotspots when the interface is inactive,

repeatedly_execute_always
Code: ags
if (IsInterfaceEnabled()== false) FloatingHotspot.SetMaxWidth(0);
else FloatingHotspot.SetMaxWidth(100);


worked like a charm in 3.6.0. after the upgrade it seems as if it was not set to 0 as all the hotspots were still displayed when the interface was inactive but with something like 10 px or so (the hotspots were still displayed but vertically). I'm already using another dirty workaround by doing this instead

Code: ags
if (IsInterfaceEnabled()== false) FloatingHotspot.SetVerticalOffset(400);
else FloatingHotspot.SetVerticalOffset(0);

Crimson Wizard

#28
@noblonski

I found the module here:
https://www.adventuregamestudio.co.uk/forums/modules-plugins-tools/module-floating-hotspot-label/msg636606047/#msg636606047

When I check the code for the SetMaxWidth, here how it looks like:
Code: ags
static void FloatingHotspot::SetMaxWidth(int width)
{
  MaxWidth = _clamp(width, 10, System.ViewportWidth);
}

In other words, it limits hotspot to the range 10 -> ViewportWidth.

I am not sure how this may have different effect between 3.6.0 and 3.6.1.
Could there be another reason why it became invisible in 3.6.0?

On a side note, I think it's a design flaw that there's no function that would hide this overlay explicitly, like FloatingHotspot.SetVisible.

noblonski

that would explain THAT  :-D
i have no idea why it worked (or in this case rather didn't work) in 3.6.0
maybe a bug that worked in my favour haha. just checked the script in the 3.6.0 and it's the same.
thanks a lot.

Crimson Wizard

The cases like this may be difficult to diagnose within a full game. It would be more convenient if one makes a dummy test game with just this module and commands that set it up, and does this SetWidth change.
If that alone does not work, then keep copying any parts of the code that may affect the module or overlay that it creates.

Crimson Wizard

@Dave Gilbert, there's a good chance that I found the fix for these "lines" around the objects.

https://github.com/adventuregamestudio/ags/pull/2315

The test build will be found here in a short while:
https://cirrus-ci.com/task/6006716257533952

Dave Gilbert

Oh awesome! Thanks! I'll nab this and test in an hour or two when I'm at my desk.

Dave Gilbert

I confirmed with CW already, but for everyone else: this seems to have fixed the issue for me. Thank you!

edmundito

@Crimson Wizard The links on the first post need to be updated. Part of the URL path is still pointing to the previous version so the files are not found.
The Tween Module now supports AGS 3.6.0!

Crimson Wizard

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

Editor:
 - Fixed "Auto-number speech lines" and "Create voice acting script" operations failing if a Character's name contains underscore.

Compiler:
 - Fixed escaped character literals not being parsed correctly. This makes character literals like '\n' and '\t' actually work in script.

Engine:
 - When Texture Cache is comparable in capacity to the Sprite Cache, the engine will skip storing raw sprites in the cache when creating textures from them, in order to avoid meaningless duplicate memory usage.
 - Ensure that when Overlays have identical ZOrder they will be sorted in the order of their creation. Besides convenience, this is also meant to restore historical behavior from before Overlay.ZOrder property was introduced.
 - Improved OpenGL texture management, which should result in less system and video memory spent on sprite textures.
 - Fixed OpenGL renderer causing scaled sprites to have colored outlines sometimes while using Linear filter.

Windows:
 - 32-bit Windows engine is now built as "large address aware" program, which will allow it to use up to 3 GB of RAM on 32-bit systems and 4 GB of RAM on 64-bit systems (was 2 GB previously).

WinSetup:
 - Added options to disable particular graphic drivers and graphic driver selection.

Dave Gilbert

Woo! Dutifully nabbed. So far so good. Will let you know if any weird issues crop up.

cat

I have a very weird issue with 3.6.1 (RC2 and RC4) related to "ShowPlayerCharacter". When I set this to false in my starting room (a title screen) the mouse cursor is invisible. When I move the cursor over GUI buttons, the hover effect is activated and I can click the button. When I now click exit with my invisible mouse cursor, the exit confirmation dialog of the BASS template shows up and suddenly the mouse cursor is back. When I now click "Play" i.e. cancel the quit dialog, the cursor is invisible again. When I click to start the game (change to room1) the cursor is still invisible, even though this room has a visible player character.
I can directly relate this to the "ShowPlayerCharacter" setting of the starting room. I searched the manual but wasn't able to find anything related to this setting. Is it even accessible in code?

I mitigated the problem by moving the player character outside the screen instead of using the setting.

Crimson Wizard

Quote from: cat on Wed 07/02/2024 19:44:32I have a very weird issue with 3.6.1 (RC2 and RC4) related to "ShowPlayerCharacter". When I set this to false in my starting room (a title screen) the mouse cursor is invisible.
<...>
I can directly relate this to the "ShowPlayerCharacter" setting of the starting room. I searched the manual but wasn't able to find anything related to this setting. Is it even accessible in code?

According to the engine code, "ShowPlayerCharacter" disables the "Walkto" cursor mode.
Accidentaly, BASS template uses "Walkto" mode as default, even though it's just a pointer graphic.

Possible solutions are:
1. Fix BASS template to use another default cursor mode instead, like Interact or Pointer.
2. Enable "Walkto" mode right after room is loaded (using Mouse.EnableMode().

cat

Quote from: Crimson Wizard on Wed 07/02/2024 21:48:43According to the engine code, "ShowPlayerCharacter" disables the "Walkto" cursor mode.
Accidentaly, BASS template uses "Walkto" mode as default, even though it's just a pointer graphic.
Ah, this was the missing information. I suspected that it might be related to the BASS template. AGS is mostly built for the Sierra interface with all those mouse modes.

QuotePossible solutions are:
1. Fix BASS template to use another default cursor mode instead, like Interact or Pointer.
2. Enable "Walkto" mode right after room is loaded (using Mouse.EnableMode().
I think this should be fixed in the BASS template, because it is shipped with AGS and a very popular one. However, I would be cautious just changing the default cursor mode. Who knows what else might break when doing this.

At least, now the problem is documented somewhere. The next person searching the forums for it will find this thread and possible workarounds.

Crimson Wizard

There's a problem found in the most recent update, RC4, which causes crash on startup under following conditions:
- OpenGL graphics driver
- Your computer has a ATI graphics card.

Following is a temporary build with a fix:
https://cirrus-ci.com/task/5996131579068416

Dave Gilbert

Oh thank you! A number of testers complained that the game crashed when using OpenGL but I always assumed it was something dumb on my end! I incorpoerated this into the recent build and I'll let you know if anyone has the same issue.

Crimson Wizard

Quote from: Dave Gilbert on Thu 15/02/2024 20:59:46Oh thank you! A number of testers complained that the game crashed when using OpenGL but I always assumed it was something dumb on my end!

The crash with "Unhandled exception" error is always engine's fault. Please report all of these!

Crimson Wizard

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

Updated to have all fixes from v3.6.0 - P10.

Other changes:

Editor:
- Fixed in room editor character and object sprites drawn without transparency.

Engine:
- Fixed a crash when trying to initialize OpenGL renderer, specific to systems with AMD/ATI video cards.

vga256

Just upgraded a 3.6.0.51 project to 3.6.1.20. It ran correctly and without errors in 3.6.0.51, but now it is crashing and throwing an error at startup with 3.6.1.20.

For context: The game involves a lot of procedural generation at startup, which is probably where it is generating the crash.

---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x004210E9; program pointer is +3, engine version 3.6.1.20, gtags (379,16)
------------


Crashdump is available if that helps. I can also provide you with the entire project source if you prefer. About one out of 20 times running the game, it yields an 'out of bounds' array index of -1 in one of my function calls. This is strange, because I am not able to replicate that bug in my scripts using 3.6.0.51.

Crimson Wizard

#45
Quote from: vga256 on Wed 21/02/2024 03:01:38Crashdump is available if that helps. I can also provide you with the entire project source if you prefer. About one out of 20 times running the game, it yields an 'out of bounds' array index of -1 in one of my function calls. This is strange, because I am not able to replicate that bug in my scripts using 3.6.0.51.

Yes, please, either a Crashdump or a compiled game would be necessary.
Also, could you elaborate, does it crash all the time or not, and if yes, then when does the "out of bounds" happen?

vga256

Quote from: Crimson Wizard on Wed 21/02/2024 03:47:43Yes, please, either a Crashdump or a compiled game would be necessary.
Also, could you elaborate, does it crash all the time or not, and if yes, then when does the "out of bounds" happen?

It crashes every time time after running, and only about 5% of the time (or less - I'm just guessing the frequency) does it trap an out of bounds error and halts execution before a crash can happen. I can't tell if the two are related, or coincidental. (Link to compiled game and crashdump sent via PM.)

Crimson Wizard

#47
Quote from: vga256 on Wed 21/02/2024 15:49:33It crashes every time time after running, and only about 5% of the time (or less - I'm just guessing the frequency) does it trap an out of bounds error and halts execution before a crash can happen. I can't tell if the two are related, or coincidental. (Link to compiled game and crashdump sent via PM.)

The crash happens with Software renderer. Other renderers make it run, it seems, but then the script mistakes may or not happen (it actually opened a game few times).

The crash with Software renderer is occuring within a call to Display, inside "game_start" (specifically it is displaying text "x 11 y 10 currentMapWidth 64", if that matters). It looks like engine is trying to draw room viewport for some reason, although the room is not loaded yet, and this where it crashes because some data is not initialized yet. I would need to investigate this, but most likely it's simply should be skipping certain steps when the game is drawn without any loaded room.

EDIT: yes, it's confirmed, in 3.6.1 calling Display in game_start crashes the game if using Software renderer.

vga256

#48
Quote from: Crimson Wizard on Wed 21/02/2024 16:36:55The crash with Software renderer is occuring within a call to Display, inside "game_start" (specifically it is displaying text "x 11 y 10 currentMapWidth 64", if that matters). It looks like engine is trying to draw room viewport for some reason, although the room is not loaded yet, and this where it crashes because some data is not initialized yet. I would need to investigate this, but most likely it's simply should be skipping certain steps when the game is drawn without any loaded room.

EDIT: yes, it's confirmed, in 3.6.1 calling Display in game_start crashes the game if using Software renderer.

Interesting. I added that Display call in game_start, just before I uploaded the binary, just to see if I could trace the source of the 'out of bounds' -1 index error.
UPDATE: just confirmed - yep, I had a second Display call buried in my initialization code that was triggering the crash. It is definitely caused by Display in game_start by the software renderer.

Crimson Wizard

#49
@vga256 here's a temp build with a fix:
https://cirrus-ci.com/task/5204100904648704

Clarifying, this fixes Software renderer for any case when the game is drawn before the first room was loaded, for any reason (called Display in game_start, or else).

vga256

CW - Thanks for figuring this out and the fix. Confirmed working on my end.

imagazzell

#51
My apologies if this has been addressed elsewhere that I couldn't find (I did search), or if this is the wrong place to be asking, but has the Sprite Cache size limit been increased at all in either 3.6.0 or this new build, or is it still capped at 512 MB, as in 3.5.1?

My game is hi-res and has a number of big (both in dimensional size and length) animations, and runs like a slug on some systems. I imagine a larger cache size limit (at least 1 GB / 1024 MB), in addition to the other performance enhancements you guys have been working on, could help.

If this has not been implemented, I'd humbly request it to be considered, if anyone else would also find it helpful.
Music Composing Services: https://youtu.be/BbT3kfhgA4E

Crimson Wizard

#52
Quote from: imagazzell on Wed 28/02/2024 07:03:37My apologies if this has been addressed elsewhere that I couldn't find (I did search), or if this is the wrong place to be asking, but has the Sprite Cache size limit been increased at all in either 3.6.0 or this new build, or is it still capped at 512 MB, as in 3.5.1?

Hello. The Sprite Cache size was never capped in the engine. What is limited is the numbers shown in "setup" program, which are chosen arbitrarily, judging by the average AGS games demand. But it's still possible to set your own value in the "Default Setup" pane in the editor, or config file directly.

Another thing to keep in mind is that AGS engine was a 32-bit program, and could not exceed 2 GB of total memory on Windows.


Quote from: imagazzell on Wed 28/02/2024 07:03:37My game is hi-res and has a number of big (both in dimensional size and length) animations, and runs like a slug on some systems. I imagine a larger cache size limit (at least 1 GB / 1024 MB), in addition to the other performance enhancements you guys have been working on, could help.

There are few things to mention here about 3.6.1 version.
1. The selection in setup program has been increased to 1 GB for a 32-bit engine and 2 GB for a 64-bit engine.
2. Besides sprite cache, there's now a "texture cache" that speeds up game run with Direct3D/OpenGL renderers, and for those renderers it's now more important than the sprite cache. Often it's better to keep texture cache at high values (if you have enough system and video card memory), and sprite cache at moderate levels.
3. OTOH, caches help when images and animations repeat. But they don't help when animation or image is shown for the first time, because loading takes time. For this purpose we added experimental functions called Game.PrecacheSprite and Game.PrecacheView. These are meant to be cache number of sprites or views prior to certain scene, e.g. during some "loading" screen.
4. The 32-bit engine for Windows is now built with a certain flag, which lets it use up to 4 GB of RAM. In theory one may also use 64-bit engine that can use even more than that, but we do not distribute it along with AGS Editor at the moment, there are some remaining organizational issues. Maybe we eventually will do this.


All that said, I usually advise to also look for opportunities to optimize the game. There may be ways to reduce amount of memory an animation requires, thus reducing time it is loaded and prepared for display, and increase number of animations which may be loaded into a cache.

imagazzell

Thanks for all the info, CW!

Yes, sorry, I meant the limit in the setup program. I should have been more clear about that. I'm glad to hear that limit has been raised.

But it does sound like I would probably benefit more from the new precache functions you mentioned, as the lag seems to be its worst the first time an animation is run. Has the local Help file been updated to explain how to use these new functions?

I also get lag and stuttering when playing .ogv cutscenes, but I'm guessing that's related to something else (perhaps just general slowness of the test system involved). I wonder if any of the other new enhancements may help with that at all.

I will also try to optimize my animations, as you suggest, by seeing where I can crop out any excess transparent pixels, etc.
Music Composing Services: https://youtu.be/BbT3kfhgA4E

Crimson Wizard

In regards to the 3.6.1 release progress. Given there's not many serious bugs found recently in 3.6.1, I maybe won't be releasing any more "RC" updates, but wait for 1-2 weeks and release a final 3.6.1 (unless something serious is found in the meantime, of course).


Quote from: imagazzell on Wed 28/02/2024 17:04:33I also get lag and stuttering when playing .ogv cutscenes, but I'm guessing that's related to something else (perhaps just general slowness of the test system involved). I wonder if any of the other new enhancements may help with that at all.

It's difficult to tell without knowing specifics. But in general, firstly, PlayVideo adjusts game's FPS for the duration of video playback. Secondly, iirc there's no buffering implemented at all, meaning it has to decode and prepare a new frame synchronously with the game update. If this is a HD video, that will take roughly as much time as would a full-screen sprite.

imagazzell

I want to give a big "thank you" to you guys for the performance enhancements. 3.5.1 builds of my game ran like a snail on my household's other system. I'm not sure if it was the new PrecacheView function (which I made good use of), the enlarged cache sizes, other changes you've made, or all of the above, but it runs great now. View animations, OGV playback, even simple dialogue exchanges are all noticeably snappier and smooth now. So THANK YOU! Well done.

I do have a couple quick questions:

1. Was something changed about either room_load or the fade scripts since 3.5.1? In upgrading to 3.6.1, I needed to move my FadeIn commands from the end of room_load, where I used to have them and they worked fine, to the beginning of the "after fade in" function (which seems backward to me). Otherwise, my pre-fade commands (characters moving into position, etc.) were now happening after the fade.

2. I don't know if this issue is new to 3.6.1, but some of my default setup choices are not sticking in the "winsetup" program after compiling. Most notably for me right now is the scaling method. I selected "linear interpolation" in the default setup pane, but after compiling, it reset to "nearest-neighbour". Is there some reason Windows would make this selection by default, or should that setting be keeping? I noticed something similar previously with the driver mode resetting to OpenGL even though I had Direct3D 9 selected in default setup, but this seemed to be fixed after de-selecting and re-selecting it. The same solution didn't seem to work for the scaling method though...
Music Composing Services: https://youtu.be/BbT3kfhgA4E

Crimson Wizard

#56
Quote from: imagazzell on Mon 11/03/2024 20:15:101. Was something changed about either room_load or the fade scripts since 3.5.1? In upgrading to 3.6.1, I needed to move my FadeIn commands from the end of room_load, where I used to have them and they worked fine, to the beginning of the "after fade in" function (which seems backward to me). Otherwise, my pre-fade commands (characters moving into position, etc.) were now happening after the fade.

Normally you should not run anything blocking, that requires "wait", or any visual effects in "room_load" (aka before fade-in) because room is not supposed to be drawn at this time. I do not know exactly why it worked in 3.5.1 or earlier, but maybe it was not entirely consistent in this regard. The correct way is to have only starting room setup in "room load" and run any effects, animations or cutscenes in "after fade in".

The "fade in" in these events is referring to the built-in AGS transition. If you are using custom transition, then normally you should set built-in transition style to "Instant", and run your own transition in "after fade-in" event. This recommendation may be found on AGS forums too.

If AGS had a mechanism to let user override transition effect, and had some kind of a "transition state" that user could handle in script, then things would sound more logical, but it does not have this now.

EDIT:
But because new version in 3.* branch must be backwards compatible, I would need to fix the FadeIn command not working in room load, since it worked before.


Quote from: imagazzell on Mon 11/03/2024 20:15:102. I don't know if this issue is new to 3.6.1, but some of my default setup choices are not sticking in the "winsetup" program after compiling. Most notably for me right now is the scaling method. I selected "linear interpolation" in the default setup pane, but after compiling, it reset to "nearest-neighbour".

Winsetup displays a configuration merged from at least 2 sources: default config file found in the game's directory (this is what you set in Default Setup), and player's config found in game's save folder. If you want to see what the default config looks like in winsetup, then delete config file from save folder.
You may refer this article for more information:
https://adventuregamestudio.github.io/ags-manual/EngineConfigFile.html

imagazzell

#57
Quote from: Crimson Wizard on Mon 11/03/2024 21:29:32EDIT:
But because new version in 3.* branch must be backwards compatible, I would need to fix the FadeIn command not working in room load, since it worked before.
I wouldn't want you to have to go through whatever work that would entail just because of me and my freakishly unorthodox game. Please only make that change if you can confirm that 3.5.1 works that way on your end as well.

Quote from: Crimson Wizard on Mon 11/03/2024 21:29:32Winsetup displays a configuration merged from at least 2 sources: default config file found in the game's directory (this is what you set in Default Setup), and player's config found in game's save folder. If you want to see what the default config looks like in winsetup, then delete config file from save folder.
You may refer this article for more information:
https://adventuregamestudio.github.io/ags-manual/EngineConfigFile.html
So then, if I'm following correctly, if I were to launch the program on a new system with no prior save data, or delete the entire save folder beforehand, shouldn't the configuration take on the settings I made in Default Setup? Because it's not (at least the scaling method isn't; it always resets to "nearest-neighbour" on a fresh launch). Even on my primary system, where I had previously set the configuration (both in AGS and the player config) to linear interpolation, a new build has nearest-neighbour selected.

EDIT:
Interestingly, if I open the compiled acsetup.cfg file (the one in the installation directory, not in the save folder) with Notepad, it does show "filter" set to "linear", but winsetup still shows "nearest-neighbour" upon each new build. Does winsetup only take effect if the user makes changes and hits Save, or should it be matching what's in the default acsetup.cfg from the get-go? In other words, would a fresh launch of the game on a system with no prior AGS configurations be following the settings in acsetup.cfg, regardless of what winsetup may show?
Music Composing Services: https://youtu.be/BbT3kfhgA4E

imagazzell

Unrelated (possible) UI bug, regarding the new Log Panel:

I can open and close it repeatedly from the "Window" dropdown menu just fine. If, however, I close it with the "X" on the log panel itself, it won't re-open again until I restart AGS.
Music Composing Services: https://youtu.be/BbT3kfhgA4E

Crimson Wizard

#59
So, I fixed few mistakes reported lately, and here's a AGS update that may be downloaded from our build server:
https://cirrus-ci.com/task/6526915163455488

- fixed characters and objects not visible on screen if FadeIn() is called in "room load" event.
- fixed graphic filter not selected correctly on winsetup launch.
- fixed LogPanel cannot be restored after closing it by pressing "x" button.

there are few more, but they are related to obscure and deprecated features.

I will likely release a new proper RC update soon, given there have been a bunch of fixes made in the last several days; so I want to give users an opportunity to test the newest version.

imagazzell

Thank you! All appears to be working right on my end now.
Music Composing Services: https://youtu.be/BbT3kfhgA4E

Crimson Wizard

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

This update fixes a number of regressions found in 3.6.1, and few more minor things.

Editor:
- Fixed Log Panel could not be shown again using menu command if it was closed by pressing "x" button.

Engine:
- Removed "supersampling" option from OpenGL renderer for now, as it's not consistent with the other renderers and not maintained properly.
- Allow game to call DynamicSprite.CreateFromDrawingSurface() and CreateFromBackground() with zero or negative size, clamping it to 1x1, in consistency with Create().
- Fixed Software render crashes if rendering in "game_start" script (for instance, if there's a call to Display).
- Fixed some TextBox keys were still tested while interface is disabled.
- Fixed old-style InventoryScreen dialog not letting to select an item.
- Fixed mouse cursor being visible during fade-out and fade-in transitions (this applies to texture-based renderers, Software renderer historically displays a cursor during fade-out, and that cannot be fixed easily at the moment).
- Fixed room objects and characters not drawn in correct positions if FadeIn() command was called in "room load" event.
- Fixed Crossfade and Dissolve transitions not rendering correctly in old-style letterboxed games.
- Fixed one extra frame drawn before Crossfade or Dissolve fade-in starts, causing a room to "blink".
- Fixed couple of potential crashes occuring during render after RunAGSGame() command.
- Fixed unnecessary warning about "dynamic sprite not deleted" displayed on exit for sprites generated by textual overlays.
- Fixed IAGSEngine.SimulateMouseClick() in plugin api causing stack overflow due to infinite recursion.
- Fixed old-style letterbox viewport getting broken after loading an old pre-3.5.0 save.

Android:
- In AGS Player removed currently unused "Super sampling" and "Drop video frames" preference settings.

Winsetup:
- Added config option to disable fullscreen mode selection.
- Fixed "graphics filter" option not displaying a correct initial selection.

Baguettator

I tried to build my game, using the AGS 3.6.1.21 version, and for the first time, I got a message :
"Unable to set EXE name/description: LoadLibrary failed"

Also Windows Defender detected a Trojan just at this moment.

but the game seems to have been built successfully...

Any idea ?

Crimson Wizard

Quote from: Baguettator on Thu 28/03/2024 12:14:41Also Windows Defender detected a Trojan just at this moment.

Yes, Windows Defender wrongly detects built AGS games as a Trojan:
https://www.adventuregamestudio.co.uk/forums/beginners-technical-questions/compiling-errors-due-to-virus-scanner/

For this reason it may block certain actions during game compilation, like changing icon to game exe.

In the short term this is solved by adding AGS program folder and your game's folder to Windows Defender exceptions.
In the long term, it's better to send a false positive report, as mentioned here, and hope that they will fix this in some of the future updates:
https://www.adventuregamestudio.co.uk/forums/beginners-technical-questions/compiling-errors-due-to-virus-scanner/msg636660137/#msg636660137

Crimson Wizard

Ah, I've been waiting more than planned... I suppose that we may have a "stable" 3.6.1 declared around 1st April, just for the sake of having a "round date".

EDIT: also 3.6.0 was released 1st April 2023, so it's a sort of anniversary too:
https://www.adventuregamestudio.co.uk/forums/ags-engine-editor-releases/ags-3-6-0/

RootBound

Quote from: Crimson Wizard on Fri 29/03/2024 12:16:04Ah, I've been waiting more than planned... I suppose that we may have a "stable" 3.6.1 declared around 1st April

Does this include the bug fix we discussed on discord, where restoring a save game didn't retain camera coordinates? Or was that only a problem in 3.6.0 builds?
They/them. Here are some of my games:

Crimson Wizard

Quote from: RootBound on Fri 29/03/2024 12:27:20Does this include the bug fix we discussed on discord, where restoring a save game didn't retain camera coordinates? Or was that only a problem in 3.6.0 builds?

This fix was included in both 3.6.0 and 3.6.1.
I will likely release another 3.6.0 patch first, because there was a number of more minor mistakes found there, and then 3.6.1.


SMF spam blocked by CleanTalk