I have a question: was there anywhere a discussion or any attempt to make a list of core features AGS engine needs? I do not mean suggestions like new script function or different editor look, but more general ones?
This is too early for actual implementation, but it would be probably nice to begin composing such list for future reference. I believe that is actually important, since adding random features without having principal direction in mind would eventually clutter both engine and editor.
I would list some here to show an example of what I am talking about.
1. I'll start with something ProgZmax mentioned in other thread:
Reformatting game saves so that they continue functioning after game re-compiles, patches, and work regardless of resolution.
In fact that isn't only about savegames. Literally
everything in AGS is being serialized in such a way that it would be impossible to change a data structure (like add new variable) without breaking compatibility with the game made in previous version, let alone saved game.
Thus, I believe, primary concern should be to change the way ASG writes and reads data (game data and in-game saves) and make each data struct (or at least each main data struct) to detect what is the version and/or format of data it is loading and store it appropriately, with corresponding conversion if needed.
2. Removing static limits.
AGS uses static-size arrays for many things, and there's practically no more real sense in that. I don't mean these limits aren't enough, I mean there's no need in them since we may use dynamic arrays (classes), so that no one would ever bump into such limit.
3. Class system.
This is not only about rewriting existing sets of global functions and variables into classes (Character, Room, Hotspot, etc). There could be things that are better managed by classes to provide extensibility.
Think of Speech Style class, for instance, or Room Transition class, with possibility to add corresponding items to game project tree in the editor and customize them as you wish.
4. Engine plugin interface.
Apparently plugin system is made a bit awkwardly; there is a bunch of data structs, that mimic internal engine data structs, accompanied by commentary telling not to change anything in them (otherwise game will crash). Basically when a plugin uses IAGSEngine interface to get game data, plugin system plainly reinterprets internal data address as a pointer to corresponding plugin struct. I understand CJ had certain considerations when he was writing it this way, but if we are to improve the engine, this system should be probably enhanced as well.
Please, tell your thoughts.
PS. And can anyone please explain me at last, are there any development coordinators in charge here? Speaking of plans while there's no one to approve them is like standing at the town square yelling and hoping someone will listen
