I started writing my first engine probably three years after I started game programming. The idea of having a reusable toolkit to speed up development of games sounded very intriguing and eventually evolved to a feeling of “stacking technical whealth”, almost like a form of investment.
That engine I called “Very Simple Game Engine 2D [VSGE2D]” and I gave up after I had basic WASD controls to move a sprite through a tilemap to move into.
When Vhite Rabbit originally started, I started building the “Wonderland Engine”, which is probably the sole reason we never got a game out. The blender plugin that comprised our editor was a really cool way of merging asset creation with game metadata, but turned out to be a hard decision, since integrating the game runtime into blender was unnecessarily difficult and making very game-specific tools was more difficult. The facit was to split metadata from assets like every other engine does to have more control over the asset pipeline and to be able to change the assets without affecting the game metadata.
Just recently, June 2019, I started rewriting 90% of Wonderland Engine to make it a WebXR focused graphics engine for the web with a standalone editor application and WebAssembly runtime.
One of the things that is most important when building an engine in my oppinion is to be able to predict when and how decisions you make early in development will blow up. It is always surprising how every little decision (especially the non-deliberate ones) come to haunt you only months later.
That gives you an opportunity to refactor huge portions of the code, which will make it feel clean until one of the decisions start haunting you again. Every time you do one of these, you will have learnt a permanent lesson, though, which would help you build the next engine better.
Game engines are (at least in my view) very complex projects and require extreme care with their design. The result, though, is something that empowers people to an extreme degree, as in enabling a new level of fidelity or generally making development more accessible.
Building a game engine to me feels like creating the tools that allow masterpieces to be created that would not be possible otherwise.
Check out Wonderland Engine if you’re interested in the engine I’m working on.