Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Crimson Wizard

#3101
Quote from: nikolaelf on Tue 22/03/2022 18:08:59
AGS2Client SetAchievementAchieved^

Quote from: nikolaelf on Tue 22/03/2022 18:08:59
There is an "agsgalaxy.dll" NOT a "AGS2Client".

If i remember correctly, agsgalaxy.dll is a plugin specialized for GoG releases instead of steam plugin, and it is supposed to contain achievement functions.
If engine cannot find these, this could mean either that engine failed to load the agsgalaxy.dll for some reason, or agsgalaxy.dll is of some incorrect version, mismatching the game's script.

Is it possible to find out, which version of the engine was used when making this game? If game has "winsetup.exe", it should be written at the bottom of the setup dialog. Also, pressing Ctrl+Alt+V in game should print engine info.
Have you tried reporting this problem to the game author or publisher? is it confirmed that this particular release is working at least for some people?
#3102
Quote from: Pax Animo on Mon 21/03/2022 22:40:06
I seen that setting and did wonder about this one too, I see the default is 128.
Which user hardware resource does this use up, is it RAM?

Yes, it's RAM.
On Windows AGS is still distributed as a 32-bit program (not sure why...), so it will be limited approximately to 2 GB anyway (but this includes everything, not only sprites).
#3103
Quote from: Pax Animo on Mon 21/03/2022 22:07:17
Is this process during the game initialization only or throughout the game cycle.

Throughout the game play. AGS loads sprites on demand and stores them in a "sprite cache". The sprites will then be used from this cache without loading them again.
The size of the sprite cache may be set in game config (by players too). When the cache is full it will delete some sprites from memory to open space for more.
#3104
The description refers to perfomance loss during playing the game, as engine will have to decompress the sprites as an additional step.

However, the real effect will depend on several factors, and may even be positive in some situations.
The sprite's load time is composed of two steps:
1. loading from disk
2. decompressing (optional)

Compressed sprites take less size on disk, thus loading them is actually faster. This may compensate the time spent on decompressing.
In practice this depends on compression level and player's computer, so there's no easy answer here.

The option may be turned on and off without problem, so it's possible to make perfomance tests with and without it anytime.
#3105
@Stranga, i opened a 3.6.0 Beta thread: https://www.adventuregamestudio.co.uk/forums/index.php?topic=59842.0
let's continue discussing problem there (i will lock this thread soon).
#3106
AGS 3.6.0 - Beta 15
Full release number: 3.6.0.35

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


For Editor
Spoiler

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

For Engine/Editor developers
Spoiler

Released: 1st September 2022

Previous stable version: AGS 3.5.1 P13 forum thread


This release is brought to you by:

- sonneveld (porting engine to SDL2)
- Alan v. Drake (improvements, fixes)
- Cameron Cawley [ccawley2011] (fixes, improvements to SpriteFont plugin)
- Crimson Wizard (stuff :))
- eri0o (updated Android port, Web port, Editor improvements, etc)
- fernewelten (new fonts outlining, improvements to script compiler, fixes)
- Francesco Ariis (fixes)
- Morgan Willcock (improving templates, help with CI)
- Pablo Navarro [panreyes] (fixes)
- ChamberOfFear (improvements)
- rofl0r (fixes, suggestions)
- Thierry Crozat (fixes, plugin update)
- vga256 (fixes)



What is new in 3.6.0

AGS 3.6.0 is another big change to AGS.
First of all, this release presents a SDL2-based engine. For about 2 decades AGS engine was based on Allegro 4 graphic library, which was discontinued somewhere in the early 2010-ies (only received few patches since). There was an intent to move either to Allegro 5 or SDL (1 or 2) since, but for various reasons this task was continuously postponed. Finally it is done. (NOTE: Allegro 5 is very different in everything, therefore it was not trivial to just go from Allegro 4 to 5. In fact it appeared to be easier to change from Allegro 4 to SDL2).
Secondly the Editor and Engine now have full Unicode support. This means that you may use any language whatsoever in scripts, object descriptions and custom properties, as well as translations; so long as you also provide proper unicode fonts.
Third, we finally have expanded a list of platforms that the Editor can build for: now this includes Android and Web (Emscripten) port.

This version is currently in Beta stage, which means that all major features are present, but there's still a room for improvement, and of course this all has to be tested more and fixed as necessary.
We are also working on updating the documentation, as quite a few of the 3.6.0 changes will require user's attention and learning new things about Editor and script.

For more information please also see "Upgrading to AGS 3.6" topic in the manual: https://adventuregamestudio.github.io/ags-manual/UpgradeTo36.html


