A blog post appeared on GDNet many moons ago titled “Write games, not engines”. This was before Unity, Godot and many other commonly used games engines ever existed. If you wanted to write a game, you would have to write a lot of the foundational code yourself.
Often you would use some libraries and frameworks for window management, input and very low level graphics API’s. Everything else though, you had to write yourself. Many developers ended up writing their own engines and spent a lot of time adding new features, tweaking them for performance, updating and maintaining them whilst neglecting the reason they made the engine. To write games.
The premise of the above blog post was that you should spend your time writing games and with each project, extract the re-used code and put it into your own library (or engine). Slowly over time building up an engine of your own, but only adding and refining it with each completed project.
In 2021 we are spoilt for choice when choosing an engine, frameworks and libraries. You can even buy pre-made assets in order to prototype faster or fill the void between programmer, art and music. I think we are starting to lose the notion of picking the right tool for the job, however.
For my current project, I realised it’s going to be very UI heavy. It also has a lot of procedural generated content which will be generated up front and then adapts to the world as the player interacts with it. Right there are two very clear constraints. I need an engine and framework that are both good for UI and can be extremely performant when dealing with tens-of-thousands of game objects.
Given the above I have decided to go with a mix of Godot mostly for rendering (UI) and Rust as a GDNative extension. The Rust language is designed for performance and safety, which lends itself really well to games development. My initial prototypes are going really well, with the ability to generate and populate a world with tens of thousands of characters in little under a second.
I’m looking forward to sharing more about the game mechanics soon as well as dropping some early screenshots!