Common features: - Upgraded Windows version of AGS with Allegro v4.4 library (previously v4.2). - Implemented "RenderAtScreenResolution" game setting. When enabled, characters and objects are scaled in screen pixels rather than game pixels. (NOTE: it was always enabled for Direct3D in the past, but now you can set it to your liking) - Implemented VerticalOffset and LineSpacing properties for fonts. - Removed limit on Dialog Topics (was 500 topics per game). - Removed length limit on the names of Inventory, GUI and GUI Controls. - Removed length limit on the names of Hotspots and Objects. - Removed length limit on event handler names.

Editor: - Removed legacy game compiler. - Raw compiled game data is now saved in "Compiled\Data" folder, as opposed to just "Compiled". - The speech.vox file is now not recompiled if game is quick-run (using F5). Engine is supposed to find newer files in the Speech folder. - Editor can now import games older than 2.72, and newer too (3.*) if you have extracted data files from compiled executable. - ScriptAPIVersion and ScriptCompatibilityLevel settings now have "Highest" option, which is meant for automatically enabling newest script API when upgrading old project in a newer editor. - Added new "Default Setup" pane, which works similarily to "General Settings" and lets you configure default values for game setup. - Added "Font Height (pixels)" readonly property to the Font's pane, which works for both WFN and TTF fonts and may be used as a reference. - Made Editor correctly detect modern versions of MS Windows for display on About dialog and when sending anonymous statistics. - New application icon to comply with 3.4.0 splash screen. - Fixed crash when importing old games which have extended editor version string saved in the project files. - Fixed unhandled exception occuring when user types "#undef", "#ifdef" or "#ifndef" on the last line of the script. - Fixed #ifver and #ifnver not working properly if version number had only one component (major version). - Few improvements to the game compilation made in hope to reduce occasional data corruption.

Script: - Fixed local variables not working in the switch's case expressions. - Fixed Strings in switch, making them compare by value again. - Fixed compiler mistakes caused by the use of objects of empty type (that is - struct without any variables in it). - Fixed few cases of possible compiler crashing when there is an unfinished statement in the end of the script.

Engine: - Added OpenGL renderer to Windows version. - Added support for switching between fullscreen and windowed modes at runtime using Alt+Enter key combination. - All supported hardware-accelerated graphic drivers (Direct3D and OpenGL) now run every game in 32-bit display mode by default, and convert game's graphics on load if that is required. This fixes loss of green hue precision in 16-bit games and allows to run 8-bit games, although latter is only partially supported: there are color mismatches and dynamic palette cycling is not working. - Partial support for plugins drawing on screen for hardware-accelerated renderers (Direct3D, OpenGL). - Added support for global configuration file, which works as configuration for all games and overrides default game's config file. Individual game user's config overrides global one in its turn. Global config's location is platform-dependent (this feature is currently disabled on Windows). - Implemented separate config option for game's shared data path, to keep it distinct from user-defined saves path. - Engine saves last Windowed and RenderAtScreenResolution mode states to the user config file. - Engine no longer writes and reads gamma level in saves, meaning that gamma keeps its current value when restoring a saved game. - Removed arbitrary limit on number of sprites rendered at the same time for hardware-accelerated renderers (Direct3D and OpenGL) (was 75), and another limit imposed on drawing entries for all drivers (was 200). - Engine now tries to get voice files from the Speech folder first, if one exists, and speech.vox later when quick-run from the Editor. - Fixed speech portrait was displayed below GUI, contrary to speech text. - Fixed ShakeScreen command was causing graphic artifacts when game is run with software renderer. - Fixed calling Character.ChangeView during idle animation results in new view being animated. - Fixed Speech.SkipStyle getter return value for eSkipTime case. - Fixed Speech.VoiceMode not returning correct values when speech.vox is not enabled/present. - Fixed AdjustVolumeWithScaling character's property not working with the new audio system. - Fixed volume drop was not applied to audio clips which begin playing during speech voice-over. - Fixed Game.SetAudioTypeSpeechVolumeDrop did not affect currently playing clips until next voice-over begins. - Fixed Game.TranslationFilename returning "default" instead of empty string if no translation is set. - Fixed engine was trying to locate "My Documents" folder on Windows Vista and higher even though it did not need it, and reporting internal error if such folder was not found, even though "Saved Games" folder is used instead. - Properly toggle console upon play.debug_mode variable change in script. - Added missing stubs for agsjoy plugin.

WinSetup: - Fixed display mode selection was missing certain items.

KNOWN ISSUES, TODOs and other notes (to be updated)

- Need to make mobile ports (Android, iOS) work with this version.- When using Direct3D, game misses 1 bottom row and 1 rightmost column of pixels of game image when "Render sprites at screen resolution" is OFF. This also might cause slight image distortion.NOTE: there's a suspicion that that is a bug in Microsoft's Direct3D driver since Windows 7.- When running game in OpenGL fullscreen system cursor is visible when over black borders.