Common features:
- Full Unicode support for all game texts: game properties, scripts, translations, input.
  ASCII/ANSI mode is still working, for backwards compatibility. This may be configured in the game project.
- Extended sprite compression options: lossless storage optimization for 16- and 32-bit sprites; LZW compression option for sprites in addition to existing RLE compression.
- GUI controls may now be told to clip their contents, which means that nothing gets drawn outside of their borders (as defined by X, Y, Width, Height properties). The only exception is Sliders, which are more complicated.
- The historical TTF fonts' "fixup" that altered their height and vertical offset is now optional and works only if backwards compatible option is set.
- Max number of AudioChannels is now 16 (was 8).
- Removed game Cursors hard limit (was 20).
- Increased Room Objects limit to 256 (was 40).
- Discontinued "Windows Game Explorer" support in both Editor and Engine.

Editor:
- Editor requires .NET Framework 4.6 to run.
- Added Android build target support (requires "Android component" installed).
- Added Web/Emscripten build target support (requires "Web build component" installed).
- Script editor works in unicode mode.
- Added "Text format" option in General Settings which lets switching between ASCII/ANSI and
  Unicode (UTF-8) modes. This defines which format the game texts will be written in, when saving the game project and compiling the game.
- Added "Use old-style keyboard handling" option to the General Settings, which lets select between classic key press handling and new one meant for unicode chars support in scripts.
- Supports compiling UTF-8 translations. TRS file now has "Encoding" setting that tells how to interpret this TRS text.
- Added support for building multiple speech voxes, by taking files from the Speech subfolders.
- Added support for adding custom files into the game package. This is done by assigning a list of directories to "Package custom data folder" option in General Settings.
- Added "Sprite file compression" option in General Settings, replacing "Compress the sprite file" option. The new option allows a selection of compression algorithm used for sprites. Currently supported: None, RLE (old default compression) and LZW.
- Added "Enable sprite storage optimization" option to the General Settings, that permits the editor to repack sprites in a different storage format, reducing their disk size whenever possible. This option may be used alongside with the sprite compression. Note that this does not change how the sprites work in game.
- Added "GUI controls clip their contents" option to the General Settings.
- Added "TTF fonts height used in the game logic" option to the General Settings, that makes your game use real font's pixel height when arranging text and text-based UI elements, as opposed to the nominal font's size.
- Added "TTF font adjustment" property to Fonts, as well as to General Settings where it serves as a project default for the new fonts. This property lets you choose between "no changes" and backward compatible TTF fixup meant to keep fonts made for AGS displayed as they were meant to.
- In the "Import TTF" dialog added a choice to import the size closest to the given pixel height.
- Fonts now have Auto Outline Style and Auto Outline Thickness properties.
- Fonts now have a readonly Family Name field, that lets user see the original name of a font they've imported (if available).
- Added IdleDelay property to Characters that lets you set time needed to pass before IdleView is activated. This is equivalent to the Character.SetIdleView script function.
- Added Character.IdleAnimationDelay property to let setup idle view's animation speed.
- Added Cursor.AnimationDelay property to let setup cursor's animation speed.
- The TextWindow edges now have distinct names in the dropdown list of the property grid.
- Rooms created from a Blank template will now have default background of a game's resolution.
- When creating new room objects they will now have their script names set to some default value.
- Added Room.BackgroundAnimationEnabled property to let have disabled animation on room load.
- Editor will now create an empty spriteset file (acsprset.spr) if one is missing in the game project. Any existing sprite descriptions in the project will be kept, letting user to reimport these from sources.
- Added "File -> Restore all sprites from sources" menu command.
- Added "Apply" button on editor's Preferences dialog.
- Select script editor's font in the editor's Preferences.
- Added "Help" option to the editor pane's tab context menu.
- Upgraded script editor to Scintilla 3.21.1 and ScintillaNET 3.6.3.
- Cursor's position in script is now displayed on the status bar.
- Dialog scripts now too can open help topics for keywords or script functions under cursor on F1.
- Added zoom controls for the Sprite Manager, Character, Cursor, Inventory and View panes.
- Sprites may now be imported by drag'n'drop into the Sprite manager.
- In sprite manager's "export all" dialog added "skip if local" option.
- In sprite manager's context menu added command "Create source files for all sprites with missing / external sources..."
- On the View pane the frames having set delay and linked sound will be now indicated with icons.
- Editor no longer errors and fails when opening a game project with some script files missing.
- Editor no longer errors on empty translations when compiling the game.
- Editor now exports values of the string type Custom Properties to translations.
- Editor no longer prevents exporting string arguments from Get/SetTextProperty calls to TRS file.
- Editor now cleanups spritefile on game load, identifying any data not referenced by the project and marking it for deletion.
- Fixed editor silently enabling all available Build Targets when upgrading a pre-3.4.0 project. This could be very inconvenient as there are several of them supported now.
- Fixed editor was not preventing from entering Character's and AudioClip's ScriptName too long for the engine to handle.
- Fixed Image and View properties in various objects were allowing negative values.
- Fixed some of the object previews (at least GUI) could crash if user entered a non-existing sprite's number as an Image property.
- Fixed editor displaying unhandled exception if the script which user is trying to open was missing. Instead it will now open a blank script.
- Fixed room editor was suggesting to save the modified room even if no changes were made.
- Fixed a recently imported sprite could be displayed incorrectly scaled up in the room editor for high-resolution games, if the "Allow relative asset resolutions" was enabled in General Settings, and the sprite 0 had "Resolution" property set to "Low".
- Fixed View animation preview stopping at frame 100 (if loop contains over 100 frames).
- Fixed going to a "find all" result in dialog script did not highlight the found text, and sometimes did not scroll down to it.
- Fixed "Goto Definition" not working for Enums and Defines (macros).
- Fixed script autocomplete sometimes was not updated right after opening a script.
- Fixed script autocomplete for function calls was mistreating commas in strings and inline comments as if they were separating actual parameters.
- Fixed script autocomplete was not displaying members of extended structs if the parent struct was declared in another header.
- Fixed script autocomplete was not working for enum names.
- Fixed structs and enums were not highlighted if declared inside a script's body.
- Fixed in dialogs numbers inside names were incorrectly highlighted as numeric values.
- Fixed few editor panes were not opening correct help topics in F1.

