A recent tweet on my timeline had me thinking about games and game engines, which surprised me, because it used to be an often discussed topic, but it seems like with the rise of Unity, Unreal, Godot, etc. the topic has dwindled or maybe the internet is just filled with all the same responses.
Of course the callout many of you might have already heard in your head is “Write Games not Engines”, which is of course is the title of the all-time classic post. The primary point being, that creating engines in a vacuum generally won’t lead to (re-)usable code and most of the time, no games will be made with it. Building games on the other side will slowly over time accumulate reusable functionalities, with proven usefulness.
At a first glace the tweet seems to be in conflict with the mentioned post, but I think there’s truth on both sides and the key to all of this is: the motivation of the creator.
Creating a game is quite the undertaking. You need to create the code that runs the game (even with an ready-made engine), you need to create or commission the graphics, music and sound for the game. Then everything needs to crafted into a story and not to forget the most important thing: the game has to be fun. Having to tie this all together into a neat package, requires skills on many levels and a certain vision and understanding what makes something “fun”. Lots of these skills can be learned one step at a time, by starting small, failing at some and succeeding at other things. If you know, where you want your game to be headed, you can pay others to help you create assets, levels, and more; so one doesn’t have to be a jack of all trades.
On the other side, you have the developer, the person who loves solving difficult problems and puzzles, and maybe even enjoys creating such puzzles. They’re told that it’s called “game development“, so it has their title in the job description. At the same time, they might not actually know how to make something “fun” or have a clear vision of how things should look like, they instead might see “the matrix” and all the technical bits and pieces that make a game run.
As you can see from my two made up personas, it’s plausible that, those who want to actually make games are better off hacking something together, because they have the vision to lead them. While the developer at heart may actually just have the technical feats as their primary goal, even if they don’t know it (yet).
So I personally disagree with the post that writing an engine is always a “waste of time”, because you can learn a lot about code architecture and if that’s truly your end goal, who am I to say that enjoying oneself is wasted time?
…yet, I still think you can learn even more, in general coding and architecture, by actually writing games. By experiencing why your dreamed up design needs to be broken for things to work in practice, and then spending time trying to reconcile this breakage with a better design. Even if you end up with only some tech demos with programmer art, you will walk away with more, than having a fancy ECS with zero usages.