AGS 3.5.0 - Patch 1

Started by Crimson Wizard, Mon 30/12/2019 21:05:07

Previous topic - Next topic

Crimson Wizard

AGS 3.5.0 - Patch 1
Full release number: 3.5.0.23


For Editor
Spoiler

For Android
Spoiler

For Engine/Editor developers
Spoiler

Released: 30th December 2019

Previous stable version: AGS 3.4.3 P1 forum thread


This release is brought to you by:

- Alan v. Drake
- BigMC (fixes to building on some Linux systems)
- ChamberOfFear (Editor's Color Themes)
- Crimson Wizard
- John Steele Scott (OpenGL support on Linux)
- eri0o (documentation updates and work on CI system)
- Martin Sedlak (new pathfinding)
- Matthew Gambrell (better threaded audio support and bug fixes)
- monkey0506 (steam/gog plugin stubs)
- morganw
- rofl0r (bug fixes)
- scottchiefbaker (fixes to building on some Linux systems)
- sonneveld
- tzachs (new navigation bar for the Room Editor)



Foreword

AGS 3.5.0 has brought a number of completely new features and changed few older things. Make sure to read "Upgrade to AGS 3.5" topic (and corresponding topics for previous versions) in the manual to learn more about these changes. If something is not clear or missing, please tell about it and we will add necessary information. (Online version: https://github.com/adventuregamestudio/ags-manual/wiki/UpgradeTo35)
Note that now we have a new manual project, where the source is in Wiki format that everyone with github account can edit here: https://github.com/adventuregamestudio/ags-manual/wiki . We will appreciate any help in expanding and improving the manual, because AGS documentation had been lacking clear info about many things for too long.
We may be updating this release with patches to manual too as it is being amended.



Changes in the Patch 1:

Editor:
- Fixed changing Audio Clip ID or deleting a clip could break sound links in view frames.
- Fixed importing an older version project during the same editor session, in which one game was already opened, could assign previous game's GameFileName property to the next one.
- Fixed some fonts may be not drawn on GUI preview after any font with lower ID was modified.
- Fixed Pause and Stop buttons were enabled when first opening an audio clip preview, and clicking these could lead to a crash.
- Fixed a potential crash during audio clip preview (related to irrKlang .NET library we use).
- Fixed a potential resource leak in the sprite preview.

Engine:
- Fixed IsKeyPressed script function returning values other than 0 or 1 (broke some scripts).
- Fixed grey-out effect over disabled GUI controls was drawn at the wrong coordinates.

Templates:
- Updated Tumbleweed template to v1.3.



What is new in 3.5.0

NOTE: Following list also contains changes made in AGS 3.4.4, they are fully integrated into 3.5.0, of course. 3.4.4 version was never formally released on forums, because it was mainly quick update for Linux port (and there were some other issues with the release process).


Common features:
- Now using Allegro v4.4.3 library (previously v4.4.2).
- Support for large files: compiled game, sprite set, room files now may exceed 2 GB.
- Deprecated relative assets resolutions: now sprites, rooms and fonts are considered to match game's resolution by default and not resized, unless running in backwards-compatibility mode.
- Allow room size to be smaller than the game's resolution.
- Removed fonts count limit.
- Raised imported sprites count limit to 90000 and removed total sprite count limit (this means you may have around 2 billions of dynamic sprites).
- Removed length limit on the Button and TextBox text (was 50 and 200 respectively).
- Removed limit on ListBox item count (was 200).

Editor:
- Editor requires .NET Framework 4.5 to run. Dropped Windows XP support.
- Editor preferences are now stored using .NET configuration model, instead of the Windows registry.
- Added support for custom UI color themes.
- Added "Window" - "Layout" submenu with commands for saving and loading panel layout.
- Game and room templates are now by default saved in AppData/Local/AGS folder. Editor finds them in both program folder and AppData.
- Allow to change IDs of most of the game items in the project tree by swapping two existing items. This is done by calling a context menu and choosing "Change ID".
- Added "Game file name" option to let users easily set compiled game file's name.
- Added "Allow relative asset resolutions" option to "Backwards Compatibility" section. Disabled by default, it makes game treat all sprites and rooms resolution as real one.
- Added "Custom Say/Narrate function in dialog scripts" options which determine what functions are used when converting character lines in dialog scripts to real script.
   Important: this does not work with the "Say" checkbox. The workaround is to duplicate option text as a first cue in the dialog script.
- New revamped sprite import window.
- Sprites that were created using tiled import can now be properly reimported from source.
- Added context menu command to open sprite's source file location.
- Using Magick.NET library as a GIF loader. This should fix faulty GIF imports.
- New sprite export dialog that lets you configure some export preferences, including remapping sprite source paths.
- Sprites have "Real" resolution type by default. "Low" and "High resolution" are kept for backwards compatibility only. When importing older games resolution type will be promoted to "Real" whenever it matches the game.
- New navigation bar in the room editor, which allows to select any room object or region for editing, show/hide and lock room objects and regions in any combination. These settings are saved in the special roomXXX.crm.user files.
- Improved how Room zoom slider works, now supports downscale.
- Added "Export mask to file" tool button to the Room Editor.
- Added MaskResolution property to Rooms. It ranges from 1:1 to 1:4 and lets you define the precision of Hotspot, Regions and Walkable Areas relative to room background.
- Added "Default room mask resolution" to General Settings, which value will be applied to any room opened for editing in this game for the first time.
- Added "Scale movement speed with room's mask resolution" to General Settings.
- Removed Locked property from the Room Object, objects are now locked by the navbar.
- Split GUI's Visibility property into PopupStyle and Visible properties.
- Added Clickable, Enabled and Visible properties to GUI Controls.
- "Import over font" command now supports importing WFN fonts too.
- Removed "Fonts designed for high resolution" option from General Settings. Instead added individual SizeMultiplier property to Fonts.
- Alphabetically sort audio clips in the drop lists.
- Display audio clip length on the preview pane without starting playback.
- Sync variable type selector in Global Variables pane with the actual list of supported script types.
- Added ThreadedAudio property to Default Setup.
- In preferences added an option telling whether to automatically reload scripts changed externally.
- Added "Always" choice to "Popup message on compile" preference. Successful compilation popup will only be displayed if "Always" choice is selected.
- Added shortcut key combination (Shift + F5) for stopping a game's debug run.
- Don't display missing games in the "recent games" list.
- Build autocomplete table a little faster.
- Disabled sending crash reports and anonymous statistics, because of the AGS server issues.
- Disabled screenshot made when sending a crash report, for security reasons.
- Corrected .NET version query for the anonymous statistics report.
- Fixed Default Setup was not assigned a proper Title derived of a new game name.
- Fixed crash and corruption of project data when writing to full disk.
- Fixed saving sprite file to not cancel completely if only an optional step has failed (such as copying a backup file).
- Fixed changing character's starting room did not update list of characters on property pane of a room editor until user switches editing mode or reloads the room.
- Fixed room editor kept displaying selection box over character after its starting room has changed.
- Fixed room editor not suggesting user to save the room after changing object's sprite by double-clicking on it.
- Fixed sprite folders collapsing after assigning sprite to a View frame or an object.
- Fixed view loops displayed with offset if the view panel area was scrolled horizontally prior to their creation.
- Fixed MIDI audio preview was resetting all instruments to default (piano) after pausing and resuming playback.
- Fixed MIDI audio preview had wrong control states set when pausing a playback.
- Fixed autocomplete not showing up correctly if user has multiple monitors.
- Fixed autocomplete crashing with empty /// comments.
- Fixed script compiler could leave extra padding inside the compiled scripts filled with random garbage if script strings contained escaped sequences like "\n" (this was not good for source control).
- Fixed Audio folders were displaying internal "AllItemsFlat" property on property grid.
- Fixed crash when editor was updating file version in compiled EXE but failed and tried to report about that.

Scripting:
- Fixed compiler was not allowing to access regular properties after type's static properties in a sequence (for example: DateTime.Now.Hour).

Script API:
- Introduced new managed struct Point describing (x,y) coordinates.
- Introduced StringCompareStyle enum and replaced "caseSensitive" argument in String functions with argument of StringCompareStyle type.
- Implemented Dictionary and Set script classes supporting storage and lookup of strings and key/value pairs in sorted or unsorted way. Added SortStyle enum for use with them.
- Implemented Viewport and Camera script classes which control how room is displayed on screen.
- Implemented Screen struct with a number of static functions and properties, which notably features references to the existing Viewports. Deprecated System's ScreenWidth, ScreenHeight   ViewportWidth and ViewportHeight in favor of Screen's properties.
- Added Game.Camera, Game.Cameras and Game.CameraCount properties.
- All functions that find room objects under screen coordinates are now being clipped by the viewport (fail if there's no room viewport at these coordinates). This refers to: GetLocationName, GetLocationType, IsInteractionAvailable, Room.ProcessClick, GetWalkableAreaAt and all of the GetAtScreenXY functions (and corresponding deprecated functions).
- Added Character.GetAtRoomXY, Hotspot.GetAtRoomXY, Object.GetAtRoomXY, Region.GetAtScreenXY, replaced GetWalkableAreaAt with GetWalkableAreaAtScreen and added GetWalkableAreaAtRoom.
- Replaced Alignment enum with a new one which has eight values from TopLeft to BottomRight.
- Renamed old Alignment enum to HorizontalAlignment, intended for parameters that are only allowed to be Left, Center or Right.
- Added new script class TextWindowGUI, which extends GUI class and is meant to access text-window specific properties: TextColor and TextPadding.
- Added new properties to GUI class: AsTextWindow (readonly), BackgroundColor, BorderColor, PopupStyle (readonly), PopupYPos.
- Added Button.TextAlignment and Label.TextAlignment.
- Added missing properties for ListBox: SelectedBackColor, SelectedTextColor, TextAlignment, TextColor.
- Replaced ListBox.HideBorder and HideArrows with ShowBorder and ShowArrows.
- Added TextBox.ShowBorder.
- Added AudioClip.ID which corresponds to clip's position in Game.AudioClips array.
- Added Game.PlayVoiceClip() for playing non-blocking voice.
- Added SkipCutscene() and eSkipScriptOnly cutscene mode.
- Allowed to change Mouse.ControlEnabled property value at runtime.
- Added Game.SimulateKeyPress().
- Added optional "frame" parameter to Character.Animate and Object.Animate, letting you begin animation from any frame in the loop.
- Deprecated "system" object (not System struct!).
- Deprecated Character.IgnoreWalkbehinds and Object.IgnoreWalkbehinds.
- Deprecated DrawingSurface.UseHighResCoordinates. Also, assigning it will be ignored if game's "Allow relative asset resolutions" option is disabled.

Engine:
- New pathfinder based on the A* jump point search.
- Implemented new savegame format. Much cleaner than the old one, and easier to extend, it should also reduce the size of the save files.
   The engine is still capable of loading older saves, temporarily.
- Implemented support for sprite batch transformations.
- Implemented custom room viewport and camera.
- Removed limits on built-in text wrapping (was 50 lines of 200 chars max each).
- Removed 200 chars limit for DoOnceOnly token length.
- Try to create all subdirectories when calling File.Open() for writing, DynamicSprite.SaveToFile() and Game.SetSaveGameDirectory().
- Reimplemented threaded audio, should now work correctly on all platforms.
- Made debug overlay (console and fps counter) display above any game effects (tint, fade, etc)
- Made fps display more stable and timing correct when framerate is maxed out for test purposes.
- Print debug overlay text using Game.NormalFont (was hard-coded to default speech font).
- Improved performance of hardware-accelerated renderers by not preparing a stage bitmap for plugins unless any plugin hooked for the particular drawing events.
- Reimplemented FRead and FWrite plugin API functions, should now work in 64-bit mode too.
- Support "--gfxdriver" command line argument that overrides graphics driver in config.
- Implemented "--tell" set of commands that print certain engine and/or game data to stdout.
- Use "digiid" and "midiid" config options to be used on all platforms alike and allow these to represent driver ID as a plain string and encoded as an integer value (for compatibility).
- Completely removed old and unsupported record/replay functionality.
- Replaced number of fatal errors reported for incorrectly called script functions with a warning to the warnings.log instead. This is done either when arguments may be fixed automatically, or script command simply cannot be executed under current circumstances.
- Expanded some of the error messages providing more information to end-user and developers.
- Fixed engine could not locate game data if relative path was passed in command line.
- Fixed potential bug which could cause DoOnceOnly tokens to be read incorrectly from a savedgame.
- Fixed engine crashing with "division by zero" error if user set InventoryWindow's ItemWidth or ItemHeight to 0.
- Fixed engine crashing if Object.SetView is called with a view that does not have any loops.
- Fixed old walk-behind cut-outs could be displayed on first update in a room if the room's background was modified using raw drawing commands before fade-in. This happened only when running Direct3D or OpenGL renderer. Note that this bug was probably never noticed by players for a certain barely related reason.
- Fixed BlackBox-in transition done by software renderer could have wrong aspect ratio.
- Fixed Direct3D and OpenGL displayed pink (255, 0, 255) fade as transparent.
- Fixed Direct3D was slightly distorting game image in pixel perfect mode.
- Fixed Direct3D was not clearing black borders in fullscreen, which could cause graphical artifacts remaining after the Steam overlay, for example.
- Fixed potential crash that could happen when switching between fullscreen and windowed mode, or switching back into game window (only observed on Linux for some reason).
- Fixed a bug in mp3/ogg decoder where it assumed creating an audiostream succeeded without actually testing one.
- Fixed increased CPU load when displaying built-in dialogs (save, restore etc).
- Fixed Character.DestinationY telling incorrect values beyond Y = 255.
- Fixed DynamicSprite.SaveToFile() not appending ".bmp" if no extension was specified.
- Fixed IsMusicVoxAvailable() not working correctly in old games which use 'music.vox'.
- Restored support for running games made with experimental 3.3.0 CR version.
- Fixed character's blinking frames drawn incorrectly when legacy sprite blending mode was on.
- Restored legacy InventoryScreen() behavior which picked sprites 0, 1, 2 for inventory dialog buttons when predefined 2041, 2042 and 2043 were not available.
- Fixed negative "cachemax" value in config could lock the engine at startup.
- Added Scavenger's palgorithms plugin to the list of builtins, for ports that use ones.
- Added stubs for monkey0506's Steam and GoG plugins to let run games on systems that do not have Steam/GoG installed (all related functionality will be disabled though).
- Added stubs for SpriteFont plugin.
- Added missing stubs for agswadjetutil plugin.

Linux:
- Support for OpenGL renderer.
- Use same FreeType library sources as Windows version, which suppose to fix TTF font glitches.
- Re-enabled threaded audio setting.
- $APPDATADIR$ script paths are now mapped to "$XDG_DATA_HOME/ags-common", making sure it is a writeable location.

Windows:
- Windows version of AGS is now built with MSVS 2015 and higher.
- Engine is marked as a DPI-aware application that supposed to prevent window scaling by system.

WinSetup:
- Added "Enable threaded audio" checkbox.





Thanks to everyone who contributed to and tested this version!




KNOWN ISSUES

1. Dictionary and Set script classes can cause game to crash when writing a save.
Here's a hotfixed version of the engine, to replace the acwin.exe in the Editor's program folder: https://www.dropbox.com/s/wxij0bx9w82q3da/acwin-3.5.0-p2--fix-dict-set.zip?dl=0
There should be an official patch released soon.

Fetito

The "Tumbleweed" template gives me the following error message when I try to compile:

"CustomDialogGui.asc(431): Error (line 431): '.ViewportHeight' is not a public member of 'System'. Are you sure you spelt it correctly (remember, capital letters are important)?"

File:



Cassiebsg

The viewport functions have been redone.

You have 2 choices:
- Download the new updated version of the template here: https://www.adventuregamestudio.co.uk/forums/index.php?topic=54762

- Go into settings and set compability mode to previous version of ags.
There are those who believe that life here began out there...

eri0o

Wait, theoretically this last version had the tumbleweed template updated.  :undecided:

Fetito

Quote from: eri0o on Wed 01/01/2020 00:04:25
Wait, theoretically this last version had the tumbleweed template updated.  :undecided:

Well, yes it's from the updated 3.50 patch 1 version.

Fetito

Nevermind. I deleted the corresponding user directory and created a new project. Now it works. False alarm. Issue resolved. Probably there was still an old file that could not be updated to patch 1.

Crimson Wizard

Quote from: Fetito on Wed 01/01/2020 01:34:32
Nevermind. I deleted the corresponding user directory and created a new project. Now it works. False alarm. Issue resolved. Probably there was still an old file that could not be updated to patch 1.

Hmm, this may be an issue. AGS now reads templates from 2 places: "Templates" inside Editor program folder (default) and also user folder - this is where templates are saved by default when you create them. Patches - they only change contents of Editor installation if you install over older program.

Do you remember how did you get templates in the user folder?

Fetito


Neo_One

The two main templates I always use work for me: Sierra and Lucasarts.
For now, Sierra's one doesn't give problems, even though I'm modifying icons and the default resolution.

jomalin

#9
Quote from: Crimson Wizard on Wed 01/01/2020 11:03:35
Quote from: Fetito on Wed 01/01/2020 01:34:32
Nevermind. I deleted the corresponding user directory and created a new project. Now it works. False alarm. Issue resolved. Probably there was still an old file that could not be updated to patch 1.

Hmm, this may be an issue. AGS now reads templates from 2 places: "Templates" inside Editor program folder (default) and also user folder - this is where templates are saved by default when you create them. Patches - they only change contents of Editor installation if you install over older program.

Do you remember how did you get templates in the user folder?

I installed AGS in a new clean Windows 10 installation and i also get this error and then dozens more related to the same kind of thing. I fixed it by myself changing the function calls to the new scripting API ones (but i checked also this can be solved changing the API compatibility to the old one without doing any changes in the code). I think the template should use the new scripting API functions instead of the old ones. I can't remember now if i downloaded the 3.5 or the 3.5 Patch1 (that PC is not in the city where i live now)

Crimson Wizard

#10
Quote from: jomalin on Fri 03/01/2020 12:21:35
I installed AGS in a new clean Windows 10 installation and i also get this error and then dozens more related to the same kind of thing. I fixed it by myself changing the function calls to the new scripting API ones (but i checked also this can be solved changing the API compatibility to the old one without doing any changes in the code). I think the template should use the new scripting API functions instead of the old ones. I can't remember now if i downloaded the 3.5 or the 3.5 Patch1 (that PC is not in the city where i live now)

The templates that come with the 3.5.0 are supposed to be updated to 3.5.0 API. It's better to get to the bottom of that is happening, whether the package contains wrong version of templates, or they fail to overwrite old ones in the Editor folder, or something else...

It's not only about using newer API functions, but template scripts could be updated to a more advanced version, so it will be a shame if they dont install correctly.


UPD Tried installing AGS 3.5.0 p1 using installer exe, the templates are correct and build as-is.

Do you usually use installer, or ZIP, and do you install/unpack over existing installation?

Crimson Wizard

#11
I made an organizational mistake in the middle of 2019: there was another minor release called AGS 3.4.4, which contained certain fixes and couple of features accumulated over past period during development of 3.5.0. But it was never properly announced on these forums for two reasons: first it was mainly for Linux port users, and second I believed that 3.5.0 will be released very soon (which happened only after another 6 months).

Nothing bad happened, but following changes were not initially mentioned in the posted 3.5.0 changelist, because they were "formally" part of 3.4.4. All of them are, of course, technically a part of 3.5.0 too. I added these items to the list in the first post, but also want to put it here to let everyone notice:

Extra changes in 3.5.0/3.4.4

Editor:
- Disabled screenshot made when sending a crash report, for security reasons.
- Fixed Audio folders were displaying internal "AllItemsFlat" property on property grid.
- Fixed crash when editor was updating file version in compiled EXE but failed and tried to report about that.

Engine:
- Fixed Character.DestinationY telling incorrect values beyond Y = 255.
- Fixed DynamicSprite.SaveToFile() not appending ".bmp" if no extension was specified.
- Fixed IsMusicVoxAvailable() not working correctly in old games which use 'music.vox'.
- Restored support for running games made with experimental 3.3.0 CR version.
- Fixed character's blinking frames drawn incorrectly when legacy sprite blending mode was on.
- Restored legacy InventoryScreen() behavior which picked sprites 0, 1, 2 for inventory dialog
   buttons when predefined 2041, 2042 and 2043 were not available.
- Fixed negative "cachemax" value in config could lock the engine at startup.
- Added Scavenger's palgorithms plugin to the list of builtins, for ports that use ones.
- Added stubs for monkey0506's Steam and GoG plugins to let run games on systems that do not have Steam/GoG installed (all related functionality will be disabled though).
<------- This supposedly may let you run steam games without steam, but with all steam features disabled
- Added stubs for SpriteFont plugin.
- Added missing stubs for agswadjetutil plugin.

Linux:
- Support for OpenGL renderer. <------- This one is most important IMHO.

AGD2

Not sure where to post this, so putting it here.

There may be an engine bug in the following situation. If your game contains lip-synced speech audio with Papagayo .DAT files. You run the game with the feature enabled and see it working correctly. Then, while the game is still running, set Speech.VoiceMode=eSpeechTextOnly and then make a lip-synced line of character dialog play. Even though text-only mode (no voice) is enabled, the Sierra-style dialog portrait will still animate with phonemes, like it is reading and playing them directly from the .DAT files, although the corresponding voice won't play (as intended). Instead, the Sierra portrait is supposed to animate in a repeating loop, ignoring phoneme .DAT or .PAM files, until the dialog box disappears.

The glitch can be seen in Mage's Initiation. On the title screen, click Options and set the voice slider all the way to the far-left side (text-only, voices off). Then start a new game and go talk to any NPC. You'll see the game is in text-only mode, but NPC's character portrait mouth frames are using phonemes. You can reset the glitch by opening the options menu in-game, sliding the voice slider back up (this sets Speech.VoiceMode back to eSpeechVoiceAndText or eSpeechVoiceOnly). And then talking to an NPC again. It seems you actually need to talk and hear a line of lipsynched audio to reinitialize it, not just slide the slider. At this point, if you slide the speech slider back to "Text-Only" mode again and then talk to an NPC, their dialog portrait will work correctly - it will not use phonemes anymore in text-only mode, and will play their Animated portrait using the standard loop.

The reason I suspect this is an engine glitch is because AFAIK, there's no way for a user to manually enable or disable audio lip-syncing with a script command, and it's entirely handled internally, depending on the value of Speech.VoiceMode. Is that correct?

Snarky

#13
I'm not sure I agree this is a bug. If lipsync is defined for a line, I think it makes sense that it is used whether or not the voice audio is played.

Edit: But yes, it would be nice if the setting could be changed from script.

AGD2

The strange thing is that it gives inconstant results if you toggle the speech between voice modes and then back to text-only mode.

In text-only mode, sometimes the portrait animation adheres to the phonemes in the corresponding speech file (which isn't audibly playing). The dialog portrait stops animating at the same time the speech audio would have stopped playing. Then the remainder of the dialog remains on-screen with the portrait's mouth closed. Note that setting Speech.DisplayPostTimeMs to any value has no effect whatsoever in this case.

While other times in text-only mode, it plays the dialog talking animation without referencing the phonemes. It just plays the animation loop in a regular "bubble gum chewing" pattern (same looped frames repeated in order) until the dialog box disappears. The mouth never closes. In this case, Speech.DisplayPostTimeMs works in accordance with whatever value you set it to.

greg

I've started getting the following error message when launching (or playing) the game via the editor.  The game crashes and quits as soon as it appears:

"The game engine does not appear to have shut down properly. If the problem persists, post the problem on the Tech forum."

About 60% of the time, the error occurs at launch.  The other 40% of the time, the error occurs during game play.  (I've noticed that it accompanies actions such as skipping a cutscene, saving the game, or playing an audio file.)  No message is generated in warnings.log.

This also affects the game exe.  When I compile the game and launch it via the exe, the game instantly quits at the point that the error message would have appeared (e.g. sometimes at launch, sometimes when skipping a cutscene / playing a sound / saving), but the error message itself is not displayed.

Finally, the error persists between computers.  Namely, when I copied the game files to a different computer and ran them there, I received the same error.

PS: I'm not sure if this is related, but in the last session before I noticed the crashes, I used the editor to delete two audio clips and import two new ones with the same file names and clip names as the previous ones, but with different IDs.  (As expected, the AGS-assigned IDs for the new clips were different from the old ones since, when I deleted the original clips, AGS shifted down by 2 the IDs of all the remaining clips with higher IDs.)

Crimson Wizard

Quote from: greg on Sun 19/01/2020 19:58:22
I've started getting the following error message when launching (or playing) the game via the editor.  The game crashes and quits as soon as it appears:

When it crashes, does it display any actual error message, other than "not shut down properly"?
Does it generate a Crash***.dmp file?

greg

Quote from: Crimson Wizard on Sun 19/01/2020 20:20:41
Quote from: greg on Sun 19/01/2020 19:58:22
I've started getting the following error message when launching (or playing) the game via the editor.  The game crashes and quits as soon as it appears:

When it crashes, does it display any actual error message, other than "not shut down properly"?
Does it generate a Crash***.dmp file?

Nope, there's no error message beyond that "not shut down properly" dialogue box.  Similarly, there's no Crash*.dmp file in the game directory (i.e. the folder where Game.agf is) or its subdirectories.

Crimson Wizard

Would it be possible to test your compiled game somehow?

greg

Quote from: Crimson Wizard on Sun 19/01/2020 20:36:53
Would it be possible to test your compiled game somehow?

Sure, I'll upload it to Dropbox and PM you the link.

Cassiebsg

Can it be the usual anti-virus protection shutting down the game? Avast is notorious for hating AGS games.  :(
There are those who believe that life here began out there...

Snarky

Has it already been reported or discussed that the .chm help file (what you get when pressing F1) no longer lists the entries for the various API classes under Scripting in the Table of Contents? They're only available through a separate "Scripting API" page, and there's no listing: you have to scroll through the whole documentation for each class to find the function/property you're looking for, and there's absolutely no way to see the APIs for different classes at the same time.

I use this reference constantly (as I'm sure most who code in AGS do), and have relied on being able to quickly navigate, glance through and rapidly examine multiple functions in different classes (quickly enough that I can have several of them in working memory at the same time), so to me this change is a pretty big deal that seriously degrades my workflow.

Crimson Wizard

#22
Quote from: Snarky on Sun 19/01/2020 20:58:58
Has it already been reported or discussed that the .chm help file (what you get when pressing F1) no longer lists the entries for the various API classes under Scripting in the Table of Contents? They're only available through a separate "Scripting API" page, and there's no listing: you have to scroll through the whole documentation for each class to find the function/property you're looking for, and there's absolutely no way to see the APIs for different classes at the same time.

I use this reference constantly (as I'm sure most who code in AGS do), and have relied on being able to quickly navigate, glance through and rapidly examine multiple functions in different classes (quickly enough that I can have several of them in working memory at the same time), so to me this change is a pretty big deal that seriously degrades my workflow.

There's a number of things that changed since we moved to different help source format, and some were not fixed yet, others are a matter of discussion and remain under question.

For example, I was asking to return index entries for separate function/property names, e.g. "Walk", "Move", "Font property". In the old manual, there were index entries both with type name prefixed, like "Character.Walk", and without it, just "Walk"; also in case of shared function names - "Move (character)", "Move (object)" and so on. I found it simplier to search for the name of the function in the index's input box to get there faster, but now one has to search for full Type.Function entry, or type full function name, with type prefix, in the input field.

Morganw, on other hand, argues that these shorter names clobbered the index and made it harder to read. So, I don't know, if my way of using index was only my subjective way of using it.

I guess we may need to gather some kind of a style guidelines for the manual again, define how to organize it correctly.

If you have any suggestions, here's the separate tracker for the manual issues: https://github.com/adventuregamestudio/ags-manual/issues

eri0o

The audio substitution, was it done in which specific version  of the editor?

Crimson Wizard

Quote from: eri0o on Sun 19/01/2020 23:25:47
The audio substitution, was it done in which specific version  of the editor?

What is audio substitution?

Crimson Wizard

#25
Quote from: greg on Sun 19/01/2020 20:39:23
Quote from: Crimson Wizard on Sun 19/01/2020 20:36:53
Would it be possible to test your compiled game somehow?

Sure, I'll upload it to Dropbox and PM you the link.


I can confirm that the game crashes, and there's also a standard Windows "Program stopped responding" message appearing.

UPDATE: There's some serious memory issue in the engine, this needs additional research, but I can tell it is somehow relevant to dynamic objects, and happens when game is saved (probably a restore point made at startup).

I can also mention, that the game data in the Compiled/Windows folder seem corrupted somehow, because when I try to run it under debugger (MSVS), engine reports that the room has bad format. OTOH that room opens well in the editor, and it's strange because existing exe can run. Maybe this is not a room error, but something also related to same memory bug.

UPDATE2:  It looks like script Dictionary does not calculate the size of data correctly, and can overwrite allocated buffer when saving the game.

eri0o

#26
@Snarky, we used to have the table of content on per topic but somewhere someone thought it was too much given there's a table of content at the side, so we removed it.

https://adventuregamestudio.github.io/ags-manual/

Maybe the chm build could have the table of content that exists at the side (top on mobile) in the webview rendered at the top? Can you check the web version and confirm this would suffice?

@Crimson Wizard, greg reported he had errors after deleting and reimporting audio and I remembered on the previous version there was a post in the forums saying if you deleted and reimported an audio it could mess the indexes used with the audio in a View - which may not be relevant.

Crimson Wizard

#27
@greg Alright, so this is my mistake, the script Dictionary and Set classes save incorrectly and can crash the game when saving randomly.

Here's the patched acwin.exe that you may replace yours in the Editor program folder. We will have to release an official patch for this soon.
https://www.dropbox.com/s/wxij0bx9w82q3da/acwin-3.5.0-p2--fix-dict-set.zip?dl=0

I must also mention, that there's an unnecessary file made in 2017 called "quintus.ags" in the Compiled/Windows folder, and it contains either some corrupted data or data made by a custom version of AGS. The standalone engine detected it and tried to get some rooms from there but failed, this is how I found out.


PS. Also, I recognize "greGames" splash, are you the one who made "Jessica Plunkenstain and the Dusseldorf Conspiracy"? :)

greg

Quote from: Crimson Wizard on Mon 20/01/2020 00:28:55
Here's the patched acwin.exe that you may replace yours in the Editor program folder.

@Crimson Wizard Thank you very much for tracking down this issue and for the updated exe!  I replaced my acwin.exe and no longer get the crash.

Quote from: Crimson Wizard on Mon 20/01/2020 00:28:55
the script Dictionary and Set classes save incorrectly and can crash the game when saving randomly.

Ah, I'm using a Dictionary as a string table with over 10k strings, so I suspect that forced memory issues that more standard usage would not.  (Incidentally, the Dictionary data structure is awesome.  With AGS 3.4, I was using an array of strings + binary search as my string table.  Switching to a Dictionary greatly reduced the size of the string table and, by extension, the time required to save.)

Quote from: Crimson Wizard on Mon 20/01/2020 00:28:55
I must also mention, that there's an unnecessary file made in 2017 called "quintus.ags" in the Compiled/Windows folder, and it contains either some corrupted data or data made by a custom version of AGS.

Ack, thanks.  I've deleted this.

Quote from: Crimson Wizard on Mon 20/01/2020 00:28:55
PS. Also, I recognize "greGames" splash, are you the one who made "Jessica Plunkenstain and the Dusseldorf Conspiracy"? :)

Ha, great memory!  Yep, that was my first game back in 2005.  Quintus is my follow-up, and I've been working on it for 14 years. 8-0

Snarky

Quote from: eri0o on Sun 19/01/2020 23:58:01
@Snarky, we used to have the table of content on per topic but somewhere someone thought it was too much given there's a table of content at the side, so we removed it.

https://adventuregamestudio.github.io/ags-manual/

Maybe the chm build could have the table of content that exists at the side (top on mobile) in the webview rendered at the top? Can you check the web version and confirm this would suffice?

If I understand you correctly, no. To be clear, this is what I'm missing:



Key features:

-The sidebar lists all the different AGS classes (in some cases groups of functions)
-Each class can be expanded to see a concise quick-access list of its functions and properties
-Clicking on that function or property brings you directly to its manual entry
-You can expand multiple classes simultaneously, and scan through the sidebar list without affecting the manual entry in the main window

Yesterday I was working on something that involved speech functions and animation functions, and using these sidebar features (in 3.4, after realizing they were missing in 3.5) I could quickly navigate to the functions I needed, go back and forth between them rapidly, and compare the animation API for objects and characters (noting e.g. that there's an Object.StopAnimating() but no corresponding function for Character) without losing my place in the main window.

eri0o

#30
@Snarky, I see what you are saying and I can explain the source of the problem the best I understand, but I can't fix it - not easily. Here is a small explanation of how it works for the chm Content generation:

github.com/adventuregamestudio/ags-manual/blob/master/CONTRIBUTING.md#write-an-hhc-file

The part it is hard: Because of how the links work in Markdown format, there's no standard way to add special attributes to them, it's not trivial to derive the document structure from them - we have a web, not a tree.

As CW points, the possible solution would be to add some guidelines on how to write the documentation. We could figure something like a way to mark that a link is "primary and unique" and use this mark to give a special meaning to it in the meta yaml file and later picking it to recognize the tree structure. Of course, a better way would be a way that would not require people to read contribution guidelines for how to make links. Anyway, not sure if the explanation of the problem makes sense - I know you expect a solution...

The best I can offer right now is use of the web version with multiple tabs open. This version also has an index that is really human readable - have all entries for all things at a ctrl+f reach.

Snarky

Quote from: eri0o on Mon 20/01/2020 11:57:41
The best I can offer right now is use of the web version with multiple tabs open. This version also has an index that is really human readable - have all entries for all things at a ctrl+f reach.

To be honest, I will not be using 3.5 in its current state. This issue is a big deal to me, and along with the problem running games in Wine, it's a dealbreaker.

Quote from: eri0o on Mon 20/01/2020 11:57:41
We could figure something like a way to mark that a link is "primary and unique" and use this mark to give a special meaning to it in the meta yaml file and later picking it to recognize the tree structure. Of course, a better way would be a way that would not require people to read contribution guidelines for how to make links. Anyway, not sure if the explanation of the problem makes sense - I know you expect a solution...

I don't quite follow as I don't really know all the ins and outs of how you edit and generate the help file (not sure where in the process the yaml file comes in, for example), but… this sounds like a solution? If each entry in the scripting API is formatted a particular way, it doesn't seem that high a bar for people to follow the same format when they add something to it, which will probably be pretty rare anyway.

Crimson Wizard

Quote from: Snarky on Wed 22/01/2020 08:52:00
To be honest, I will not be using 3.5 in its current state. This issue is a big deal to me, and along with the problem running games in Wine, it's a dealbreaker.

Was the problem on Wine fixed with the version based on Allegro 4.4.2, or there was something else?

Is it related to any version of Wine or particular ones?

Snarky

The same problem is seen in multiple versions of Wine.

It seemed to work with the alternate Allegro build, but that didn't have the latest patch, did it? And I'm not entirely comfortable relying on unofficial builds. In any case, it doesn't solve the manual issue.

Crimson Wizard

#34
Quote from: Snarky on Thu 23/01/2020 13:12:42
It seemed to work with the alternate Allegro build, but that didn't have the latest patch, did it? And I'm not entirely comfortable relying on unofficial builds. In any case, it doesn't solve the manual issue.

It did not include latest patch, because I built that test earlier than the patch was released.
I am asking because I need a confirmation, to know what differences to look for.

AGD2

#35
I noticed that when using Game.IgnoreUserInputAfterTextTimeoutMs (with a setting like 1000 Ms), it works as intended and prevents the player from accidentally clicking away a new speech audio/text message if they clicked a few moments after the previous speech message disappeared.

But this also creates an unintended problem if using the player character to narrate background comments to click on things. For example, if you click the Mouth icon on a rock, the player will say the corresponding message. When said message disappears automatically - not by clicking it away (and there's no subsequent message following it), you cannot click the mouth icon on anything else until the 1000 Ms have elapsed. Can the engine be made to disregard IgnoreUserInputAfterTextTimeoutMs setting if there's no new speech message currently on-screen?

This happens with all icons. And it also affects right-clicking, meaning that when using the Sierra-style icon interface, you can't right-click to cycle through icons until the 1000 Ms have elapsed either.

AGD2

#36
I'm also getting quite frequent sprite edge artifacts in 3.5.0 when using the Open GL driver in full-screen mode. They occasionally occur in Open GL/Windowed mode as well, but are nowhere near as severe. 

Here's a comparison of the screen in both modes. The image on the left is full-screen mode with the artifact visible along the bottom edge of the dead goblin sprite. The right image is a few moments later in windowed mode. The artifacts appear and disappear consistently when Alt-Tabbing back and forth between full-screen and windowed modes. They remain in exactly the same position and retain their shape and colors when re-appearing.



--EDIT--

I just tested in an older build of the game, compiled with AGS v3.4.3.1, using the same OpenGL settings and the issue didn't occur in that older build. Perhaps the Allegero upgrade in v3.5.0 reverted a previous artifact fix?


Crimson Wizard

#37
Quote from: AGD2 on Wed 19/02/2020 11:52:12
I just tested in an older build of the game, compiled with AGS v3.4.3.1, using the same OpenGL settings and the issue didn't occur in that older build. Perhaps the Allegero upgrade in v3.5.0 reverted a previous artifact fix?

OpenGL is not handled by Allegro, but by our own code. There were some changes made for OpenGL in attempt to prevent these artifacts, but I believed they were copied same in both 3.4.3 and 3.5.0.
Are you running this game on Windows or Linux (or else)?
Could you send me a game, or particular scene, for a test? (or maybe it's one of your released games?)

AGD2

I have only tested it under Windows, which is where I noticed it.  It happens in Mages Initiation. Would you need me to compile a new version for you in AGS 3.5.0 or can you test with the older version you have?

Crimson Wizard

#39
Quote from: AGD2 on Wed 19/02/2020 16:50:22
I have only tested it under Windows, which is where I noticed it.  It happens in Mages Initiation. Would you need me to compile a new version for you in AGS 3.5.0 or can you test with the older version you have?

Are there other settings that make difference? Like graphics filter, and "render sprites at screen resolution"?

UPDATE: after some tests I noticed that this happens with nearest-neighbour filter only, is this correct?

UPDATE2: I found the obvious mistake in the code, but need some time to remember the logic behind the change. I'll try to make a test build tomorrow.

AGD2

Yes, it only seems to occur with the Nearest-Neighbour filter, that's right.

Crimson Wizard

#41
@AGD2 this is a strange oversight on my part, for some reason I thought that the fix is only necessary for linear filter, so it was disabled for NN, for "optimization", but looks like it is required unconditionally.

Here's the patched engine, please tell what are results in your game: https://www.dropbox.com/s/af2fnos9qxw9y0z/acwin-3.5.0-p2-opengl-nn-texels.zip?dl=0

Crimson Wizard

@Snarky, btw, the above build also supposed to have the allegro fix that prevented from mouse & keyboard working under Wine, so could you make a quick test too, if you have time?

AGD2

Quote from: Crimson Wizard on Thu 20/02/2020 20:31:08
@AGD2 this is a strange oversight on my part, for some reason I thought that the fix is only necessary for linear filter, so it was disabled for NN, for "optimization", but looks like it is required unconditionally.

Here's the patched engine, please tell what are results in your game: https://www.dropbox.com/s/af2fnos9qxw9y0z/acwin-3.5.0-p2-opengl-nn-texels.zip?dl=0

Thanks. I tried the new acwin.exe but I'm unable to enter full-screen mode, as pressing ALT+Enter doesn't do anything in this build when launching in windowed mode.

And if I launch in full-screen mode, it automatically applies the linear filter (despite the fact that I have the NN filter selected) and the game appears in a slightly scaled-down window with black borders surrounding it on all four sides. This happens regardless of whether I have the Open GL, Direct Draw, or Software driver selected. These are the settings I used:

Driver: Open GL
Mode: 1280 x 1024
Fullscreen scale: Stretch, preserving aspect ratio
Windowed scale: Stretch, preserving aspect ratio
Scaling method: Nearest-neighbour

Only selecting "Fill whole screen" for "Fullscreen scale" will make the game display in NN full-screen mode without the black borders, but then it looks all weird and horizontally squished.


Crimson Wizard

Quote from: AGD2 on Fri 21/02/2020 11:30:42I tried the new acwin.exe but I'm unable to enter full-screen mode, as pressing ALT+Enter doesn't do anything in this build when launching in windowed mode.

And if I launch in full-screen mode, it automatically applies the linear filter (despite the fact that I have the NN filter selected) and the game appears in a slightly scaled-down window with black borders surrounding it on all four sides. This happens regardless of whether I have the Open GL, Direct Draw, or Software driver selected.

Could you run with log and send me log contents?

Log may be activated in acsetup.cfg as
Quote
[misc]
log=1
and it should appear in %USERPROFILE%\Saved Games\.ags

AGD2

All  right, here's the contents of the log when I attempt to run the game in full screen mode from winsetup.exe using the initial settings I listed above.

LOG FILE CONTENTS

Adventure Game Studio v3.5 Interpreter
Copyright (c) 1999-2011 Chris Jones and 2011-2020 others
ACI version 3.5.0.24

Installing exception handler
Initializing allegro
Initializing game data
Looking for the game data file
Located game data file: c:/Users/Chris/repos/MAGES_~1/Compiled/Windows/MAGES_~1.EXE
Opened game data file: game28.dta
Game data version: 50
Compiled with: 3.5.0.23
Setting up game configuration
Data directory: c:/Users/Chris/repos/MAGES_~1/Compiled/Windows/
Initializing speech vox
Voice pack found and initialized.
audio.vox found and initialized.
Setting up window
Initializing TTF renderer
Initializing keyboard
Initializing mouse: number of buttons reported is 8
Install timer
Initializing sound drivers
Sound settings: digital driver ID: 'AUTO' (0xffffffff), MIDI driver ID: 'AUTO' (0xffffffff)
Trying to init: digital driver ID: 'AXA ' (0x41584120), MIDI driver ID: 'W32M' (0x5733324d)
Installed digital driver ID: 'AXA ' (0x41584120), MIDI driver ID: 'W32M' (0x5733324d)
Install exit handler
Initialize path finder library
Load game data
Game GUI version: 119
Requested script API: v3.5.0.7 (7), compat level: v3.2.1 (0)
Game title: 'Mage's Initiation'
Checking for disk space
Initializing MOD/XM player
Initializing resolution settings
Game native resolution: 640 x 400 (32 bit)
Mouse confined: (0,0)-(639,399) (640x400)
Device display resolution: 2560 x 1080
Graphic settings: driver: OGL, windowed: no, screen def: explicit, screen size: 1280 x 1024, match device ratio: ignore, game scale: proportional
Using graphics factory: OGL
Created graphics driver: OpenGL
Supported gfx modes (32-bit):
   640x480;720x480;720x576;800x600;1024x768;1152x864;1176x664;1280x720;
   1280x768;1280x800;1280x960;1280x1024;1360x768;1366x768;1600x900;1600x1024;
   1600x1200;1680x1050;1768x992;1920x1080;1920x1200;1920x1440;2048x1536;2560x1080;
   2560x1440;2560x1600;3840x2160;
Attempting to find nearest supported resolution for screen size 1280 x 1024 (32-bit) fullscreen
Attempt to switch gfx mode to 1280 x 960 (32-bit) fullscreen
Running OpenGL: 4.6
OGL: Tinting shader program created successfully
OGL: Lighting shader program created successfully
Succeeded. Using gfx mode 1280 x 960 (32-bit) fullscreen
Render frame set, render dest (0, 80, 1279, 879 : 1280 x 800)
Requested gfx filter: StdScale
Graphics filter set: 'StdScale', filter dest (0, 80, 1279, 879 : 1280 x 800)
Using gfx filter: StdScale
Mouse control: on, base: 0.888889, speed: 2.000000
Mouse confined: (0,80)-(1279,879) (1280x800)
Initialize sprites
Initialize game settings
Prepare to start game
Audio is processed on the main thread
Engine initialization complete
Starting game
WARNING: channel 2 - same clip assigned
Game.SetAudioTypeSpeechVolumeDrop: type: 2, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 3, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 1, drop: 45
Game.SetAudioTypeVolume: type: 1, volume: 80, change: 1680
Game.SetAudioTypeVolume: type: 2, volume: 71, change: 1680
Game.SetAudioTypeVolume: type: 3, volume: 72, change: 1680
Game.SetAudioTypeVolume: type: 1, volume: 72, change: 1680
Game GUI version: 118
Game.SetAudioTypeSpeechVolumeDrop: type: 2, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 3, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 1, drop: 45
Game.SetAudioTypeVolume: type: 2, volume: 71, change: 1680
Game.SetAudioTypeVolume: type: 3, volume: 72, change: 1680
Game.SetAudioTypeVolume: type: 1, volume: 72, change: 1680
***** ENGINE HAS SHUTDOWN
[close]

Crimson Wizard


AGD2

Quote from: Crimson Wizard on Fri 21/02/2020 21:15:15
@AGD2, there was a case of fixing one mistake and making another...
Reuploaded the build: https://www.dropbox.com/s/af2fnos9qxw9y0z/acwin-3.5.0-p2-opengl-nn-texels.zip?dl=0

This acwin.exe fixes the Open GL artifact glitches and most of the other problems like ALT+TAB not working.

There's just one issue outstanding, and that's when I attempt to launch the game in full-screen (Nearest Neighbour) mode, it still uses the linear filter and puts 4 black borders around a slightly scaled-down game screen.  This only happens when I initially launch the game and set it to full-screen mode. If I initially launch it in windowed mode and then ALT+TAB into full-screen mode, then it works properly (no black borders and no forced linear filter; the "Scaling method" abides by my winsetup selection when ALT+TABbing back and forth).

Crimson Wizard

Quote from: AGD2 on Sat 22/02/2020 12:34:54
There's just one issue outstanding, and that's when I attempt to launch the game in full-screen (Nearest Neighbour) mode, it still uses the linear filter and puts 4 black borders around a slightly scaled-down game screen.  This only happens when I initially launch the game and set it to full-screen mode. If I initially launch it in windowed mode and then ALT+TAB into full-screen mode, then it works properly (no black borders and no forced linear filter; the "Scaling method" abides by my winsetup selection when ALT+TABbing back and forth).

This is something strange, in above log it sais that "nearest neighbour" was initialized. How do you tell it's linear filter, does it report so in Ctrl+V message, or you tell by the visual difference?
Could you post a new log of both launching fullscreen and switching with alt+tab?

AGD2

Quote from: Crimson Wizard on Sat 22/02/2020 12:38:33
This is something strange, in above log it sais that "nearest neighbour" was initialized. How do you tell it's linear filter, does it report so in Ctrl+V message, or you tell by the visual difference?
Could you post a new log of both launching fullscreen and switching with alt+tab?

I tested it again and you're right. When it runs within 4 black borders in full-screen mode, CTRL+V says that it's using the Nearest-Neighbour filter, even though everything on-screen is smoothed. This may be something my Nvidia graphics card is applying automatically, but it's strange that it only happens when the game is initially launched in full-screen mode, but not when ALT-TAB is used to toggle the game into full-screen mode. 

Also note that if it initially starts surrounded by 4 black borders, it will remember that full-screen setting and revert to it every time you ALT+TAB back to full-screen mode. Likewise, if you initially start without the 4 black borders, then this setting will be remembered and every time you ALT+TAB back to full-screen mode.

Here are the logs. In each one, I launched the game and ALT+TABbed a couple of times, then exited.

LOG: Initially launched in full-screen mode with Nearest Neighbour filter

Adventure Game Studio v3.5 Interpreter
Copyright (c) 1999-2011 Chris Jones and 2011-2020 others
ACI version 3.5.0.24

Installing exception handler
Initializing allegro
Initializing game data
Looking for the game data file
Located game data file: c:/Users/Chris/repos/MAGES_~1/Compiled/Windows/MAGES_~1.EXE
Opened game data file: game28.dta
Game data version: 50
Compiled with: 3.5.0.23
Setting up game configuration
Data directory: c:/Users/Chris/repos/MAGES_~1/Compiled/Windows/
Initializing speech vox
Voice pack found and initialized.
audio.vox found and initialized.
Setting up window
Initializing TTF renderer
Initializing keyboard
Initializing mouse: number of buttons reported is 8
Install timer
Initializing sound drivers
Sound settings: digital driver ID: 'AUTO' (0xffffffff), MIDI driver ID: 'AUTO' (0xffffffff)
Trying to init: digital driver ID: 'AXA ' (0x41584120), MIDI driver ID: 'W32M' (0x5733324d)
Installed digital driver ID: 'AXA ' (0x41584120), MIDI driver ID: 'W32M' (0x5733324d)
Install exit handler
Initialize path finder library
Load game data
Game GUI version: 119
Requested script API: v3.5.0.7 (7), compat level: v3.2.1 (0)
Game title: 'Mage's Initiation'
Checking for disk space
Initializing MOD/XM player
Initializing resolution settings
Game native resolution: 640 x 400 (32 bit)
Mouse confined: (0,0)-(639,399) (640x400)
Device display resolution: 2560 x 1080
Graphic settings: driver: OGL, windowed: no, screen def: explicit, screen size: 1280 x 1024, match device ratio: ignore, game scale: proportional
Using graphics factory: OGL
Created graphics driver: OpenGL
Supported gfx modes (32-bit):
   640x480;720x480;720x576;800x600;1024x768;1152x864;1176x664;1280x720;
   1280x768;1280x800;1280x960;1280x1024;1360x768;1366x768;1600x900;1600x1024;
   1600x1200;1680x1050;1768x992;1920x1080;1920x1200;1920x1440;2048x1536;2560x1080;
   2560x1440;2560x1600;3840x2160;
Attempting to find nearest supported resolution for screen size 1280 x 1024 (32-bit) fullscreen
Attempt to switch gfx mode to 1280 x 1024 (32-bit) fullscreen
Running OpenGL: 4.6
OGL: Tinting shader program created successfully
OGL: Lighting shader program created successfully
Succeeded. Using gfx mode 1280 x 1024 (32-bit) fullscreen
Render frame set, render dest (0, 112, 1279, 911 : 1280 x 800)
Requested gfx filter: StdScale
Graphics filter set: 'StdScale', filter dest (0, 112, 1279, 911 : 1280 x 800)
Using gfx filter: StdScale
Mouse control: on, base: 0.948148, speed: 2.000000
Mouse confined: (0,112)-(1279,911) (1280x800)
Initialize sprites
Initialize game settings
Prepare to start game
Audio is processed on the main thread
Engine initialization complete
Starting game
WARNING: channel 2 - same clip assigned
Game.SetAudioTypeSpeechVolumeDrop: type: 2, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 3, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 1, drop: 45
Game.SetAudioTypeVolume: type: 1, volume: 80, change: 1680
Game.SetAudioTypeVolume: type: 2, volume: 71, change: 1680
Game.SetAudioTypeVolume: type: 3, volume: 72, change: 1680
Game.SetAudioTypeVolume: type: 1, volume: 72, change: 1680
Attempting to find nearest supported resolution for screen size 1280 x 800 (32-bit) windowed
Maximal allowed window size: 1280 x 963
Attempt to switch gfx mode to 1280 x 800 (32-bit) windowed
Succeeded. Using gfx mode 1280 x 800 (32-bit) windowed
Render frame set, render dest (0, 0, 1279, 799 : 1280 x 800)
Mouse control: off, base: 1.000000, speed: 2.000000
Mouse confined: (0,0)-(1279,799) (1280x800)
Attempt to switch gfx mode to 1280 x 1024 (32-bit) fullscreen
Succeeded. Using gfx mode 1280 x 1024 (32-bit) fullscreen
Render frame set, render dest (0, 112, 1279, 911 : 1280 x 800)
Mouse control: on, base: 0.948148, speed: 2.000000
Mouse confined: (0,112)-(1279,911) (1280x800)
Attempt to switch gfx mode to 1280 x 800 (32-bit) windowed
Succeeded. Using gfx mode 1280 x 800 (32-bit) windowed
Render frame set, render dest (0, 0, 1279, 799 : 1280 x 800)
Mouse control: off, base: 1.000000, speed: 2.000000
Mouse confined: (0,0)-(1279,799) (1280x800)
***** ENGINE HAS SHUTDOWN
[close]


LOG: Initially launched in windowed mode with Nearest Neighbour filter

Adventure Game Studio v3.5 Interpreter
Copyright (c) 1999-2011 Chris Jones and 2011-2020 others
ACI version 3.5.0.24

Installing exception handler
Initializing allegro
Initializing game data
Looking for the game data file
Located game data file: c:/Users/Chris/repos/MAGES_~1/Compiled/Windows/MAGES_~1.EXE
Opened game data file: game28.dta
Game data version: 50
Compiled with: 3.5.0.23
Setting up game configuration
Data directory: c:/Users/Chris/repos/MAGES_~1/Compiled/Windows/
Initializing speech vox
Voice pack found and initialized.
audio.vox found and initialized.
Setting up window
Initializing TTF renderer
Initializing keyboard
Initializing mouse: number of buttons reported is 8
Install timer
Initializing sound drivers
Sound settings: digital driver ID: 'AUTO' (0xffffffff), MIDI driver ID: 'AUTO' (0xffffffff)
Trying to init: digital driver ID: 'AXA ' (0x41584120), MIDI driver ID: 'W32M' (0x5733324d)
Installed digital driver ID: 'AXA ' (0x41584120), MIDI driver ID: 'W32M' (0x5733324d)
Install exit handler
Initialize path finder library
Load game data
Game GUI version: 119
Requested script API: v3.5.0.7 (7), compat level: v3.2.1 (0)
Game title: 'Mage's Initiation'
Checking for disk space
Initializing MOD/XM player
Initializing resolution settings
Game native resolution: 640 x 400 (32 bit)
Mouse confined: (0,0)-(639,399) (640x400)
Device display resolution: 2560 x 1080
Graphic settings: driver: OGL, windowed: yes, screen def: scaling, screen size: 1280 x 1024, match device ratio: ignore, game scale: proportional
Using graphics factory: OGL
Created graphics driver: OpenGL
Supported gfx modes (32-bit):
   640x480;720x480;720x576;800x600;1024x768;1152x864;1176x664;1280x720;
   1280x768;1280x800;1280x960;1280x1024;1360x768;1366x768;1600x900;1600x1024;
   1600x1200;1680x1050;1768x992;1920x1080;1920x1200;1920x1440;2048x1536;2560x1080;
   2560x1440;2560x1600;3840x2160;
Attempting to find nearest supported resolution for screen size 1630 x 1019 (32-bit) windowed
Maximal allowed window size: 2560 x 1019
Attempt to switch gfx mode to 1630 x 1019 (32-bit) windowed
Running OpenGL: 4.6
OGL: Tinting shader program created successfully
OGL: Lighting shader program created successfully
Succeeded. Using gfx mode 1630 x 1019 (32-bit) windowed
Render frame set, render dest (0, 0, 1629, 1017 : 1630 x 1018)
Requested gfx filter: StdScale
Graphics filter set: 'StdScale', filter dest (0, 0, 1629, 1017 : 1630 x 1018)
Using gfx filter: StdScale
Mouse control: off, base: 1.000000, speed: 2.000000
Mouse confined: (0,0)-(1629,1017) (1630x1018)
Initialize sprites
Initialize game settings
Prepare to start game
Audio is processed on the main thread
Engine initialization complete
Starting game
WARNING: channel 2 - same clip assigned
Game.SetAudioTypeSpeechVolumeDrop: type: 2, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 3, drop: 45
Game.SetAudioTypeSpeechVolumeDrop: type: 1, drop: 45
Game.SetAudioTypeVolume: type: 1, volume: 80, change: 1680
Game.SetAudioTypeVolume: type: 2, volume: 71, change: 1680
Game.SetAudioTypeVolume: type: 3, volume: 72, change: 1680
Game.SetAudioTypeVolume: type: 1, volume: 72, change: 1680
Attempting to find nearest supported resolution for screen size 2560 x 1080 (32-bit) fullscreen
Attempt to switch gfx mode to 2560 x 1080 (32-bit) fullscreen
Succeeded. Using gfx mode 2560 x 1080 (32-bit) fullscreen
Render frame set, render dest (416, 0, 2143, 1079 : 1728 x 1080)
Mouse control: on, base: 1.000000, speed: 2.000000
Mouse confined: (416,0)-(2143,1079) (1728x1080)
Attempt to switch gfx mode to 1630 x 1019 (32-bit) windowed
Succeeded. Using gfx mode 1630 x 1019 (32-bit) windowed
Render frame set, render dest (0, 0, 1629, 1017 : 1630 x 1018)
Mouse control: off, base: 1.000000, speed: 2.000000
Mouse confined: (0,0)-(1629,1017) (1630x1018)
Attempt to switch gfx mode to 2560 x 1080 (32-bit) fullscreen
Succeeded. Using gfx mode 2560 x 1080 (32-bit) fullscreen
Render frame set, render dest (416, 0, 2143, 1079 : 1728 x 1080)
Mouse control: on, base: 1.000000, speed: 2.000000
Mouse confined: (416,0)-(2143,1079) (1728x1080)
Attempt to switch gfx mode to 1630 x 1019 (32-bit) windowed
Succeeded. Using gfx mode 1630 x 1019 (32-bit) windowed
Render frame set, render dest (0, 0, 1629, 1017 : 1630 x 1018)
Mouse control: off, base: 1.000000, speed: 2.000000
Mouse confined: (0,0)-(1629,1017) (1630x1018)
***** ENGINE HAS SHUTDOWN
[close]

Crimson Wizard

@AGD2, log sais your desktop size is 2560 x 1080, is that two monitors, or 1 monitor with such res?

AGD2

It's one ultra-wide monitor. It just puts black on the sides if running in full-screen mode.

Crimson Wizard

#52
Quote from: AGD2 on Sun 23/02/2020 14:15:08
It's one ultra-wide monitor. It just puts black on the sides if running in full-screen mode.

The log sais, that when you run in fullscreen, you explicitly ask for a 1280 x 1024 mode (in config), and it tries to make one, with game rendered in 1280 x 800.
I don't know how this suppose to work on ultra wide monitors, but if, as you say, your monitor adds side borders on its own, then in this case you will probably have borders on all 4 sides: top and bottom borders are created by AGS, and side borders created by your monitor.

When you start in windowed and switch to fullscreen at runtime, AGS does not have information to guess which fullscreen you want (except for scaling mode), and instead tries to find a mode closest to the desktop resolution automatically, and it inits 2560 x 1080 mode, with game rendered in 1728 x 1080.
In this case you will only have borders from sides (created by AGS).

This is as much as I can gather.

Snarky

Quote from: Crimson Wizard on Thu 20/02/2020 20:50:34
@Snarky, btw, the above build also supposed to have the allegro fix that prevented from mouse & keyboard working under Wine, so could you make a quick test too, if you have time?

I've tested, and it works correctly in Wine for me. Thanks!

AGD2

#54
Quote from: Crimson Wizard on Sun 23/02/2020 14:37:27
The log sais, that when you run in fullscreen, you explicitly ask for a 1280 x 1024 mode (in config), and it tries to make one, with game rendered in 1280 x 800.
I don't know how this suppose to work on ultra wide monitors, but if, as you say, your monitor adds side borders on its own, then in this case you will probably have borders on all 4 sides: top and bottom borders are created by AGS, and side borders created by your monitor.

When you start in windowed and switch to fullscreen at runtime, AGS does not have information to guess which fullscreen you want (except for scaling mode), and instead tries to find a mode closest to the desktop resolution automatically, and it inits 2560 x 1080 mode, with game rendered in 1728 x 1080.
In this case you will only have borders from sides (created by AGS).

This is as much as I can gather.

Sorry, my previous description was a bit inaccurate. My monitor doesn't actually add black side-borders on its own in full-screen mode. For all games (including non-AGS games, newer games, and older DOS games launched in DosBox etc.) by default, it runs the game with the horizontal width completely stretched out to fill the entire screen. This is a well-known issue with ultra-wide monitors. There's a setting for Nvidia video cards to prevent it from auto-stretching horizontally and to get it to obey the game's aspect ratio (In Nvidia Control Panel: Display>Adjust desktop size and position> "Perform Scaling on: GPU" & checking the "Override the scaling set by games and programs" box).

With those Nvidia options, it displays all full-screen games at the correct vertical size (i.e. no black border at the top/bottom) and at the correct horizontal width, relative to the vertical height. The monitor/video card doesn't add any black side borders. Rather, it just centers the game screen and the unused monitor space to the left and right of the game screen remains solid black. This behaviour occurs when launching all games EXCEPT for AGS games.  The 4 black borders only get added when launching full-screen AGS titles. And the way you can tell there are added side borders is because they're a lighter shade of black than the natural solid black of the monitor. Non-AGS games don't have these borders.

AGD2

#55
Here are some photos of various games and how they display correctly on my ultra-wide monitor vs. how AGS games display on it:


Toonstruck

Quest for Glory 4

Mage's Initiation (AGS) - 4 borders and scaled-down screen

Crimson Wizard

#56
@AGD2, well, this is about how I imagined it, but then, what behavior is expected from AGS in case you are asking it to run in 1280 x 1024?


The borders on the top and bottom are there because engine has got display resolution 1280 x 1024, and asked to display game in that resolution at max, while keeping aspect ratio, which gave 1280 x 800 box. This creates borders on top and bottom (but not side ones).

My guess about the side borders is that they are probably added by the Nvidia driver, otherwise game would be stretched to whole monitor. I guess so, because AGS reports only 1280x1024 resolution, so it thinks it got as much.

I cannot comment on border colour, I don't know how Nvidia does that, and whether program itself may have any effect on it.


Perhaps, try running game in 1280x800?

AGD2

Quote from: Crimson Wizard on Sun 23/02/2020 21:20:18
Perhaps, try running game in 1280x800?

Ah, yes. this worked to remove the bordered windows in full-screen mode. It displays perfectly at full-screen now. Thanks for the suggestion! Looking at it closer in retrospect, I don't think a linear-type filter was actually being applied. It just looked like it was because the scaled-down screen window made all the pixels smaller so everything looked smoother.

BTW, is there any chance you might be able to look into the other two things I posted in this thread (the inconsistent dialog portrait mouth animation behaviour when toggling between voice and text-only modes and the IgnoreUserInputAfterTextTimeoutMs issue). I'm wanting to re-compile Mage's Initiation to master onto DVDs for our Kickstarter backers using v3.5.0 but it'd be nice to have those little quirks resolved for that definitive release if possible.

Crimson Wizard

#58
Quote from: AGD2 on Sun 23/02/2020 22:37:07
BTW, is there any chance you might be able to look into the other two things I posted in this thread (the inconsistent dialog portrait mouth animation behaviour when toggling between voice and text-only modes and the IgnoreUserInputAfterTextTimeoutMs issue). I'm wanting to re-compile Mage's Initiation to master onto DVDs for our Kickstarter backers using v3.5.0 but it'd be nice to have those little quirks resolved for that definitive release if possible.

Right, I've seen these, but kept forgetting to check them out.
Is any of these two a regression in 3.5.0, or they were both present earlier? I am asking because currently there are two development branches: one for patching 3.5.0, which I'd like to release ASAP for it contains few important crash fixes, and second branch is presumably for 3.5.1, containing few non-major updates.

What is your release deadline?

AGD2

#59
Quote from: Crimson Wizard on Sun 23/02/2020 22:52:29
Right, I've seen these, but kept forgetting to check them out.
Is any of these two a regression in 3.5.0, or they were both present earlier? I am asking because currently there are two development branches: one for patching 3.5.0, which I'd like to release ASAP for it contains few important crash fixes, and second branch is presumably for 3.5.1, containing few non-major updates.

What is your release deadline?

I just checked and both issues also occurred in v3.4.3.1.

I was hoping to get the game ported and mastered to DVD within a month.

Snarky

Quote from: AGD2 on Wed 19/02/2020 10:07:31
I noticed that when using Game.IgnoreUserInputAfterTextTimeoutMs (with a setting like 1000 Ms), it works as intended and prevents the player from accidentally clicking away a new speech audio/text message if they clicked a few moments after the previous speech message disappeared.

But this also creates an unintended problem if using the player character to narrate background comments to click on things. For example, if you click the Mouth icon on a rock, the player will say the corresponding message. When said message disappears automatically - not by clicking it away (and there's no subsequent message following it), you cannot click the mouth icon on anything else until the 1000 Ms have elapsed. Can the engine be made to disregard IgnoreUserInputAfterTextTimeoutMs setting if there's no new speech message currently on-screen?

This happens with all icons. And it also affects right-clicking, meaning that when using the Sierra-style icon interface, you can't right-click to cycle through icons until the 1000 Ms have elapsed either.

Is this something you could workaround by setting IgnoreUserInputAfterTextTimeoutMs to 0 in repeatedly_execute() and then to its real value whenever you say a line? (Through a function that wraps all your Say() calls, and which you set as your "saying" function in the new 3.5 setting.)

AGD2

#61
Quote from: Snarky on Tue 25/02/2020 06:03:49
Is this something you could workaround by setting IgnoreUserInputAfterTextTimeoutMs to 0 in repeatedly_execute() and then to its real value whenever you say a line? (Through a function that wraps all your Say() calls, and which you set as your "saying" function in the new 3.5 setting.)

I just gave that a quick test, but it seems that when I set it back to 0 in the repeatedly_execute script, it still uses the 1000 ms delay from the last message that was on-screen. The setting of 0 only gets applied once the next new message appears (and gets immediately overridden by 1000 ms again).

Cassiebsg

You could try and set the value lower? Just enough for the player to read the shortest sentence but not short enough to accidentally dismiss the text before reading it?
There are those who believe that life here began out there...

AGD2

Quote from: Cassiebsg on Tue 25/02/2020 14:57:34
You could try and set the value lower? Just enough for the player to read the shortest sentence but not short enough to accidentally dismiss the text before reading it?

Yeah, that's how I had it originally set up, but players were complaining that they were still accidentally skipping past messages.

SMF spam blocked by CleanTalk