Compiler:
- Support unicode character literals.
- Support using float literals when defining default values for function arguments.
- Support hexadecimal number literals (e.g. "0xABCDEF").
- Removed 500-characters line limit.

Script API:
- Expanded `on_key_press` callback, now supports two parameters: key code and key modifier flags.
- In the new key handling mode `on_key_press` is called for each actual key press;
  e.g. combinations like Ctrl+Z will result in two `on_key_press` calls, one with eKeyCtrlLeft and second with eKeyZ; added support for "NEW_KEYINPUT_API" macro in scripts.
- Implemented new `on_text_input(int ch)` callback which is called when the engine receives a printable character. This callback is essential for handling unicode chars in script.
- Similarily, expanded `dialog_options_key_press` with the third `mod` argument, and implemented `dialog_options_text_input` callback for receiving unicode chars during the custom dialog options state.
- Implemented `dialog_options_close` callback which is called when custom dialog options are removed from the screen. This allows to perform any required cleanup.
- Added eEventEnterRoomAfterFadein event for `on_event` callback, which corresponds to "enter after fade-in" room event.
- Added eKey constants for Shift, Control and Alt keys.
- Added eKeyMod enum for key modifiers constants.
- String.AppendChar(), ReplaceChar() functions and String.Chars[] property are now working with the unicode characters.
- String.Format("%c") specifier will now be able to print unicode characters.
- Extended Button.Animate() to have blocking style, direction and starting frame parameters, thus matching other Animate commands (of Character and Object).
- Extended all Animate() commands by adding "volume" parameter, that defines volume of the frame-linked sounds for the duration of this animation.
- Added Character.AnimationVolume, defining volume of the frame-linked sounds.
- Added Character.IdleAnimationDelay to let control idle view's animation speed.
- Character.Scaling is no longer limited by a range of 5-200 (now supports 1-32767).
- Hotspot.Name and Object.Name may now be set in script.
- Added Object.ManualScaling and Object.Scaling.
- Deprecated Object.IgnoreScaling (use Object.ManualScaling instead).
- Object.SetView default loop & frame values are now 0 (was -1 which retained loop and frame indexes from the previous view, often unexpected to the user).
- DrawingSurface.DrawImage() and DrawSurface() now support optional source rect coordinates.
- Added functions for getting DrawingSurface of room masks: GetDrawingSurfaceForWalkableArea(), GetDrawingSurfaceForWalkbehind(), Hotspot.GetDrawingSurface(), Region.GetDrawingSurface().
- Added new delay parameter to Mouse.ChangeModeView() to let control cursor's animation speed.
- Added Game.ChangeSpeechVox() and Game.SpeechVoxFilename, support switching the voice-over pack.
- Added Mouse.AutoLock property that toggles automatic mouse lock inside the game window.
- Added Room.Exists().
- Added System.Log().
- Added SkipWait() that skips any active Wait() function.
- Added WaitMouse() to complement existing Wait functions.
- Added InputType enum which defines input devices and lets create their sets as flags.
- Added WaitInput(), a more generic and extendable function that accepts a combination of flags telling which input types to wait for.
- All Wait* functions now may have infinite timeout if you pass a negative timeout parameter.
- All Wait* functions now return the reason they were skipped: a combination of InputType flag and a respective key or button code.
- Added GUIControl.Transparency property.
- Added Overlay.CreateRoomGraphical and CreateRoomTextual. Use these two functions to create "room overlays": that is - overlays that display a sprite inside the room, sorted among other room objects, characters and walk-behinds.
- Added readonly Overlay.InRoom property that tells if this is a room or screen overlay.
- Extended Overlay.CreateGraphical() with a new "clone" parameter that tells whether to assign a sprite index, or make a sprite's copy owned exclusively by this overlay. The former will save program memory but make overlay update if the sprite is edited later. The latter is meant primarily for backwards compatibility. Overlay.CreateRoomGraphical has the same param.
- Added Overlay.Graphic property that lets you change overlay's sprite after it's created.
- Added Overlay.Width and Height properties, that let you freely scale existing Overlay.
- Added readonly Overlay.GraphicWidth and GraphicHeight properties that let read original overlay's graphic size, as not all overlays hold a sprite reference (e.g. textual overlays).
- Added Overlay.Transparency property.
- Added Overlay.ZOrder property that lets you sort Overlays among themselves and other objects in the same "game layer": screen overlays are sorted among GUI, while room overlays are sorted among room objects, characters and walk-behinds.
- Added Speech.TextOverlay and Speech.PortraitOverlay for accessing blocking speech overlay and portrait overlay respectively.
- Added Game.BlockingWaitSkipped which tells the result of the last blocking wait skipping, also including result of the blocking speech skipping.
- SkipSpeechStyle now supports eSkipNone mode; when used it will disable any kind of skipping, such speech can be only skipped by a direct command from script.
- Extended Screen.ScreenToRoomPoint() with an optional "restrictToViewport" argument, which lets to choose whether tests over empty place result in conversion through the default viewport or a null pointer.
- Added AudioClip.PlayOnChannel().
- Added AudioChannel.Pause() and Resume() functions, and IsPaused property.
- Added AudioChannel.SeekMs(), complementing PositionMs (as the Seek() function interprets position differently depending on the audio format).
- PlayVideo() now supports an option to play both game's and video's audio track simultaneously.
- Added File.WriteRawInt() to complement ReadRawInt().
- File paths in script now support $DATA$ token, which tells to read files from the game package.
  This only works for read operations. Functions that support this token currently are: File.Open(), DynamicSprite.CreateFromFile(), ListBox.FillDirList().
