Many indie game developers will reach for Unity, Unreal, or Godot when starting a new project. These battle-proven game engines are likely the right choice. For me, after years of using Unity, I wanted to do something different. I decided to push myself and write a game from scratch. It took longer than expected but I learned a ton and it renewed my interest in game development.
My primary motivations to write Impaler in C:
- I was tired of building in Unity
- I wanted to learn more about the internals of game engines
- I wanted the game to run flawlessly on the Steam Deck
- I wanted the game to look and feel unique
Thoughts on Proprietary Engines
Games built on proprietary engines are increasingly rare today. It is estimated that fewer than 20% of games launched in 2021 were using in-house tech. Overall, this is a good thing. This means developers are focused on creating a good game experience vs implementing low level systems. The majority of projects should be approached this way. That being said, I’m always excited to play a game that was built from scratch – I enjoy seeing what tradeoffs & innovations developers make. In my opinion, games built on proprietary engines are often more unique.
Exceptional games with proprietary engines
Factorio (2016) supports a staggering number of units, buildings, systems that interact in real-time.
Journey (2012) has a distinct visual style and is considered one of the most unique games of all time.
There are examples of games that should not have been built on in-house tech too. Cyberpunk 2077 was delayed multiple times, plagued with performance issues, and shipped with game-breaking bugs. The developer has recently switched to Unreal – this suggests the engine may have contributed to Cyberpunk’s challenges. There are risks in building on a bespoke engine.
I learned hard lessons building Impaler too. When I pitched Impaler to publishers, I shipped a preview build with a sinister bug. The bug made the game run in slow motion and it appeared like the game had extremely poor performance. In reality, it turned out to be an issue with the game clock and handling of laptops with power saving features. Naturally, it did not reveal itself on my own machine. This almost killed my chances of securing a publishing partner. “writing it yourself” comes with risks.
Background on Unity
Unity is a mature game engine with indie-friendly licensing and a massive community. It uses a modern language (C#) and has everything you need to build a game. Anything that isn’t provided out-of-the-box can be found on the asset store or GitHub. The available tutorials, free add-ons, and open source projects are incredible. On top of that, you