Should you make your own game engine?

Spoilers: probably not!

When I started making games, I spent an approximate eternity researching the right tools to use. I knew I wanted to make games for Windows, since it’s the platform I play on, but even under that umbrella there are a staggering number of options.

Kill me meow

In this article, I‘ll start by reviewing what a game engine actually is, and whether or not it makes sense for you to build your own. In future articles I plan to discuss the pros and cons of some game development tools — both proprietary engines and frameworks for making your own — and share a bit about my personal experience with each.

Disclaimer time: I am not a game development expert — I have published exactly zero games, though I must have made a hundred plus awful, broken game prototypes. I am, however, totally neurotic when it comes to making any kind of long term decision—and choosing the right development tool can be a years-long commitment. I wasted countless hours of my life (like five whole hours) obsessing over these choices, so you don’t have to! Now I’ve set your expectations appropriately low, let’s jam.

Let’s do it

What the dang hell is a game engine anyway?

There are two ways of thinking about game engines, and which definition you subscribe to will likely determine whether you should attempt to make one from scratch, or use one of the many commercial engines on the market.

Game engines are tools

In the case of general purpose engines like Unreal, Unity, or CryEngine, the engine is essentially a collection of tools that go beyond a simple programming language, which, taken together, can seriously speed up the process of making a game. The specific toolset varies widely between engines, but usually includes things like a level/scene editor, a content pipeline to handle art and sound, and a suite of tools to handle common problems like collision detection, spritesheet animation, etc. Many of these engines were born out of a particular game during its development — Crysis begat CryEngine; Unreal begat Unreal Engine.

Crysis: the game that launched a thousand benchmarks

The devs behind these game realized they could sell both their games to consumers, and their tools to other studios, hugely elevating their return on investment. Other companies, like Ubisoft and EA, create general purpose game engines for internal use only— they reuse the tools they’ve built between games, dramatically cutting down the cost of each successive title.

If you want to learn more about game engines as tools, I recommend checking out this excellent video by TheHappieCat.

Game engines are games

In days of yore, before the rise of general purpose engines, games were created largely without middleware, coded directly from graphics APIs.

“In those days spirits were brave, the stakes were high, men were real men, women were real women, and small furry creatures from Alpha Centauri were real small furry creatures from Alpha Centauri” — Douglas Adams

Developers didn’t start by fussing around with tools, they just started building the game, and the tools and subsystems that grew out of its development formed the engine. These systems were sometimes reused in later projects, but just as often they weren’t. And that’s okay; unless you’re making the same game over and over (looking at you, Ubisoft/Warner Bros/Activison/okay I guess it’s every AAA studio), the needs of each project will be very different.

If you want to learn more about this philosophy, check out the classic post Write Games, Not Engines.

So, should I make my own engine or not?

Making a game engine from scratch is not for the faint of heart, and if you’re not an experienced programmer you probably shouldn’t attempt it. If you are an experienced programmer… then you still probably shouldn’t attempt it. Not that it’s unachievable — it just might be a huge waste of time. Consider your goals for the project:

If you want to create and publish a game as quickly as possible, whether for profit or as a portfolio project, then you should almost certainly use a proprietary engine. The tools they provide can cut down on development time enormously, and streamline many of the more complicated aspects of graphics programming. The (rare) exception to this rule would be if your game has specific performance requirements beyond the scope/capabilities of a general-purpose engine.

OK but where’s the menu that let’s me ruin my game with pre-order bonuses & microtransactions?

If your goal is to build your skills as a programmer and deepen your understanding of underlying game architecture, then making your own engine can be extremely rewarding. Also, if you have the extra time and skill necessary, there can be practical benefits to rolling your own engine. You’ll control the game logic at every level — nothing will be obfuscated, or black-boxed, as it is in many commercial engines. You won’t have to worry about licensing, revenue sharing, or extra per-platform costs. There won’t be any question as to whether your engine will still be supported a couple years down the line. Finally, it can be a lot easier to identify bugs and performance issues when you’ve built everything yourself. This is, of course, assuming you make your engine well… a poorly designed, inefficient engine might not run Pong at a stable frame-rate.

Zero FPS :(

Hopefully that answers some of your questions about game engines — if not, let me know in the comments!

Mo works at Microsoft, writing API documentation for Windows app developers. He spends his free time making awful videogames, terrible music, and boring articles like this one. (He whistle pretty good tho.)