- Debug(2, 0) command that displayed walkable areas is superceded by Debug(2, n), where "n" is a mask type: 0 - none, 1 - hotspots, 2 - walkbehinds, 3 - walkable areas, 4 - regions. This command also works as a toggle switch, calling it with the same mask index will turn it off.
- Debug(5, n) command that displayed character's walk paths now also works as a toggle switch.

Engine:
- New SDL2-based backend for graphics, audio and input.
- Hqx graphic filters discontinued (could be temporary).
- Windows-only DirectMedia video playback discontinued (could be temporary).
  Only OGG/OGV videos are kept supported at this point.
- Support resizing game window on desktop systems.
- Support "borderless full-screen window" mode in addition to the real (exclusive) fullscreen.
- Unicode (UTF-8) text support: engine can now switch between ASCII and UTF-8 text mode.
  This is controlled by both game's OPT_GAMETEXTENCODING setting and translation's "Encoding" setting: they tells whether to interpret game texts as UTF-8 or ASCII/ANSI.
- Support optional translation's "GameEncoding" setting: it hints the original game's codepage to help with their conversion. This is mostly meant for translating existing older (ANSI) games.
- Engine now supports using real pixel height of the TTF fonts when arranging text and UI elements on screen; using nominal import size of the font is used as a compatible mode for the old games.
- Also supports separate "normal" and backward compatible "fixup" modes when initializing TTF fonts, letting to display both common TTFs and ones made specifically for AGS in the past to display as they were meant to be.
- Supports scripts using functions and variables from any other scripts, regardless of the script module order in the project.
- Removed limit of simultaneous Button animations.
- Removed limit of Character followers.
- Removed Overlay limit.
- Character.SetWalkSpeed() is no longer restricted by an arbitrary limit of 50.
- Process character's idle view based on real game speed, not hardcoded 40 fps.
- Improved file writing times (e.g. when doing a game save) by using buffered file stream. Initial tests showed 50% faster file writing.
- Engine now renders GUI controls as separate textures when using hardware accelerated renderers.
  This may significantly improve perfomance in the high-resolution games and games with large number of GUI elements on screen.
