Adventure Game Studio

AGS Development => Editor Development => Topic started by: Crimson Wizard on Thu 26/11/2020 02:27:20

Title: [NOTIFICATION] AGS version branch split
Post by: Crimson Wizard on Thu 26/11/2020 02:27:20
That became apparent long time ago that developing AGS further becomes difficult while keeping the "luggage" of old functionality, which was mostly kept for running old games and easier project upgrade.
So this is overdue, and we are planning to introduce a "break" in the versions, where the updates are split into two "branches". We currently call these branches "ags3" and "ags4", but these are informal names, and may be given proper names later.

"ags3" is going to be a fully backward compatible version, based on the latest AGS 3.5.0. From now on it will only receive bug fixes, perfomance and utility updates. There will be no new script functions or game features whatsoever.
There's at least one planned update currently, which number will probably be AGS 3.6.0, and its main feature will be change from "Allegro 4" to SDL2 library. AGS used "Allegro 4" for nearly two decades, but it's discontinued, and often not very well suited for the contemporary OSes. As this change comes with new potential problems, there may be lesser updates in the middle (like 3.5.1 etc) when necessary, until SDL2 update works well enough to be officially released.

"ags4" will be a breaking change version, also based on AGS 3.5.0, but having all the deprecated functions cut off. It may also have other things removed, such as certain plugin functions support which are not convenient to keep. This will be the main branch to develop AGS further. It will also be updated to SDL2 library.
It's not known at the moment how it will be developed, there are several priority tasks, but it mostly depends on how much time contributors can spare, so it's too early to talk about any new features.
We do not yet know what number will this version use, but probably we'll skip couple of them to reserve for "ags3" branch, so somewhere in the range of AGS 3.7.0 - 3.9.0.


Related short-term roadmap ticket on github: https://github.com/adventuregamestudio/ags/issues/1121
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Snarky on Thu 26/11/2020 15:44:47
Quote from: Crimson Wizard on Thu 26/11/2020 02:27:20
ags4
We do not yet know what number will this version use, but probably we'll skip couple of them to reserve for "ags3" branch, so somewhere in the range of AGS 3.7.0 - 3.9.0.

Wouldn't it be best to just make it AGS 4.0.0?

Some arguments in favor:
I'm guessing the reason you resist incrementing the main version number is that this is not the kind of fundamental revision of the engine you've had in mind for AGS 4.0.
I have a simple solution for that: AGS 5.0.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: ChamberOfFear on Thu 26/11/2020 16:03:42
I concur with Snarky
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Cassiebsg on Thu 26/11/2020 16:05:19
I agree with Snarky. Just call it 4.  :)
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Danvzare on Thu 26/11/2020 17:53:37
Yeah, just call it 4.
Sure the interface isn't getting an overhaul or anything, but it sounds like it's going to be enough of a departure to warrant the name change.
Besides, the informal naming scheme already suggests that most people see it as being a 4 anyway.

Also, what effect will switching from Allegro 4 to SDL2 have?
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Joseph DiPerla on Fri 27/11/2020 05:24:15
I "Believe" SDL has

*better OS Portability support
*is used more widely therefore can encourage more contributors
*is used by SCUMMVM
*is an easier library to implement and work with than Allegro.
*has faster 2D Blitting
*integrates better with other libraries
*I also "believe" SDL has better 3D routines.

This is just some of what I understand of SDL and I could be wrong about it all.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Crimson Wizard on Fri 27/11/2020 11:45:53
I forgot to mention that we are also completely rewriting audio code to use OpenAL implementation based on SDL2.

Quote from: Danvzare on Thu 26/11/2020 17:53:37
Also, what effect will switching from Allegro 4 to SDL2 have?

Do you mean effect on users or effect on development?

The primary reasons for changing libraries were:
* better modern OS support,
* better device support (e.g. Allegro 4 did not have any native touchscreen support, and SDL2 does),
* because Allegro 4 is long discontinued we are stuck with ancient utility libraries based on Allegro 4, or have to write our own.

