Bit late to this thread but there's a frightening amount in it that's directly related to what I've been working on, especially in the last six months. It seems like there's a lot of common ground between MonoAGS and XAGE, so thought I'd chip in. I tend to neglect my development blog, so apologies for linking to so many individual tweets:
OpenTK: Not sure I'd recommend this as the back end. MonoGame previously used it but instead switched to SDL2, at least for the desktop platforms (following in FNA's footsteps) as it is better supported and more actively developed. That's my layman understanding anyway.
ProtoBuild: I stopped using this due to lack of .NET core support. It's planned but I didn't want to wait. Besides, the new .csproj options, where items are included by default, somewhat negates the need for protobuild as it's fairly trivial to automatically create the .sln and .csproj files you need.
C#: XAGE automatically creates and updates a bunch of back end base classes - some are static wrappers to the engine via an interface and the rest are dynamically created based on the game project. The Editor can then automatically create or jump to the C# methods that act as your game events. I've illustrated this process via a clunky .gif
here. There are some workarounds under the hood as C# script is somewhat stricter than AGSScript, but from an end-user point of view it
can feel pretty familiar to AGS depending on your engine API.
.NET Core: The introduction of .NET Standard 2.0 massively improved the core landscape. Ethan Lee's MonoKickstart bundler for Linux & Mac seemed to work fine, but getting mono to play nicely with mkbundle, to create standalone executables, was a nightmare. Eliminating Mono is nice and being able to use
dotnet publish seems to work pretty well.
IDEs: Seems strange for anyone to get hung up on Visual Studio, given the Community Edition is free for small teams and hobbyists. As per above, you can create an interface between an editor and Visual Studio without too much work. Maybe it's because the minimum download size is large. There are also other IDEs that are compatible with .NET Core, as mentioned,
Visual Studio Code which is also cross platform.
Protobuf: Good choice - it is very good for engine game state serialization. Much faster than everything else I've tried. Here's an
old comparison with XML.
Dear ImGui: Second the vote for this - it's extremely easy to use. I recently plugged this into the
debug build of XAGE. There's a nice C# wrapper
here that is MonoGame and FNA friendly.
AGS.Plugin.ExportToXAGE.dll Recently I was kindly given the source to an AGS game that uses runtime plugins, the first time I've encountered this. As a result, I've been making some recent changes to this editor plugin. The code in the original thread is quite old. I could provide a more recent version, though it's a bit messy as it uses remote links to classes in other projects.