- Engine now shares the video texture data for all game objects on screen sharing same sprite. This improves perfomance in case there are multiple objects which use same image.
- Engine now ensures that in threaded audio mode the AudioChannel's state only changes once the game is updated, and not while the game script is running. This prevents situations when the clip could begin playing before all properties are set in script, or when AudioChannel's properties' values (such as Position) could change while running a game script.
- 24-bit wav PCM support, comes with the new sound library.
- File.ReadRawLineBack() now always reads full line, and not limited to 200 characters anymore.
- Debug displays, such as showing room mask and character walk paths, are now implemented as non-blocking translucent overlays, allowing you to keep playing the game while they are on.
- Implemented debug key controls for calling a built-in save and restore game dialogs. These controls have to be set in user config as "save_game_key" and "restore_game_key" in "[override]" category. These may be used by testers if the game is missing a save function or one is bugged.
- Engine now supports loading compiled scripts as separate files packed along with the game, along with those embedded into the main game data or inside room files.
- Engine no longer bails out with error if the chosen translation cannot be loaded on startup.
- When reporting script errors, engine will print callstack for all the active script "threads": for example, if there's Wait() function called and error happened in repeatedly_execute_always, then it will print both actual error's location, and Wait() call's location.
- Engine config now has graphic modes defined as a simplier string options: "[graphics] fullscreen" for the fullscreen mode setup, and "[graphics] window" for the windowed.
  Fullscreen option can explicitly define a "borderless full-screen window" mode.
- Added "load_latest_save" and "show_fps" options to config (in "[misc]" category).
- Added "background" option to config in "[misc]" category, that defines the starting run-in-background (aka multitasking) mode (may later be changed by SetMultitaskingMode()).
  Added "--background" command line option for the same purpose.
