Game Career Guide is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Get the latest Education e-news
 
  • How To Make Your Own Game Engine (And Why)

    [12.23.21]
    - Tyler Glaiel
  • (this article is reposted from my Medium blog)

    So you're thinking about making your own game engine. Great! There's lots of reasons to want to make one yourself instead of using a commercial one like Unity or Unreal. In this post I will go over why you might want to, what systems are needed in a game engine, and how you should approach development of it. I won't be going into any deep technical details here, this is about why and how to develop a game engine, not a tutorial for how to write the code.

    Why?

    Lets start with the absolute first question you should be asking yourself if you want to make your own game engine: Why?

    Here's a few good reasons why you might want to:

    • Novel Tech: You want to make a game that uses a piece of novel tech that no other engines out there currently support, or can't be easily made to support in their current state. This can mean some kind of massive-scale simulation that requires some to-the-metal coding to make performant (Factorio) or some custom thing that doesn't fit into any existing molds (NoitaMiegakure), or wishing to target an odd piece of hardware that current engines don't support (Playdate), or any number of other things really. It's a good reason to make your own engine, cause there isn't any other option in cases like this.
    • Specialization: You want to optimize your workflow for the kind of games you make. You don't need all the features included in a commercial game engine, and you can make your asset pipeline / level editor / whatever way smoother to use when considering your specific use cases instead of needing it to be general purpose. Specialization is almost a requirement of making your own engine, if you aren't specializing it and catering it towards your exact use case, you should rethink why you're making an engine in the first place.
    • Independence: You don't want to be dependent on someone else's technology in the long term. The incentives and values of a company like Unity or Epic are not always going to align with your own, and you want control over your own tech, the ability to fix bugs yourself instead of "waiting and hoping", and comfort knowing that an update won't completely break your current project. You are willing to eat the cost of developing your own tech, because in the long run its good to not have to constantly change stuff depending on the whims of giant companies.
    • Curiosity/Learning: You're just curious about how it works and why other engines have made certain decisions they did. This is a great reason, one of the best reasons actually, to make your own game engine.

    Also while I'm making lists, here's a couple of bad reasons for why you would want to make your own game engine. If any of these are your (only) motivation, you should back up and reconsider:

    • I can do it better: You think you can just make something better than Unity or Unreal (or Godot or GameMaker) in general. You can't. It's possible to make something that is better than these for specific use cases (see: Specialization above), but you, as an individual or a tiny team, are not going to compete with these for general purpose stuff. Especially if you have never made your own game engine before.
    • It's the what real programmers do: There is no "right way" to make a game, you don't win programmer points for making your own engine. If your game is a good fit for an existing engine (and I'd argue like, 99% of games are), there's no shame in using one. After all, a game engine is simply a tool for which to make a game, its not and should never be the goal by itself. The games you make with it are all that matters.
    • Saving Money/Time: You most likely won't. Making an engine takes time, and time=money. Unity's cost is negligible compared to the time it takes to make your own tech. Unreal's rev share is negligible unless you're selling 10 million copies of a AAA game. Using your own engine won't make you sell more copies of your game automatically. And while you *can* save time in the long run, this usually means having your engine be good enough to carry you across multiple projects, while also providing you with significant workflow improvements compared to commercial engines. It's not easy to get this right, and you definitely won't if its your first try at it (and extremely unlikely if you're doing 3D instead of 2D).

    Also, you should absolutely consider your own experience and goals when weighing all of this. If you don't have a lot of experience making games, you will have a much harder time making an engine (and you should definitely go get some game making experience before trying to make an engine anyway). If you want to do 3D, you will have a much harder time than just doing 2D.

    For me, the motivations to making my own engine are mostly about novel tech and specialization. I come from a flash game background, having made quite a lot of them in the mid/late 00s, and its a workflow I am really comfortable with and enjoy. None of the existing engines out there supported importing flash animations, so my only option was to do it myself. It's extremely nice to just be able to plop .swf files into my resources folder and instantly have the animations available for use in my game code, without needing any middle steps to export them to sprite sheets or whatever.

    These aren't the only reasons why you'd want to make your own game engine. There's a ton of advantages (and disadvantages) to it, and whether or not the pros outweigh the cons depends a whole lot on how much experience you have with both game dev in general and lower level coding. Like, it's nice to just have your own tech, and its nice to not have to constantly google for tutorials that might be outdated for how to do something in your engine. It's nice to be able to actually debug the internals of your game if something goes wrong. But it can also suck if you made a couple of bad design choices and everything falls apart entirely, and there's no resources online to help you. You have full control and full responsibility, and all the pros and cons that come with that.

Comments

comments powered by Disqus