I might as well come forward too...
I'm also "secretly" working on a rewrite, my secret project is actually out in the open for a long time, and I've recently asked CW to join me (and if any other developer wants to join, yes! Please let me know).
You can see my progress on
Github.
My approach is similar to Snarky's suggestion, it's a complete redesign (I'm ticking almost all of the boxes in his list, and planned to tick them all before first release).
The engine is written with c#, the scripting language is also c#, and the editor (there is no editor currently, but there will be) will also be in c#, so hopefully having one language to rule them all will make it easier for developers to contribute.
Regarding the API: I tried to keep some level of familiarity with AGS's API and workflow (so I still have Object, Character and Room) but did change stuff where I saw an opportunity for better concepts (Views are out, Outfits are in, so this is more in line with Visionaire).
Currently the engine is working on Windows, Mac and Android, I'm working on the IOS port and will move on to Linux next, and after that will start working on the editor.
For the engine I'm using an entity-component based system, similar to unity, and I have Object, Character and various GUIs as pre-set entities with all the components you'd expect, so you would normally not need to touch the components (so the workflow will be similar to AGS), but you'd be able to add/remove components if you want specific behaviors. So for example, if you decide mid-game that you want your object to talk, you don't need to replace it with a character (or add a dummy character), you can just add a "talk" component to your object and you're good to go. And as GUIs are also entities with components just like objects, you can even turn your character to a button mid-game if you have some crazy mini-game idea.
Another highlight of the engine is it's built to be customizable from the bottom up. There's a hooking system which you can use to replace even the most basic systems (you don't like the built-in path finding? No problem, code your own and switch).
Also, The API is built heavily on c# async/await, which should make it easier to program actions happening in parallel.
Here's an example from the demo:
When you look at the window, the camera will zoom in, rotate and move (all with asynchronous tweens), at the same time, followed by the character saying "there's nobody home", and then the camera will tween back to its original position:
private async Task lookOnWindow(object sender, AGSEventArgs args)
{
_room.Viewport.Camera.Enabled = false;
float scaleX = _room.Viewport.ScaleX;
float scaleY = _room.Viewport.ScaleY;
float angle = _room.Viewport.Angle;
float x = _room.Viewport.X;
float y = _room.Viewport.Y;
Tween zoomX = _room.Viewport.TweenScaleX(4f, 2f);
Tween zoomY = _room.Viewport.TweenScaleY(4f, 2f);
Task rotate = _room.Viewport.TweenAngle(0.1f, 1f, Ease.QuadOut).Task.
ContinueWith(t => _room.Viewport.TweenAngle(angle, 1f, Ease.QuadIn).Task);
Tween translateX = _room.Viewport.TweenX(240f, 2f);
Tween translateY = _room.Viewport.TweenY(100f, 2f);
await Task.WhenAll(zoomX.Task, zoomY.Task, rotate, translateX.Task, translateY.Task);
await Task.Delay(100);
await _player.SayAsync("Hmmm, nobody seems to be home...");
await Task.Delay(100);
zoomX = _room.Viewport.TweenScaleX(scaleX, 2f);
zoomY = _room.Viewport.TweenScaleY(scaleY, 2f);
rotate = _room.Viewport.TweenAngle(0.1f, 1f, Ease.QuadIn).Task.
ContinueWith(t => _room.Viewport.TweenAngle(angle, 1f, Ease.QuadOut).Task);
translateX = _room.Viewport.TweenX(x, 2f);
translateY = _room.Viewport.TweenY(y, 2f);
await Task.WhenAll(zoomX.Task, zoomY.Task, rotate, translateX.Task, translateY.Task);
_room.Viewport.Camera.Enabled = true;
}
On top of that, the engine supports custom shaders, object compositions, independent resolution, parallax and more.