- Added "cache_size" and "stream_threshold" options to config in "[sound]" category, they setup the rules for sound caching and choosing whether to load a clip fully into mem or stream one.
- Added "--sdl-log" command line option for setting up SDL2 library output verbosity. The engine log config now has a new "sdl" group meant for SDL2 messages.
- Support "--user-conf-dir" command-line arg (and "user_conf_dir" config option) superceding "--localuserconf"; the new option directly tells the location of user config file.
- Path related command-line and config options, - such as "shared_data_dir", "user_data_dir" and "user_conf_dir", now support $GAMENAME$ token in path which is resolved to the game's title.
- Added "--clear-cache-on-room-change" command-line arg (and similar config option).
- Don't error when DrawingSurface.DrawImage has bad transparency parameter (warning instead).
- Don't error when detecting bad format in File.Read* functions (warning instead).
- Added stubs for agsshell plugin (a contemporary cross-platform variant of ags_shell).
- Added SpriteFont plugin to the list of builtins, for ports that use ones. SpriteFont plugin is updated to support custom "Clifftop Games" font variants.
- Fixed dialog script's "goto-previous" command not working if used from the first sub-topic run using "goto-dialog" (a very-very old bug).
- Fixed potential crash on room load if the walkable area mask contained color values above the supported range.
- Fixed potential crashes if a room-related API function has been called in "game_start"; this is achieved by having a dummy room placeholder object. Still results of such calls are undefined and should not be relied upon.
- Fixed renderer error occuring if room background frames are of different sizes.
- Fixed AGS_EngineInitGfx plugin callback was not called during OpenGL renderer initialization.
- Fixed overlay may fail to be created sometimes, if previously another overlay had been forcefully removed when changing rooms (this is an ancient bug which existed for many years).
- Fixed ListBox.RowCount reporting 0 if called before the control was displayed once.
- Fixed text may be misaligned in gui controls, as its outline thickness is not counted.
- Fixed some TTF fonts could be cut at the bottom when the speech is displayed.
- Fixed scheduled sound fadeout effect was not cancelled by skipping a cutscene.
- Fixed OGV Theora videos positioned incorrectly if they have certain sizes or aspect ratios.
- Fixed multitasking mode persisting if the game was switched from windowed to real fullscreen mode (even though it's not supposed to work in exclusive fullscreen).
- Fixed game fps sped up if SetGameSpeed() is called repeatedly in game script.
- Fixed game not reacting to system close commands when stuck in script, which made it impossible to close the "hanging" game by usual means (other than terminating the process).

Engine Plugin API:
- Added IAGSEngine::GetGameInfo() function which returns information about the game, such as its title and GUID.
- Added new render callback AGSE_POSTROOMDRAW, for handling drawing inside the room above all room objects.
- Added IAGSFontRenderer2 interface, expanding the original font renderer interface, improving font plugins support.
- Added ReplaceFontRenderer2() and NotifyFontUpdated() functions.

Compatibility:
- Fallback to loop 0 if the speech view does not have frames in the current directional loop.
- Set the first loop with frames if current character's loop does not have any for some reason.
- Ignore character having view/loop with no frames while it's not in the current room.
- Legacy behavior of MoveCharacterBlocking's return value.
- Fixed walkable area's continuous scaling was broken for high-res rooms in old games.
- In pre-3.* games force player to walkable area after changing rooms, this is to emulate an unintentional effect created by the old engines.
- Fixed pre-3.4.1 anti-aliased TTF fonts display (their vertical position was broken).
- Support Label.TextAlignment with legacy alignment constants for pre-3.5.0 games made with the custom engine from "Clifftop Games".
- Support native resolution hack for games made with "Clifftop Games" custom engine, where 640x400 games are run as 640x360.

Android:
- Rewrote universal AGS game launcher/player using up-to-date Google guidelines. The former "launcher" is now called "AGS Player".
- Implemented single game project template meant for building your own signed APK.
- In AGS Player added "Browse" button to the game folder selection, which opens default system file picker.
- AGS Player now searches for games recursively, in all the subfolders.

OSX:
- OpenGL renderer is now supported on MacOS.

Web / Emscripten:
- Initial port release.

Windows:
- Installer will create program links with three-digit version in the name.

WinSetup:
- Added "Fullscreen as borderless window" checkbox.
- Remade sound options to reflect the move to the new audio system in the engine.


KNOWN ISSUES
* MIDI no longer plays on its own on Windows. For MIDI you (and your players) must install "sound banks" (also known as "sound font"). Please refer to this article: https://github.com/adventuregamestudio/ags-manual/wiki/MIDI-playback
* AudioChannel.Position and AudioChannel.Seek do not work for MIDI and MOD sounds. Try sticking to PositionMs and SeekMs for now.
#3107
Font's have a "Outline" property that lets you choose a second font to outline them. Check all your fonts and make sure that outline settings are set to what you really want.
#3108
Emufr3ak, as you mentioned that amiga does not have a std library, I don't know if that will help you, but ScummVM project has its own replacement for STL and some other standard C++ functions:
https://github.com/scummvm/scummvm/tree/master/common
#3109
Quote from: Emufr3ak on Sat 19/03/2022 18:06:03
This would still be great as you could use the AGS Authoring tools to create your Amiga game.

Well, theoretically that may be done; AGS Editor and tools produce "game data" as an intermediate step before deploying full build for the target system. Any port or even alternate engine may load that data up and execute on specific platform. So the question is mainly in having such ported engine.
#3110
It's hard to tell. AGS code is not very efficient, and may be quite slow in places. Namely its script interpreter currently became slow due to some compatibility layers (mostly meant to run a range of game versions). Contemporary desktop systems don't care (unless there's a 3D raytracing engine written in script, or something), but low-end devices may struggle with it.

We had a PSP port a while ago (I think PSP is more modern than Amiga and has more ram?), and yet we had to drop it eventually because after some changes the games run too slow; and we did not have enough time and human resources at that time to put an effort in improving this situation.

6MB of RAM sounds too little to run contemporary games. Maybe some early 2000-ies games will be able to run in this amount of memory. Disabling certain features, like digital music, may also help.
Perhaps cutting of some layers of code may also improve the memory requirements and speed things up.
Maybe even taking the much older version, such as 3.2.1, from the times before the opensource project has began, could provide better results; it was much less "safe" and more fragile, yet faster in certain ways.
#3111
Quote from: Stranga on Sat 19/03/2022 04:24:55
Strangely when I started a fresh empty game and make a list box and a dialogue both with translated lines they worked. However, when I made a game out of a template they didn't work, I compared both versions' TRS files and didn't find any differences, both had UTF-8 encoding on them. Strangely I changed the Text Format under general settings to UTF8 and it worked?

According to the plan, the game should switch to UTF-8 mode if active translation is UTF-8, even if the game itself has the Text Format set to ascii.
I will double check that this works.

EDIT: Ok I found and fixed two more recent bugs...
1. if game was ASCII, but translation UTF-8, then the translation keys were incorrectly loaded, so translation could not be performed
2. winsetup did not list translation names properly (did not cut ".tra" extensions from them)

Temp build with fixes will be available here when the building process is complete (about 20-30 mins after me posting):
https://cirrus-ci.com/task/4630726241943552
#3112
The temp build with a keyboard fix may be downloaded here:
https://cirrus-ci.com/task/5721016642043904

please tell if it fixes the key input.

But i don't yet know what is wrong with translations. I'll have to think more about it, or wait for your small test game.

QuoteI loaded a backup on 3.6.0.17 and the dialogue navigation works fine, however, the text is still not being translated in list boxes and dialogue
So, if I understand correctly, translation in dialog options did not work in 3.6.0.17 too?

I remember that previously you had issue with some languages, but they were fixed?
https://www.adventuregamestudio.co.uk/forums/index.php?topic=58976.msg636644048#msg636644048

Do you use same font as on labels there, or a different one?
#3113
Quote from: Stranga on Sat 19/03/2022 00:13:56
I've encountered a problem with translations in list boxes and dialogue options displaying symbols rather than being translated, not sure if a bug or my mistake but here's what I'm referring to:

I recall dialog options worked before, did this new error appear after some changes, or engine update, or with another language?

Is the given translation saved in UTF-8 and has "Encoding" set in TRS? Does it use correct font that has necessary characters?

Does the same language/font work everywhere else, e.g. on labels, speech etc?
#3114
Quote from: eri0o on Fri 18/03/2022 11:34:18
Hey, this issue with vox packages will be fixed in the next 3.6.0 release. :)

Temp build may be downloaded here for a test: https://cirrus-ci.com/task/5385155433988096
#3115
Quote from: Andrea1992 on Thu 17/03/2022 04:03:20
Room 5,
To get there, from the bedroom (initial room) go outside using the door, then talk to the girl that arrives (only character in that room). This sends you to the room 5, where the cutscene esc problem occurs,
thanks

Ok I finally found the actual cause for this, it happens when you have WaitMouse/Key(-1) in the middle of the cutscene. Engine does not handle -1 (infinite timeout) properly when skipping the cutscene.

EDIT: again, the fixed temp build:
https://cirrus-ci.com/task/5993769815244800

Quote
So, when you update to alpha 22 or beta,  will the fix be included?

Yes of course.
#3116
Quote from: Andrea1992 on Thu 17/03/2022 00:44:39
Also, the game freezes sometimes. There is a cutscene in one of the rooms with fewer backgrounds and when I tried to escape it, it freezes the game completely. (This is when you talk to the girl outside the house)

Could you tell the number of the room and what do i have to do to reproduce the problem? I never played your game before.
#3117
@Andrea1992, it appears to be some older bug which I could not fix correctly. It happens when you move from the room with several backgrounds to room with less backgrounds.
Here's the build that should have this fixed:
https://cirrus-ci.com/task/5214597316608000
#3118
@Andrea1992, "Program pointer +204" indicates a stage during loading the room, when engine prepares walkable areas and walk-behinds.
Unfortunately, checking these rooms alone, and importing them into another game, does not reproduce the problem.

Do you remember what was the previous version of AGS you were using where you did not have such errors?
Is it acceptable for you to PM a full compiled game for a test?
#3119
Updated to Alpha 21
(use download links in the first post)

We are working to complete the unicode support in this version, and also fixing some issues found since the last update.
We still have to prepare updated game templates, imho this is the last thing remaining before announcing 3.6.0 Beta.

New changes:

Editor:
- Added "Use old keyboard handling" option to the General Settings (Backwards compatibility section), which lets select between classic key press handling and new one meant for easier unicode chars support in scripts. See below for more information on this new mode.
- Select script editor's font in the editor's Preferences.
- Fixed some editor's panes do not update previews on property changes (regression since 3.6.0.19).

Compiler:
- Support for the unicode character literals.

Script API:
- Expanded on_key_press callback, now supports two parameters: key code and key modifier flags.
- In the new key handling mode on_key_press is called for each actual key press; e.g. combinations like Ctrl+Z will result in two on_key_press calls, one with eKeyCtrlLeft and second with eKeyZ.
- Implemented new on_text_input(int ch) callback which is called when the engine receives a printable character. This callback is essential for handling unicode chars in script.
- Similarily, expanded dialog_options_key_press with the third mod argument, and implemented dialog_options_text_input callback for receiving unicode chars during the custom dialog options state.
- Added eKeyMod enum for key modifiers constants.
- String.AppendChar, ReplaceChar and Chars[] property are now working with the unicode characters.
- String.Format("%c") specifier will now be able to print unicode characters.

Engine:
- Update engine's sound config to match new SDL2 backend, allow to choose specific sound driver.
- Allow to choose output graphics driver for software mode in config.
- Fixed engine was handling buffered key presses one at a game frame, could cause delayed reaction to the key input (regression in 3.6.0).
- Fixed engine switching to ASCII mode when changing to default translation, even if the game is compiled in unicode mode.

Winsetup:
- Updated sound config, removing obsolete settings.

Full list of changes is available here:
https://github.com/adventuregamestudio/ags/blob/master/Changes.txt
Description of the current engine config:
https://github.com/adventuregamestudio/ags/blob/master/OPTIONS.md




In regards to the key input changes. There are two things.

1. Regardless of the handling mode (see below), the on_key_press function now supports the second parameter: key modifiers. It stores current key modifiers (ctrl, shift, alt, etc) as bit flags. The reason for introducing this parameter is that because the key presses are buffered between game frames, using IsKeyPressed does not always correspond to each handled key. Having an actual "mod" parameter ensures that you can know which modifiers were on when this particular key was pressed.

NOTE: the "int mod" is an optional parameter, and may be omited from the function. It will work correctly even with 1 parameter (eKeyCode).

The list of key mods:
Code: ags

enum eKeyMod
{
  eKeyModShiftLeft,
  eKeyModShiftRight,
  eKeyModShift,        // this means: any shift
  eKeyModCtrlLeft,
  eKeyModCtrlRight,
  eKeyModCtrl,         // this means: any control
  eKeyModAltLeft,
  eKeyModAltRight,
  eKeyModAlt,           // this means: any alt
  eKeyModNum,        // numlock
  eKeyModCaps         // capslock
};


These are not normal enums, but bit fields, which means that you should not use regular comparison with them (like "if (mod == eKeyModCtrl)"), but bit field check instead: "if (mod & eKeyModCtrl)".
Code: ags

function on_key_press(eKeyCode key, int mod) {
    if (key == eKeyQ && (mod & eKeyModCtrl)) { // this tests for ctrl + Q
    }
    if (key == eKeyF1 && (mod & eKeyModAlt)) { // this tests for alt + F1
    }
    if (mod & eKeyModNum) { // this tests if num lock was on when this key is pressed
    }
}


2. The new key handling mode, it's enabled by setting "Use old keyboard handling" in Backwards compatibility (General Settings) to false (this will be the new game default after we update game templates).

What is the difference between old mode and new mode?

Old mode is a backward compatible input handling mode, where
* lone mod keys (Ctrl, Alt, Shift) are not passed further into the engine nor script;
* key + mod combos are merged into one key code for the on_key_press callback: e.g. eKeyCodeCtrlA key codes;
* on_text_input script callback is NOT called.

New mode is:
* all keys are passed into the engine and on_key_press script callback as-is, one by one; e.g. if you press Ctrl + Z, then you get two on_key_press calls, one for Ctrl and another for Z argument..
* on_text_input script callback receives printable characters, which may be used to handle unicode chars typed by the player correctly.

There's a new compiler macro "NEW_KEYINPUT_API" which may be tested using #ifdef and #ifndef to know which mode is set when the game is run. This is mostly useful to the script module writers.

Examples of new mode script
Code: ags

function on_key_press(eKeyCode k, int mod) {
    if (k == eKeyV && (mod & eKeyModCtrl)) {
         // player pressed Ctrl+V, paste the copied text into your custom text control
    }
    if (k == eKeyAlt) {
         // player pressed either Alt
    }
}

function on_text_input(int ch) {
    // player pressed some keys, which formed a printable character
    // this may be either ASCII char, or Unicode char, depending on the game mode
    lblTextField.Text = lblTextField.Text.AppendChar(ch);
}
#3120
Updated to Alpha 20
(use download links in the first post)

Had to make new update soon, to fix couple of problems found since the last update.

New changes:

Editor:
- Fixed crash when changing game encoding if any script window is open (since 3.6.0.18).
- Fixed script editor "random" errors when deleting multiline selection (regression in 3.6.0.18).

Compiler:
- Support hexadecimal number literals (32-bit max). May be used anywhere where regular decimal numbers are used.
Code: ags

int a = 0xFFFFFF00;
int b = 0x01234567;
int c = 0xabcdefab; // both capital and small x and a-f letters are supported
int d = 16 + 0x10; // means 16 + 16


Engine:
- Removed limit of simultaneous Button animations (was 15).
- Removed limit of Character followers (was 30) (was not demanded, but because why not).

Full list of changes is available here:
https://github.com/adventuregamestudio/ags/blob/master/Changes.txt
SMF spam blocked by CleanTalk