This is an outline of what I'm looking for in a game engine.
-
The entire engine should be implemented as a single file library. The user of the engine should be able to download the source file, add it to their source tree, and go.
-
The engine needs to have a simple build system. You should be able to compile the engine with something like
gcc my_game.c -o my_game -lpthread -lm -ldl, and on Windowsgcc my_game.c -o my_game.exe. Only libraries that come standard with the compiler should be allowed. The engine should also be built in C89 so it Just Works across all compilers. -
The engine should not have any external dependencies (see point above). That means no SDL, no GLFW, etc. Everything must be contained within that one source file. A dependency on another library is fine, but it must be internal - that is, it must be amalgamated into the main file, and it must have a compatible license. Amalgamated libraries cannot be licensed with anything that requires reproduction of the license in binary form, which includes MIT (yes - MIT does not distinguish between source code and binary form).
-
The engine needs to be licensed as public domain with the option for a proper license for regions that don't recognize public domain. The alternative license I use for my other projects is MIT-0, which is basically MIT, but without the requirement for attribution.
-
Tools need to be included, and built in to the main library. It needs to be possible to have a game running, and then call an API to launch editing tools right there inside the game window, essentially as an overlay. Tools need to include a standard scene editor, material editor, asset previewing, scripting editors, etc.
-
Asset pipeline tools need to exist. I would probably use glTF as the primary asset interchange format, but FBX could possibly also be supported. Simple formats like OBJ can probably be supported too. The user needs to be able to export straight from Blender and have their assets Just Work in-engine without needing to assign materials and whatnot.
-
It should support both standard scripting and visual scripting, a PBR rendering pipeline, physics (rigid body at a minimum), 3D audio, and all the other standard stuff you'd expect in a game engine.
That's the gist of it. Obviously there are other more specific requirements, but these are the main things. And I know what you're thinking - all of this in one source file? I must be crazy. Yes, I am, but anything worth doing is hard.
I'd be happy enough to skip the FBX stuff if glTF is well enough supported, which I suspect it is. Having said that I don't have any experience with the big commercial products, just Blender, so maybe that assertion is wrong.