Found a bug triggered by Art of Dying 1.1.I'm pretty sure, that this didn't happen in 3.4.0

Unfortunately the sourcecode of Art of Dying is currently gone for good. But I still might have a copy at home which I can upload later on.

---------------------------Adventure Game Studio---------------------------An internal error has occurred. Please note down the following information.If the problem persists, post the details on the AGS Technical Forum.(ACI version 3.4.1.3)

Error: SpriteCache::removeOldest: Attempted to remove sprite 64 that does not exist

---------------------------OK ---------------------------

The error message is right, there is no sprite 64. But I also haven't found evidence that the ever code refers to sprite 64. There is also no GUI, View or anything refering to a sprite 64.

Edit: I've manually added a dummy sprite at slot 64, now it is complaining about sprite 65.

As I was about to prepare an upload for further investigations, I deleted the compiled folder and guess what: the error is gone.

Maybe the compiled resource files got corrupted somehow during the upgrade from 3.4.0 to 3.4.1? On the other hand I'm upgrading this project since 2014 so the corruption might have happened a long time ago.

It may also happen that game was only partially rebuilt, and some rooms kept old compiled scripts while script modules got updated. This may result in various glitches, like wrong script function being called instead of intended one.

It is necessary to completely rebuild project (Build -> Rebuild all files) after you upgraded to another version of AGS.

I don't know if it's an expected behaviour or not, but my native screen resolution is not available aymore with the latest engine version (beta 3 : 3.4.1.3).With betas 1 and 2 : I've got the "desktop native resolution" available at the top of the list.With beta 3 : "desktop native resolution" is unavailable and the available resolutions don't fit my screen resolution (it's 1600x900 and I got 1440x900 as the closest choice).

I don't know if it's an expected behaviour or not, but my native screen resolution is not available aymore with the latest engine version (beta 3 : 3.4.1.3).With betas 1 and 2 : I've got the "desktop native resolution" available at the top of the list.With beta 3 : "desktop native resolution" is unavailable and the available resolutions don't fit my screen resolution (it's 1600x900 and I got 1440x900 as the closest choice).

Something that I changed in Beta 3 is that winsetup no longer shows "desktop resolution" and "native game resolution" choices without testing if they are actually supported by graphics driver first. I did this after I found that it can display "native game" size (320x200) although such mode is not supported by gfx card.

You may try running game with "--log" argument from command line. In the "%USERPROFILE%/Saved Games/.ags" there will be "ags.log". AGS writes all detected gfx modes there on startup.We need to compare these with the list shown in winsetup.

EDIT:Another thing that you could try. Go to "%USERPROFILE%/Saved Games/<Your game name>/" and modify acsetup.cfg by hand.Make sure following options are set:

Quote

[graphics]screen_def = explicitscreen_width = 1600screen_height = 900

Then run the game, press Ctrl+Alt+V in game to check what resolution was actually initialized.

The question is whether there is a bug in winsetup, bug in engine, or Direct3D simply does not support that resolution on your system.

When using Allegro/DX5 + Stretch to fit screen (or Stretch to fit screen (preserving aspect ratio) + Run in a window, the game runs fullscreen.When you set Max round multiplier, it runs correctly in a window.

I noticed another bug that seems to be common to 3.4.1 builds of acwin.exe. I'm testing with a 320x200 game and DirectX 9 in windowed mode. Row 199 (the last row) appears to be clipped to one pixel. The same is true for column 319.

Not sure if this counts as a bug or anything, but when using DirectX 3D9, you can indeed switch using alt+enter, but only if you use the left alt key. Using the right alt key, which is how I prefer it in most games, does nothing. Can that be fixed?

Also when using the Allegro driver alt-enter doesn't work, it attempts to switch to a window but then jumps back to fullscreen followed by the cursor "painting" in the graphics from a black screen.

@Gurok, can you confirm that clipping and strange row/column duplication occurs only if "Render sprites at screen resolution" is off? Both of those issues seem to relate to drawing on backbuffer texture before scaling to whole screen. I am looking into that now.EDIT: actually, OpenGL seem to be missing top and right row in either case. Its top as opposed to bottom maybe because OpenGL's screen coordinates are inverted.

Not sure if this counts as a bug or anything, but when using DirectX 3D9, you can indeed switch using alt+enter, but only if you use the left alt key. Using the right alt key, which is how I prefer it in most games, does nothing. Can that be fixed?

Also when using the Allegro driver alt-enter doesn't work, it attempts to switch to a window but then jumps back to fullscreen followed by the cursor "painting" in the graphics from a black screen.

I cannot tell why it does not stay in window. Maybe there is a problem initializing certain window modes. That renderer works worse and worse with every new Windows update. Or maybe the window size is selected wrong. Can you enable log, like I explained to NicolaGs several posts above, and record your switching actions?

I fixed the cursor painting bug though, this was simply because screen was not repainted after mode switches.