Tribulations of Engine Development: Part 1
It’s been a little while since there’s been a blog post here. A year and a half, actually. But given the title of this particular post... I’m sure you understand why.
A few releases have happened since the last blog post: 8-bit survival horror Retro Slasher, the subject of all of my previous posts; tile-based puzzle game Graveyard Ghoul!, in which you navigate a maze-like graveyard; and holiday slasher Krampusnacht, in which you fight off the titular goat devil who seeks to punish you for your misdeeds. (All of these are currently free if you claim them before August!) There’s also been a couple of free browser games, and some game jam projects.
However, most of my time spent on gamedev since then has been wrestling with the angels (demons?) of engine development. By now, my metaphorical hip has been broken. But daylight is breaking.
See, each release, whether a browser game or a Windows application, has been made with the intention of relying on outside software as little as possible. The browser games, like arcade shooter / meme cash-in Hog Assault, or satirical working class visual novel Job Application Simulator, have made minimal use of outside libraries, mostly just for basic web design stuff or playing sounds, while the game loop was completely custom. Other games have used Monogame for playing sounds & drawing graphics. One jam game used the Monogame-based Nez engine.
I finally intend, in this blog post, to acknowledge the elephant in the room here:
Why?!
Why make a custom game engine?
It is a completely unanswerable question.
And the answer is: control.
First, controlling the features & workflow. Many of the features I need (probably all) exist in most mainstream engines. However, engines all have unique strengths & weaknesses, as well as unique priorities.
For one thing, the most high-level programming language I’d like to use is C#, and I could see myself going as low-level as C. This narrows it down a lot already. Many engines, particularly ones that prioritize 2D, tend to use high-level scripting languages. This is a great thing, and the only reason you wouldn’t want this is if you’re developing a very complex game, or just don’t prefer scripting languages. But, I fall into that second category.
Also, with a custom engine, as I come up with new ways to improve my workflow, it can be made a reality as easily as taking a couple hours & making the functionality myself. Over the last year, I went from hand-typing animation data & tilemaps into my code, to using Tiled & ASEprite to export complete level maps & animated sprite sheets. If I wanted to keep this same freedom, I would need an engine that offered everything I currently need out of the box, or one that's easy to write plugins for (or ideally, both).
Secondly, financial control. This is probably a lot more important.
I can think of some engines that meet the above criteria very well, but either cost a lot of money out of pocket, or eventually cost royalties. If you’re a big & successful studio, these costs probably make sense. But when your budget is nearly $0, it simply can’t be done.
But you might be thinking, that doesn’t rule out every engine! Some are completely free and open-source, while others have ridiculously high thresholds before royalties start to kick in. So, I must finally concede the real reason, if there is one at all:
I enjoy engine development! It’s honestly one of my favorite parts of gamedev. I think it’s incredible that every game I make is created almost entirely out of words that I typed. Monogame itself is an open-source library, so if I wanted to change anything about it, or contribute to its development, I could. Even the tools I use, like Tiled and ASEprite, export XML or JSON code files that could’ve been hand-typed with enough patience.
Games are made of code. For many people, code isn’t so much the main event (and many of them are much better game developers than I will ever be, to be certain). But that’s just the way I’ve grown to look at it.
So, have I gotten anywhere with my engine?
Yes!
I have a finished, perfectly usable game engine right now. And I’ve successfully avoided many of the pitfalls I fell into last time.
But this post is way longer than I intended it to be, so I’ll write more about that in Part 2.
- Swan
@SilentTowerGame on Twitter
Silent Tower Games on itch.io
Silent Tower Games website












