AGS 3.5.0 - RC 5 (new upcoming version)

Started by Crimson Wizard, Tue 30/04/2019 20:38:49

Previous topic - Next topic

cat

Thanks! I made a build and sent it to VampireWombat for testing. Let's hope this works  :)

VampireWombat

So far so good. I'm too tired to play through at the moment, but it did at least open and let me get to a place with the save/load/quit gui.

Crimson Wizard

Update: AGS 3.5.0 - Beta 4

ZIP file: https://github.com/adventuregamestudio/ags/releases/download/v.3.5.0.13/AGS-3.5.0-Beta4.zip
Linux pack for the editor: https://github.com/adventuregamestudio/ags/releases/download/v.3.5.0.13/AGS.3.5.0.13.Editor.Linux.Pack.zip

Changes since Beta 3:

Common features:
- Now using Allegro v4.4.3 library (previously v4.4.2).

Editor:
- Adjusted saving sprite file to not cancel completely if only an optional step has failed (such as copying a backup file).
- Disabled screenshot made when sending a crash report, for security reasons.
- Fixed 32-bit sprite imported into 16-bit game was converted to 16-bit but wrongfully kept alpha channel flag.
- Fixed saving game when number of sprites is zero.
- Fixed newly created object was not selected in room editor.

Script API:
- Introduced StringCompareStyle enum and replaced "caseSensitive" argument in String functions with argument of StringCompareStyle type.
- Renamed Dictionary/Set's CaseSensitive property to CompareStyle and Sorted to SortStyle. Added SortStyle enum for them. Made both Dictionary and Set also accept these new enums instead of two booleans in Create function.

Engine:
- Fixed old walk-behind cut-outs could be displayed on first update in a room if the room's  background was modified using raw drawing commands before fade-in.
  This happened only when running Direct3D or OpenGL renderer. Note that this bug was probably never noticed by players for a certain barely related reason.
- Restored support for running games made with experimental 3.3.0 CR version.
- Fixed character's blinking frames drawn incorrectly when legacy sprite blending mode was on.
- Fixed increased CPU load when displaying built-in dialogs (save, restore etc).
- Restored legacy InventoryScreen() behavior which picked sprites 0, 1, 2 for inventory dialog buttons when predefined 2041, 2042 and 2043 were not available.
- Fixed unnecessary 100% CPU load (regression in 3.5.0).
- Fixed camera related errors when loading older save formats (regression in 3.5.0).
- Fixed sprite cache trying to dispose dynamic sprites and causing internal logic errors (regression in 3.5.0).
- Fixed ProcessClick and some other related functions not working correctly in the scrolling rooms in backward compatible mode (if game was compiled with Script API < 3.5.0-final).

Windows:
- Engine is marked as a DPI-aware application that supposed to prevent window scaling by system.

eri0o

#43
The link is broken for the first zip - Beta4 is named as Beta3. I downloaded and am using for Adventure Jam and it appears to work great  (nod)

Hey, I tried to build for Android the v.3.5.0.13 tag, buildall.sh went fine, but using ndkbuild on <SOURCE>/Android/library, I am hitting on an error for missing alfont.

Code: ags

[armeabi] Compile++ arm  : agsengine <= fonts_engine.cpp
jni/../jni/../../../Engine/font/fonts_engine.cpp:19:10: fatal error: 'alfont.h' file not found
#include <alfont.h>
         ^~~~~~~~~~

Crimson Wizard

Quote from: eri0o on Sun 09/06/2019 03:59:47
The link is broken for the first zip - Beta4 is named as Beta3. I downloaded and am using for Adventure Jam and it appears to work great  (nod)

That's a wrong file. It actually was Beta 3.
I reuploaded and now it's Beta 4 for real.

Neo_One

Is there any chance that in the future the editor will be native to Linux? I think it could be done with Mono.

eri0o


Crimson Wizard

Quote from: Neo_One on Sun 09/06/2019 13:41:01
Is there any chance that in the future the editor will be native to Linux? I think it could be done with Mono.

There is a chance, and this is "in plans" for the last 7 years, but this is as much as I can say at the moment.
Depends mostly on whether there will be people who like to work on that.

Dualnames

Confirming the FPS drop with dialogs has been resolved! Yay <3
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

cat

Thank you for your work and taking into consideration the issues I had!

Dualnames

Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

Monsieur OUXX

#51
I know I'm a bit late to the party but

Spoiler


DICTIONARY AND SET

FINALLY




[close]

Those objects provide more or less arrays of pointers to arrays of Strings ( Set* s[] = new Set[100]; s[0] = Set.Create(), where s is the array of pointers, and s[0] is an array of Strings. )

This brings us closer to the awaited ability of manipulating arrays of pointers (or references, whatever) to arrays of int, which, for me, is the holy grail missing from AGS.
It's however still not possible because:
- Those two objects let us manipulate pointers to arrays of Strings, not arrays of int
- There's not "GetAt", even for unsorted sets.

If there was a "Set" object dedicated to storing int values, and if there was a "GetAt" function, then everything would be perfect.
I know that dynamic arrays of dynamic arrays containing int values are already possible if you use Strings as char arrays to store ints and then put those Strings into an array of their own, but that's super slow.
 

Crimson Wizard

