-
Notifications
You must be signed in to change notification settings - Fork 159
/
Changes.txt
5303 lines (4897 loc) · 290 KB
/
Changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
REVISION HISTORY
================
VERSION 3.6.0 - Patch 2, June 2023
Common:
- Fixed a TTF font could cause a crash in the Editor or the Engine if the font renderer tries
to draw a letter with higher number than the highest glyph number in the font.
Editor:
- Added "Restore all sprites..." command to the Sprite Manager's context menu
(this duplicates the "File -> Recreate sprite file" menu command added previously).
- Refresh Sprite Manager after fully recreating a sprite file.
- Sprites will now hide their "Resolution" property if the game settings have "Allow relative
asset resolutions" disabled. This is to avoid user's misuse of this property.
- Fixed a minor memory leak occuring when editing a tree item's label in Project Explorer.
Engine:
- Engine will now find and load plugins in the game dir when run from a different location.
- Fixed crash occuring if Character was told to FaceLocation while "Turn to face" game
setting is enabled, and character's View does not have enough loops.
- Fixed Character resetting current non-blocking animation if it was ordered to Move,
as soon as it arrives at destination.
- Fixed crash occuring if a GUI button was somehow set a negative NormalImage number.
- Fixed "bad script stack" error could be sometimes displayed if the game was aborted in
the middle of running a script.
VERSION 3.6.0 - Patch 1, May 2023
Editor:
- Fixed room's deprecated setting LegacyMusicVolumeAdjustment not applied correctly.
Engine:
- Fixed Room Objects whose dynamic sprite was deleted in "leave room" event becoming
invisible during fade-out transition. Logically this has to happen, but historically
they kept displaying until the transition end, so we restored this behavior for compatibility,
and simply because there's no "after fade-out" event in the engine yet to delete these sprites.
- Fixed Game.StopAudio() fails to remove queued clips if no particular audio type id is requested.
- Fixed performance regression in the script related to long loops (regression in 3.6.0).
- Fixed memory leak occuring when printing text in Right-to-left mode (regression in 3.6.0).
- Fixed rare mistake during text wrapping which may occur if a Unicode text is cut in the middle
of the word.
- Fixed playing certain WAVs caused game to freeze forever on exit.
Compatibility:
- Fixed frame-linked sounds not playing in the games made before 3.6.0.
- Allow game to call DynamicSprite.Create() with negative size, clamping it to 1x1.
VERSION 3.6.0, April 2023
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).
- Expanded UI color theme format, support global color options and allow missing entries.
- 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.
- Editor now copies a acsetup.cfg file from the project's root folder (if one is provided by)
as a base for generating default config file. Settings from Default Setup will be written over,
but other found options won't be removed.
- 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 "Touch to Mouse Emulation", "Touch to Mouse motion mode" and "Display FPS on Screen" to
Default Setup. Removed few deprecated options.
- 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 sprite file 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.
- In Preferences replaced "Import Color Theme" with a "Open Theme Folder", as a temporary solution
for managing theme files.
- 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 context menu added command "Create source files for all sprites with missing
/ external sources..."
- In sprite manager's context menu added (restored) command "Replace sprite using previous files".
Also made "previous file" remembered consistently whenever a sprite is imported or replaced.
- In sprite manager's "export all" dialog added "skip if inside project's folder" option.
- In sprite manager's "export all" dialog added "reset tile settings" option.
- 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 open folders in the Project Tree were collapsing whenever you create a new subfolder or
change an object's name in properties.
- 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 program crash occuring on sprite's import if failed to open a source file for any reason.
- 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 matching or mismatching braces were not highlighted consistently at all times in
regular and dialog scripts.
- Fixed crash occuring when user was trying to set breakpoint on the very last line in script.
- Fixed few editor panes were not opening correct help topics in F1.
- (Possibly) fixed error message text in the runtime error popup could be drawn partially beyond
the popup borders if the user's system has text scaling option enabled.
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.
- Support for switching vertical sync at runtime with Direct3D/OpenGL renderers.
Also enable vsync in windowed mode too.
- 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 performance 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 performance in case there are multiple objects which use same image.
- Various performance optimizations for both raw drawing and texture updates (Direct3D/OpenGL).
- 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 "emul_mouse_mode" and "emul_mouse_relative" options to config in "[touch]" category.
- 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 "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 "--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 stubs for agsappopenurl plugin.
- 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 potential crash on room load if the walkable area mask contained color values
above the supported range.
- 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 AGS_EngineInitGfx plugin callback was not called during OpenGL renderer initialization.
- Fixed Direct3D/OpenGL renderers were displaying plugin's raw drawings in a wrong position in
the scrolling rooms, if the drawing was done on AGSE_PRESCREENDRAW or AGSE_POSTROOMDRAW events.
- 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 GetTextWidth would still return a size of an outline for an empty text string.
- 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 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 the first loop with frames if current character's loop does not have any.
- Use the dummy frame if current character's speech view loop does not have any.
- 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).
- For pre-3.5.0 games support old behavior of coincidental dynamic sprite replacement
on GUI backgrounds (and few other places) without explicit assignment; that is - when the new
DynamicSprite is created right after deleting an old one.
- 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.
- Implemented two touch-to-mouse control scheme (selectable in config), for one finger
emulating LMB only, and for two fingers emulating LMB and RMB.
- Support relative motion speed setting for touch-to-mouse emulation.
- 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.
- AGS Player now has preference button per each game, which opens individual game's settings.
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.
Plugins:
- Added SpriteFont plugin to the list of builtins, for ports that use ones.
SpriteFont plugin is updated to support custom "Clifftop Games" font variants.
WinSetup:
- Added "Fullscreen as borderless window" checkbox.
- Remade sound options to reflect the move to the new audio system in the engine.
===================================================================================================
VERSION 3.5.1 - Patch 20, March 2023
Engine:
- Fixed AudioClip.Play allowing to place clips on a crossfade channel in general case;
there's still a backward-compatible case where it's allowed to do so for audio types
with reserved channels that exceed the normal channel limit.
(Regression since 3.5.1 Patch 11)
VERSION 3.5.1 - Patch 19, March 2023
Engine:
- Fixed System.Volume is not correctly applied after restoring the save.
(Regression since at least 3.4.0)
VERSION 3.5.1 - Patch 18, February 2023
Engine:
- Fixed background speech and textual overlays may disable GUI when being continuously
created in repeatedly_execute* kind of functions. (Regression since previous patch)
VERSION 3.5.1 - Patch 17, January 2023
Editor:
- Fixed GUI.Visible property was resetting to false when PopupStyle is switched to Modal.
Engine:
- Performance improvement in Direct3D/OpenGL renderers, related to plugins which subscribe to
render events.
- Fixed renderer error occuring if room background frames are of different sizes.
- Fixed software renderer may have an unpainted black line at the bottom, if there's a GUI or
Overlay positioned partially offscreen.
- Fixed GUI buttons could retain mouse-over pic after interface is disabled then enabled
(this is a regression since recent patch).
- Fixed crash occuring when user creates too many Overlays in script;
will report a scripting error instead.
- Fixed memory leak occuring when the TTF font is drawn partially outside the DrawingSurface.
- Fixed Parser.Said() could lead to a program crash in case there are space-separated words
following the comma (e.g. "climb,get in bed").
- Fixed crash occuring if a plugin tried to call SetVirtualScreen().
Plugins:
- Fixed SnowRain plugin drawing particles only in 320x200 bounds.
VERSION 3.5.1 - Patch 16, December 2022
Editor:
- Fixed autocomplete crashing the editor if there was an import declared with type and variable
having identical names, and user tries to type that variable's name and a dot to access
its members.
- Fixed newly created Views taking free IDs in the middle of the list in random order instead of
a straight one (after you previously deleted some Views).
Engine:
- Added missing "DrawSprite" function for "agsblend" plugin stubs.
- Fixed loading pre-3.5.0 games on big endian systems.
- Fixed GUI buttons not displaying the mouse-over image if the interface state was toggled
to enabled state while the mouse was over the button.
VERSION 3.5.1 - Patch 15, October 2022
Editor:
- Fixed crash that could occur when changing View's ID to an unused number in the middle.
- Fixed comments and string literals were styled incorrectly in dialog scripts.
- Fixed unterminated string literals in script were not considered as errors when processing
scripts for translation update and autonumbering of speech lines, leading to wrong results.
- Fixed Editor was updating translation file even if errors were found while scanning the
scripts, which could cause a TRS corruption.
- Fixed Editor could overwrite changes done manually to TRS while the editor is open and if
you run a translation update right after.
- Fixed potential program crash on exit in case an editor's plugin has mistakes in "shutdown"
callback. Instead editor will report a component's error, but still close properly after.
Script API:
- Removed a rule that Viewport and Camera with ID 0 can't be deleted.
VERSION 3.5.1 - Patch 14, September 2022
Editor:
- Do not error when compiling a 256 colors game if Direct3D or OpenGL are selected as a default
graphics driver (display a warning instead).
- Fixed crash when trying to import pre-2.60 game projects.
VERSION 3.5.1 - Patch 13, August 2022
Engine:
- Fixed room object does not update its texture if it had a dynamic sprite assigned to it,
and that sprite was unassigned, modified or recreated with same ID, and then reassigned again, -
all within the same game frame.
- Fixed normal font renderer is not reinitialized correctly in the engine if a plugin uses
IAGSEngine::ReplaceFontRenderer(), passing original renderer's pointer (which it received from
the previous ReplaceFontRenderer call).
VERSION 3.5.1 - Patch 12, June 2022
Engine:
- Fixed GUI textual controls don't redraw when the game translation changes until player clicks
on GUI (regression since previous 3.5.1 updates).
- Fixed multitasking mode persisting if the game was switched from windowed to fullscreen mode
(even though it's not supposed to work in fullscreen).
VERSION 3.5.1 - Patch 11, May 2022
Editor:
- Fixed batch sprite export with "Set exported file as sprite source" option was assigning
new source paths without file extension.
Engine:
- Performance fix: GUIs changing Transparency or Visible state should not redraw their surface.
Compatibility:
- Allow AudioClip.Play to to place clips on a crossfade channel, which is normally unaccessible
from script. This prevents errors in some games that relied on this behavior.
VERSION 3.5.1 - Patch 10, April 2022
Engine:
- Fixed crash when visible viewport does not have any linked camera.
- Fixed ListBox.FillSaveGameList() may include save slots with negative slot number (e.g. when
the save file has "*.-01" extension).
- Fixed potential crash after failed RunAGSGame() call.
- Fixed search for the game data by GUID when restoring a save belonging to another game;
this was implemented in 3.5.1, but appeared to not work correctly.
VERSION 3.5.1 - Patch 9, March 2022
Editor:
- Removed restriction on max dialog topics in the project. The dialog limit in the engine was
removed in 3.4.1, but remained in the Editor by oversight.
- Fixed Audio Clip items in the project tree not displaying their IDs right after being renamed.
Compiler:
- Fixed crash occuring when compiler tries to report "Already referenced name as import" error.
Engine:
- Added "--translation" and "--no-translation" command-line arguments.
VERSION 3.5.1 - Patch 8, Ferbuary 2022
Engine:
- Clearer error messages for Get/SetProperty functions.
- Fixed PlayFlic() command fails to start the video (regression in 3.5.1).
- Fixed DrawingSurface.DrawSurface() not applying transparency parameter correctly if the
drawn surface has alpha channel.
- Fixed @OVERHOTSPOT@ is not updated immediately when character's name changes while cursor
is above that character.
VERSION 3.5.1 - Patch 7, January 2022
Editor:
- Added "Layout -> Reset to Defaults" menu command.
- Editor will now reset panel layout to default state if loading layout fail for any reason.
- Default config is now saved also when the game is run in debug mode (F5). This ensures that
the test run is using the latest Default Setup, if the user's config has not been created yet.
- Editor will now display an error if user tried to reserve too many channels for audio types.
- Fixed Editor failing to start if user preferences file is corrupted.
- Fixed "Use old-style custom dialog options API" was not set when importing pre-3.4.0 projects.
- Fixed comboboxes' drop-down arrows were not painted with the right color from a color theme.
Engine:
- Fixed program crash occuring if the game reserved too many channels for audio types.
- Fixed potential crash occuring when player loads a save made in a multi-frame room, but the room
was since edited and no longer has as many frames.
- Fixed character may have incorrect Frame property values while turning.
VERSION 3.5.1 - Patch 6, December 2021
Editor:
- Added line numbers in the dialog script editor.
- Fixed Dialog script loosing changes if the pane is closed or redocked.
- Fixed controls arrangement on the Dialog pane getting broken when it's redocked.
Engine:
- Fixed filepaths in scripts that have backslashes ('\') fail on non-Windows systems.
All the File functions will now convert backslashes in filepaths into forward
slashes for compatibility.
- Fixed engine was still creating standard directories for game saves and data, even
if user provided the custom paths for these.
- Fixed TextBox control crashing the game if it's empty and player presses Backspace.
- Fixed controls on a fully transparent GUI were not interactive (this is an original
AGS behavior, which was unintentionally changed in 3.5.0 by mistake).
Compatibility:
- When running 3.5.0 games, treat fully transparent GUI as non-interactable.
In AGS transparent GUIs may be still interacted with, but 3.5.0 introduced an
unintentional (and undocumented) change to this, which was reverted in 3.5.1.
Android:
- Support global engine's config file when the game is run from the Launcher: it's
located in the AGS games' parent directory, same place where android.cfg is.
WinSetup:
- Added "Custom game shared data path" to complement "Custom save path" option.
VERSION 3.5.1 - Patch 5, October 2012
Re-released without code changes, only fixing program build instructions for Linux.
VERSION 3.5.1 - Patch 4, September 2021
Editor:
- Fixed swapping of inventory item's numeric ID could lead to errors.
- Fixed crash when importing pre-3.* games with multiple script modules.
- Renamed "Enforce object-based scripting" setting to "Enforce post-2.62 scripting".
Compiler:
- Fixed potential memory corruption when user script reaches max nested if/else blocks.
Engine:
- Also tell module name and approximate source line when reporting script import errors
for the variables and local functions.
VERSION 3.5.1 - Patch 3, August 2021
Editor:
- Fixed sprite file over 2 GB could not be loaded (regression since the last patch).
Engine:
- Further improvement to GUI performance: don't redraw GUI when the mouse cursor is
hovering over or interacting with controls not leading to an actual visual change.
- Fixed ListBox items could become unaccessible if its font or height is changed leading
to a disabled scrollbar.
VERSION 3.5.1 - Patch 2, July 2021
Engine:
- Fixed speech lipsync getting disabled after loading another game with RunAGSGame().
- Fixed MOD/XM clips fail to play (regression).
- Fixed certain OGV videos fail to play (regression).
- Fixed software renderer was not updating game screen correctly when running a game with
legacy "letterboxed" feature (regression).
VERSION 3.5.1 - Patch 1, June 2021
Editor:
- Fixed script compiler sometimes was not specifying actual Dialog number when reporting errors
in the dialog scripts.
Engine:
- Fixed Game.TranslationFilename always returning empty string (regression).
- Fixed GUI controls which were toggled from disabled to enabled state not responding to the
mouse clicks until the mouse is moved (regression).
- Fixed OpenGL did not apply a Linear filter when "Render sprites in screen resolution"
option is off.
VERSION 3.5.1, June 2021
Editor:
- Added "Attach game data to exe" option to General Settings. This lets you to package game data
separately from the game.exe (only important on Windows at the moment).
- Deprecated "Limit display mode to 16-bit" property in Runtime Setup as it's no longer
used by the engine.
- Display aspect ratio in game resolution dialog.
- Implemented classic Color Picker dialog for the Color type values in the property grid,
instead of the default one which does not allow user-defined colors.
- Improved tab switching performance for script windows.
- Editor will now enforce full game rebuild after upgrading an older project, this ensures
that all scripts are recompiled with the new version rules.
- Fixed room lists in property editor were not updated after room number is changed.
- Fixed importing pre-3.* projects broken by incorrect assignment of "Game file name" property.
- Fixed importing Characters and GUI without sprites still created empty sprite folders.
- Fixed crash when exporting/importing Characters with no Normal View.
- Fixed translation compiler did not correctly save some of the escaped sequences, such as "\n".
Scripting:
- Implemented correct parsing of a "const string" function return type.
- Fixed implementing imported functions was forbidden in the room scripts.
Script API:
- Added GUI.Shown readonly property that tells whether GUI is active on screen. This is primarily
for GUIs with "Popup At Y" style, because they hide themselves regardless of Visible property.
Note that since 3.5.0 GUI.Visible only tells a script-set value.
- File.Open() now supports $CONFIGFILE$ tag which will try to open user config file for reading or
writing regardless of where config is located on disk.
- Added System.SaveConfigToFile() which writes current engine settings to the user config file.
Only the options that can be changed at runtime are written back at the moment.
- GetTranslation() now returns "const string" (was "string"). This is to prevent modifying
returned string using old-style string functions, such as StrCat(), as this string may be
allocated in the internal engine memory for its own use.
Engine:
- Support loading audio and video from data packages larger than 2 GB.
- Improved game data loading times by introducing buffered file stream. Initial tests
showed 3-4 times faster file reading.
- Improved game performance by not reupdating all of the GUIs each time anything changes, instead
only affected GUI will be updated each time.
- Some improvement to general script performance.
- Some improvement to script Dictionary and Set types performance.
- Room Object's Graphic property now can be assigned a sprite with index over 32767 and
up to 65535. This restriction is due to internal data format, which cannot be fully fixed
without breaking compatibility with plugin API. This may still be worked around by assigning
a View, as View's frames may contain sprites of any index available.
- Similarily, Object's View, Loop and Frame can now be assigned a value over 32767 and
up to 65535; not that this was ever an issue...
- Removed arbitrary limit of 1000000 dynamic array elements (now supports over 2 billion).
- Dialogs with no enabled options left will be now stopped, instead of raising script error.
- Engine will not longer quit the game when failing to write a save, but simply display an
error on screen (...why this was a thing in the first place?!).
- When restoring a save engine will now try to match game GUID pack rather than exe/pack name.
This resolves potential problems when game package may have different name in distribution
to another system. Also makes saves in multi-game collections more reliable.
- In Debug game mode allow to toggle infinite FPS mode (prior it could not be turned off).
- Expanded text parser error messages for easier debugging.
- Adjusted all the command-line options to have consistent prefix convention, where all full-name
options must be preceded by double-dash, and one-letter options by single dash.
- Added "--localuserconf" command and similar global config option which tells engine to read and
write user config in the game's directory rather than using standard platform path.
Game dir must be writeable for this to work.
- Added "--conf" command which forces engine to read only explicit config file on startup.
- Added "--user-data-dir" and "--shared-data-dir" commands for setting save game directory and
shared app data directory from command line (this corresponds to existing options in config).
- Fully configurable log output (in both game config and command line) allows to set up which
message types and groups are printed by which output methods (sinks), including: file,
system console, in-game console. "warnings.log" is now created only if file log was not
requested by user.
- Added "--log-" set of command line options for setting up log output.
- Added "--tell-filepath" option for printing known engine's and game's file locations.
- Added "--tell-gameproperties" option for printing some of the game's general settings.
- Support proper lookup for Allegro 4 library resources (such as its own config and digital MIDI
patches) in the game directory.
- Engine will no longer precreate directories for common files: saves, user config, and so forth,-
before actually writing them.
- Fixed running game from another directory by passing its relative filename as command-line
argument: in this case engine was incorrectly using its own directory to search for external
game data, opening files for reading by script command, and so on.
- Fixed some of the engine's own hotkeys (such windowed/fullscreen mode toggle) not working
during certain skippable game states.
- Fixed overlay was set to wrong position if it were using TextWindow gui and either its text
or X, Y properties got changed.
- Fixed crash occuring when the speech is using text window gui with zero Padding and the speech
text is an empty line.
- Fixed characters and room objects were not updating their looks if their current graphic was
a Dynamic Sprite, and that sprite was modified with ChangeCanvasSize, CopyTransparencyMask,
Crop, Flip, Resize, Rotate or Tint function.
- Fixed Views' frames keeping reference to deleted Dynamic Sprites.
- Fixed engine crash when button's graphic is set to sprite out of range.
- Fixed animated cursor's normal graphic reappearing in between animation frames if mouse mode
is being repeatedly reassigned, for example in rep-exec script.
- Fixed certain interactions did not work with GUI if it was made fully transparent.
- Fixed ListBox.FillSaveGameList() search pattern, it included files which contain save filename
pattern but do not exactly match; for example: "agssave.001_".
- Fixed engine was ignoring audio files in game directory when running games which use
old audio system.
- Fixed crash in Direct3D and OpenGL renderers that occured if game uses a plugin that performs
software drawing on screen, and one of the rooms is smaller than the game's resolution.
- Fixed Direct3D was assigning wrong fullscreen refresh rate sometimes, slowing alt-tabbing.
- Fixed "--test" mode was lost upon restoring a save.
Engine Plugin API:
- Added IAGSEngine::GetRenderStageDesc() function which returns current render stage parameters.
As of this version these parameters include 3 transformation matrixes, allowing any 3D render
plugin to stay compliant to engine's scene rendering.
Compatibility:
- Fixed engine was trying to read unnecessary data when loading pre-2.72 games.
- Fixed "upscale" mode for old games (was broken in 3.5.0). Also engine will now try to detect
if "upscale" mode wanted by reading old config options (if they are present).
- Fixed GUI.Visible not returning expected values for GUIs with "Popup At Y" style in
pre-3.5.0 games, breaking some older games logic.
- Fixed potential buffer overflow when reading pre-3.1.0 games with old dialog script texts.
- Fixed engine was applying player's position too early when ChangeRoom was called for 2.72 and
earlier games, which could result in wrong placement in the new room if the character was
walking right before the transition.
Android:
- Corrected game scanning in AGS launcher, now it will work consistently with the desktop ports,
and detect any compatible game data files named "*.ags" or "*.exe".
OSX:
- When looking for game files engine will no longer use hardcoded filename, will search for any
compatible pack file instead.
Windows:
- Windows version of the engine now reads global configuration file. It is looked up in
"%USERPROFILE%/Saved Games/Adventure Game Studio/acsetup.cfg"
- Default log file location is now also in "%USERPROFILE%/Saved Games/Adventure Game Studio".
- Added "--no-message-box" command line option to hide message boxes when alerts are raised.
- Added "--console-attach" command line option to try attach to the parent process's console.
WinSetup:
- Fixed changing fullscreen mode from "use current desktop" to explicit resolution on save.
VERSION 3.5.0 - Patch 10, May 2021
Engine:
- Fixed managed handle error that occured if you would copy an element of any string array
returned by Dictionary.GetKeysAsArray(), GetValuesAsArray() and Set.GetItemsAsArray();
for example: assign array's element to a local variable.
VERSION 3.5.0 - Patch 9, March 2021
Editor:
- Fixed importing Characters and GUIs saved by previous versions of the editor.
- Added support for startup pane hyperlink color in Color Themes.
Engine:
- Disabled writing user config upon game exit at least temporarily, because it was causing
confusion by unexpectedly overriding default config even if player did not start setup program.
- Fixed crash occuring if room object's Graphic is set to sprite with ID greater than 32767.
- Fixed button image did not appear updated right after restoring a save.
- Fixed legacy PlayMusic() and PlaySound() functions failing if the audio file
had uppercase characters in name (regression since 3.4.0).
Linux:
- For users of prebuilt binaries fixed potential crash in ogg vorbis library that could occur upon
restoring a save made while sounds were playing.
- Fixed OpenGL window did not resize properly upon running the game on some systems.
- Fixed Alt + Enter combination for toggling window mode was not detected on some systems.
VERSION 3.5.0 - Patch 8, February 2021
Editor:
- Fixed compressed sprite file was not built properly if exceeded 2 GB.
VERSION 3.5.0 - Patch 7, January 2021
Editor:
- Added validation for "Game file name" property to help avoid unsupported filenames.
Engine:
- Fixed Right-to-left text was not drawn correctly (regression in 3.5.0).
VERSION 3.5.0 - Patch 6, December 2020
Engine:
- Fixed Viewport.GetAtScreenXY() causing script errors at runtime.
- Fixed Software renderer could freeze the game in case there are multiple room viewports.
- Fixed Software renderer could draw room viewport in a wrong position if it was moved.
- Fixed RunAGSGame crashed the game if it uses any font plugin (implementing IAGSFontRenderer).
- Fixed built-in palgorithms plugin had uninitialized variable that could cause a crash.
VERSION 3.5.0 - Patch 5, October 2020
Editor:
- Fixed Inventory Item preview could show wrong sprites and/or sprites in wrong scale.
Engine:
- Fixed Dictionary.Get() crashing on missing key instead of returning null, as expected.
- Dictionary.GetKeysAsArray(), GetValuesAsArray() and Set.GetItemsAsArray() now return null
if they have no elements (0-sized arrays are forbidden by AGS Script).
- Fixed AudioChannel.SetRoomLocation() parameters lost upon restoring a saved game.
Linux:
- Disabled mouse speed control as it cannot be correctly supported. This fixes mouse movement
glitches in fullscreen on certain systems.
Compatibility:
- Don't error on missing speech animation frames if speaking character is disabled (.on = false)
- Fixed legacy Seek/GetMIDIPosition() and Seek/GetMP3PosMillis() not working correctly in threaded
audio mode.
VERSION 3.5.0 - Patch 4, August 2020
Editor:
- Fixed room editor crashing after user changes script name of a character present in opened room.
- Fixed modifying any item's name will make a new name assigned to all opened tabs.
Engine:
- Fixed OpenGL was taking screenshots incorrectly on certain systems with different alignment
of color components in video memory (OSX, iOS).
WinSetup:
- Fixed "Use voice pak" option was reset if no speech.vox found.
VERSION 3.5.0 - Patch 3, July 2020
Editor:
- In room editor adjusted the object selection bar's visual style, made dropdown buttons larger
and easier to click on.
- Made room editor display "locked" cursor consistently when whole object/area group is locked,
and when over locked Edges.
- Fixed room editor failing to initialize if currently selected object's name exceeded navigation
bar's width.
- Fixed some panels were not upscaling sprite previews in low-resolution projects as intended.
- Fixed ViewFrame's default Sound value set as "-1 (unknown)" (should be "none").
- Fixed "Change ID" command did not affect order of game objects in a compiled game until a
project was reloaded in the editor.
- Fixed "Change ID" command on a View restricted max ID to a wrong number (lower than normal).
- Fixed Character preview was not updated when View ID is changed.
- Fixed Room editor displayed character incorrectly when its ID is changed.
- Fixed import of room scripts when loading an old game made by AGS 2.72 or earlier.
- Fixed another unhandled exception occuring when Editor was about to report "unexpected error".
Engine:
- RunAGSGame() will now automatically reset translation to Default before starting new game,
to prevent situations when new game will be trying to init a translation from previous game.
- Character speech will be now displayed relative to the first found viewport the character is
seen in, or the one which camera is closest to the character in the room.
- Fixed crash when deleting custom Viewport in a non-software graphics mode.
- Fixed Viewport.Camera not handling set null pointer properly (should disable viewport now).
- Fixed Screen.RoomToScreenPoint()/ScreenToRoomPoint() functions were converting coordinates
always through camera #0, instead of a camera actually linked to the primary viewport.
- Fixed Screen.AutoSizeViewportOnRoomLoad property was forcing always camera #0 to align itself
to the new room, instead of a camera actually linked to the primary viewport.
- Fixed speech vertical position was not correctly calculated if the room camera is zoomed.
Linux:
- Fixed script floats were printed according to system locale rules and not in uniform one.
Windows:
- Again fixed game becoming minimized when quitting with error from the Direct3D fullscreen.
VERSION 3.5.0 - Patch 2, February 2020
Editor:
- Fixed mouse cursor flicker above the script editor, again (was fixed first for 3.3.5, but
then reverted by mistake).
- Fixed bitmap palette was not remapped to game or room palette for 8-bit sprites if they were
imported with "Leave as-is" transparency setting.
- Fixed an imported palette did not really apply to sprites until reopening a game in the editor.
Engine:
- Fixed crash when saving in a game which contains Set or Dictionary in script.
- Fixed crash caused by a 32-bit sprite with alpha channel in a 8-bit game.
- Fixed occasional regression (since 3.4.3) in OpenGL renderer that caused graphic
artifacts at the borders of sprites, but only when nearest-neighbour filter is used.
Windows:
- Fixed keyboard and mouse not working when game is run under Wine (or, potentially, particular
Windows setups too).
- Fixed maximal allowed window size deduction, which works better on Windows 8 and higher.
- Fixed game becoming minimized when quitting with error from the fullscreen mode, requiring
player to switch back in order to read the error message.
WinSetup:
- Fixed crash occuring if the chosen graphics driver does not support any modes for the current
game's color depth.
VERSION 3.5.0 - Patch 1, December 2019
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.
VERSION 3.5.0, December 2019
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.