That's exactly my opinion. Nothing entirely new, just make the same only better.
Look in really basic terms, the AGS engine in it's current state is something like this:
Code: ags
(every letter + number stands for a feature/sub-feature of AGS)
while at best (with a rewrite) it should be like this:
Code: ags
You see, the old and the new engine all have the same features. The outputted game and the editor will stay the same. However, if you want to add a new feature or fix a bug in the current version, you have to take into account lots of actually unrelated features and be very cautious to not break anything else.
The new more modular (interfaces + implementations) approach, clearly has all features separated (as far as possible). And then the implementations/sub-features only know about their parent feature. If you know there's a bug in B, you can be sure that nothing in A or C breaks if you fix it. The same applies to adding a new feature to C. Features A and B will be totally untouched.
An example of a feature could be the renderer, the scripting language, the interpreter, the audio part etc.
Allegro 5 would fit perfectly as an implementation of the core-feature layer.
Look in really basic terms, the AGS engine in it's current state is something like this:
A1C1B2A2
B1D3A3C3
D1C2
...
(every letter + number stands for a feature/sub-feature of AGS)
while at best (with a rewrite) it should be like this:
A
A1, A2, A3
B
B1, B2
C
C1, C2, C3, C4
...
You see, the old and the new engine all have the same features. The outputted game and the editor will stay the same. However, if you want to add a new feature or fix a bug in the current version, you have to take into account lots of actually unrelated features and be very cautious to not break anything else.
The new more modular (interfaces + implementations) approach, clearly has all features separated (as far as possible). And then the implementations/sub-features only know about their parent feature. If you know there's a bug in B, you can be sure that nothing in A or C breaks if you fix it. The same applies to adding a new feature to C. Features A and B will be totally untouched.
An example of a feature could be the renderer, the scripting language, the interpreter, the audio part etc.
Allegro 5 would fit perfectly as an implementation of the core-feature layer.