I’ve been having this idea for a while now… I wonder if we could make an open source, community-driven, plugin-based editor for MonoGame.
The core would contain the bare minimum and everything else would be done through plugins (that can have dependencies on each other). It would be really cool if it could run using MonoGame itself and a very lightweight, but expandable GUI lib (window handling and docking should be handled).
The goal of the editor IMO should mostly be for authoring content and speeding up your workflow to keep things code-first (that’s what draws most people to MG anyway), but the plugin architecture shouldn’t limit you to that. I imagine a couple of different plugin types. A nice thing to have would be a plugin for embedding a Game and running it from the editor (could be extended with dynamic content reloading and stuff). We’d have to get some fixes into MonoGame for this, but I have a fair idea of what needs to happen Secondly we would need some simple plugins to make plugin development easier like a simple text editor, a node editor GUI extension etc. These should be very modular and focus on very specific things. This is probably the most important part to get right, a base set of useful tools will draw people to use the editor for making their authoring tools and likely contribute reusable stuff back to the editor afterwards.
Using those base tools we could build stuff for authoring content like a texture generation system, a live shader editor using e.g. MGShaderEditor and the great HLSL Tools by tgjones (or even node-based shader generation), a game state machine that can generate skeleton code, a GUI system and more specific stuff for certain game genres e.g. questing system for RPGs or level designers. Then there’d be more engine based stuff like a full rendering pipeline.
There is a lot of open source stuff built on MonoGame with permissive licenses and we could build on all this greatness we already have for MonoGame and bring it together a bit. Thinking about Nez, MG.Extended, DigitalRune, ProtoGame, your rendering engine and less extensive but very useful tools/libs like Penumbra, MGShaderEditor, QuakeConsole, SadConsole. And beyond that there’s surely a whole bunch of cool tools and libs that are not as exposed as the aforementioned.
Some of the high-level goals of this plan are
- Bring together the fragmented utilities that people have built on MonoGame.
- Expose lesser known, but useful tools to the community.
- Incentivize the creation of new tools and contribution of them to the community.
- Make it easier to get started with MonoGame and increase flexibility in how you want to develop your game. A subgoal of this is to draw more people to the framework.
While I’m slightly skeptical if we can actually pull this off, I think about it occasionally and always get really excited so I’d definitely be up for trying! It would be a nice experiment in any case