#52
Quote from: Monsieur OUXX on Thu 13/06/2019 13:28:38
Those objects provide more or less arrays of pointers to arrays of Strings ( Set* s[] = new Set[100]; s[0] = Set.Create(), where s is the array of pointers, and s[0] is an array of Strings. )

This brings us closer to the awaited ability of manipulating arrays of pointers (or references, whatever) to arrays of int, which, for me, is the holy grail missing from AGS.

Hmm, I don't think they are bringing any closer to this, because they are completely separate branch from that and have their own purpose. Adding them had no intention to substitute arrays of arrays etc.
Perhaps they could be used as a workaround, but that's a coincidence.

Apart from obvious convenience, another big reason to add these was that some of existing functionality may be replaced/recreated by a more universal Set or Dictionary of strings: such as Custom Properties, Game.DoOnceOnly, Translation dictionary, Word parser dictionary, and maybe something else

Quote from: Monsieur OUXX on Thu 13/06/2019 13:28:38
- There's not "GetAt", even for unsorted sets.

There are methods that convert contents of a dictionary or set into plain array. Dictionary.GetKeysAsArray, Dictionary.GetValuesAsArray and Set.GetItemsAsArray. You may then get an element by index from them if you like.


Quote from: Monsieur OUXX on Thu 13/06/2019 13:28:38
If there was a "Set" object dedicated to storing int values, and if there was a "GetAt" function, then everything would be perfect.

It won't be perfect IMO, firstly because it won't be a generic container. Without support for generic/template types in ags scripts we would have to implement each container for each type separately.
I was only persuaded to implement Dictionary and Set of strings because the strings are most universal of all basic types, and you can in theory encode anything in a string, even a reference to an object. So, my thinking was that in the abscence of generic types and in presence of remaining scripting limitations these two containers could provide some relief and workaround for a time being.

Secondly, I believe it's wrong to have the GetAt function in a "set". Set type has a very particular purpose; for ordered sets getting by index implementation will be pretty slow, and for unordered it will make almost no sense. GetAt would be a part of a "list" or "vector" type instead. Or array, fwiw.
For getting items by index you can reuse the functions that convert set to array, which I mentioned above.

PS. I wonder why there's no arrays of arrays in AGS though. From the engine's perspective there should not be any restriction, because dynamic arrays are managed objects, and dynamic arrays can already store references to managed objects. Maybe the only problem is again in AGS compiler not being smart enough to support the syntax.

Crimson Wizard

#53
Update: AGS 3.5.0 - Beta 5

ZIP file: https://github.com/adventuregamestudio/ags/releases/download/v.3.5.0.14/AGS-3.5.0-Beta5.zip
Linux pack for the editor: https://github.com/adventuregamestudio/ags/releases/download/v.3.5.0.14/AGS.3.5.0.14.Editor.Linux.Pack.zip

Changes since Beta 4:

Editor:
- Added ImportAlphaChannel import setting to sprites
- Fixed crash and corruption of project data when writing to full disk.

Script API:
- Allowed to change Mouse.ControlEnabled property value at runtime.
- Added Game.SimulateKeyPress().

Engine:
- Added stubs for SpriteFont plugin.
- Added missing stubs for agswadjetutil plugin.
- Fixed fade-in effect for software renderer (regression in 3.5.0).
- Fixed Dictionary.Get() return value causing errors in script.

eri0o

Used this version during all day and had no problems with it!  :-D

Monsieur OUXX

Quote from: Crimson Wizard on Sun 16/06/2019 19:37:17
PS. I wonder why there's no arrays of arrays in AGS though. From the engine's perspective there should not be any restriction, because dynamic arrays are managed objects, and dynamic arrays can already store references to managed objects. Maybe the only problem is again in AGS compiler not being smart enough to support the syntax.

You suggested that in the past and I started looking into it, but I wasn't good enough to tweak the engine/editor code and make it work.

But really, all we need is a copy and paste of the "Set" object, called "Array", storing int, with basic functions like "Add", "Remove", "SetAt", "GetAt". The difference with a scripted struct being that you can pass pointers to these Arrays and store then in an array.
 

Laura Hunt

The improvements in this version look amazing and I'm very tempted to start my new game directly on 3.5.0, especially because of the new viewport and camera.

However, I wanted to ask first if the new functions/commands/properties/whatnot are already documented in the help file/manual? For example, I read "If you set camera's size twice as big than the viewport...". How do you "set the camera size"? Is that what Game.Camera.X and Game.Camera.Y do? Can I find a list of these somewhere? (apart from the small table of equivalences between the old viewport and the new camera that CW posted).

Crimson Wizard

#57
Quote from: notarobotyet on Mon 17/06/2019 10:09:33
However, I wanted to ask first if the new functions/commands/properties/whatnot are already documented in the help file/manual?

These are not in the manual file yet.

Quote from: notarobotyet on Mon 17/06/2019 10:09:33
For example, I read "If you set camera's size twice as big than the viewport...". How do you "set the camera size"? Is that what Game.Camera.X and Game.Camera.Y do?

No, it's Camera.Width and Camera.Height, as well as Viewport.Width and Viewport.Height.

Laura Hunt

Thank you CW! I might wait a bit then until everything is properly documented, given that I'm still pretty much a total newb :)


SMF spam blocked by CleanTalk