We still are going to use parts of Allegro 4 embedded into the engine, because SDL2 did not have alternative for everything (Allegro is just a more wholesome library), that's easier approach at the moment.
Raw bitmaps and drawing functions are prime example, as SDL2 has only rudimentary support for that (it's more focused on texture-based gfx).
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Joseph DiPerla on Wed 02/12/2020 04:58:46
I saw in the GIT Discussions that you are also rewriting the script compiler in c++. Was this originally part of the editor in C#? What is the benefit of the rewrite? BTW, nice job on that rewrite. I had been following along and it seems like a lot of work went into it with everyone involved.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Crimson Wizard on Wed 02/12/2020 05:36:26
Quote from: Joseph DiPerla on Wed 02/12/2020 04:58:46
I saw in the GIT Discussions that you are also rewriting the script compiler in c++. Was this originally part of the editor in C#? What is the benefit of the rewrite? BTW, nice job on that rewrite. I had been following along and it seems like a lot of work went into it with everyone involved.

fernewelten did the rewrite on his own initiative. Script compiler was originally written in C and is now C++. The main reason for rewrite was to have a cleaner code, because old compiler is very difficult to read and understand, let alone improve.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Joseph DiPerla on Wed 02/12/2020 12:52:11
Gotcha. I think I was thinking of AGS.Native.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Snarky on Wed 02/12/2020 13:52:02
This is going a bit off-topic, but following some of the github discussions, I've seen claims that the rewritesâ€"both of the compiler and the backend switch from Allegro to SDL, I believeâ€"have led to worse performance. Is that correct, and if so, has it been addressed?

AGS already does not have great performance, so I would be nervous about an upgrade that degraded it further.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: eri0o on Wed 02/12/2020 14:14:46
It may have slightly worse if you are using the Software driver but honestly no one should ever. I can manipulate 3k overlays at 1440p on the OpenGL driver at 60fps.

If the game ran fine performance wise on my browser experiment, than you can expect it to run infinitely better native on your computer since that have debug stuff going on so I can read errors on the console. And is single thread and it's my hacky codebase...

In the end I expect things to have small problems in the short term and to getter better later - there's a good amount of TO-DOs and not much people to write some of the code, like, a Metal renderer would be a nice to have for MacOS - mentioning this because MacOS has dropped OpenGL support - iOS still does have OpenGL ES2 available.

Overall there wasn't many people using Allegro4 in 2020 but there are more people using SDL2 today, so I expect this lowers the platform specific problems that have been happening and needing attention to allow to have more time to concentrate in other parts of the Engine. It's also one less barrier of entry for people that want to starting looking into AGS codebase now and make contributions to it since there is a lot more written on SDL2 too.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: Crimson Wizard on Wed 02/12/2020 15:53:23
Quote from: Snarky on Wed 02/12/2020 13:52:02
This is going a bit off-topic, but following some of the github discussions, I've seen claims that the rewritesâ€"both of the compiler and the backend switch from Allegro to SDL, I believeâ€"have led to worse performance. Is that correct, and if so, has it been addressed?

AGS already does not have great performance, so I would be nervous about an upgrade that degraded it further.

Where was the claim that compiler rewrite led to worse perfomance? I haven't seen such comment. There will be a switch in the editor for the first time, that toggles between old and new compiler.
Someone might do a perfomance test on a big complex script.

There was a notion that Software renderer has worse perfomance for non-32bit games, and I have suggestions why, but I haven't seen it myself only heard 1 person talking about it. The new software renderer is working about same way as it worked in mobile ports since the beginning (Android, iOS), but maybe there's some mistake or unnecessary operation that affects the speed. I did not address that yet because just finished the work on the port branch itself and did not have time to investigate.

There were also a problem that sound plays too loud in some games, and in one game I tested sound did not play correctly at all. Other games seem to run alright.

The SDL port is still a WIP, it's located in the wip code branch in the repository, and requires testing most of all.

Quote from: eri0o on Wed 02/12/2020 14:14:46
It may have slightly worse if you are using the Software driver but honestly no one should ever.

At the moment Software renderer is the only way to run properly 8-bit games with palette effects, as other renderers are not made to update their textures when palette change (this is doable but was not a priority).

Title: Re: [NOTIFICATION] AGS version branch split
Post by: eri0o on Wed 02/12/2020 16:20:00
Ah, I don't have the reported worse performance on software renderer or at least I haven't noticed it :/
Title: Re: [NOTIFICATION] AGS version branch split
Post by: fernewelten on Mon 22/02/2021 13:58:54
Quote from: Snarky on Wed 02/12/2020 13:52:02
that the rewrites […] of the compiler […] have led to worse performance.

I'm currently not aware of any situation in which the rewritten compiler emits less efficient code than the old compiler.
Title: Re: [NOTIFICATION] AGS version branch split
Post by: TripTilt on Thu 01/09/2022 16:31:02
the 4 shows the huge leap and is easier to understand for users and all in all makes more sense to be called this. I leaves enough space for updates of the 3.6 branch. I'm all for four :)
Title: Re: [NOTIFICATION] AGS version branch split
Post by: jumpjack on Thu 19/01/2023 08:23:25
Is this the only thread about AGS4? It is very old.
The only other one mentioning AGS4 is Engine & Editor V4.0 Alpha - Proposal (https://www.adventuregamestudio.co.uk/forums/index.php?topic=55251.0), and an issue on github. (https://github.com/adventuregamestudio/ags/issues/1298)

I would like to follow the ongoing discussion, if any, about new features going to be implemented  in AGS4.

I add here a link to all AGS4-tagged issues on github, for reference:

Open (https://github.com/adventuregamestudio/ags/issues?q=label%3A%22ags+4%22+is%3Aopen)
Closed (https://github.com/adventuregamestudio/ags/issues?q=label%3A%22ags+4%22+is%3Aclosed)

Title: Re: [NOTIFICATION] AGS version branch split
Post by: Crimson Wizard on Sat 27/05/2023 20:52:40
Quote from: jumpjack on Thu 19/01/2023 08:23:25Is this the only thread about AGS4? It is very old.
The only other one mentioning AGS4 is Engine & Editor V4.0 Alpha - Proposal (https://www.adventuregamestudio.co.uk/forums/index.php?topic=55251.0), and an issue on github. (https://github.com/adventuregamestudio/ags/issues/1298)

I would like to follow the ongoing discussion, if any, about new features going to be implemented  in AGS4.

I add here a link to all AGS4-tagged issues on github, for reference:

Open (https://github.com/adventuregamestudio/ags/issues?q=label%3A%22ags+4%22+is%3Aopen)
Closed (https://github.com/adventuregamestudio/ags/issues?q=label%3A%22ags+4%22+is%3Aclosed)



Yes, as ags4 branch gets more new major features, we should probably open a proper forum thread, explaining priority goals and current state.

The mentioned github issue "AGS 4.0.0 Milestone proposal" (https://github.com/adventuregamestudio/ags/issues/1298) is probably most up-to-date ticket with goals.

The changelog describing new features may always be found here: https://github.com/adventuregamestudio/ags/blob/ags4/Changes.txt

The downloads may be found on our build server, if you find the latest entry mentioning "ags4" branch:
https://cirrus-ci.com/github/adventuregamestudio/ags/ags4

It's worth mentioning that the idea of what "AGS 4" is have changed over time. Originally (number of years ago) I had thoughts about more major overwrite there, but as time went, it became clear that we don't have enough workforce to handle any kind of overhaul. So currently the idea is to implement major changes in smaller steps, and allow to break backwards compatibility whenever it gets in the way.

The principle about compatibility is to guarantee support only for importing the latest 3.* project format (3.6.0 currently), but don't guarantee running games compiled with latest 3.*. In other words, AGS 4 should be able to transfer the 3.6.0 project, but earlier projects will have to be upgraded to 3.6.0 first.