Unreal Engine 5 is soon to be released with new groundbreaking features, Unity dark mode is finally free and Godot 4 plans to take over the indie gamedev community. Why as an indie dev, would you skip all of those (plus many other production-ready game engines) and build your own custom game engine in 2021?
Next, I go through some of the decision reasons of choosing between Unity / Unreal / Godot vs Custom Game Engine. Lastly, I go over the reasons why I did choose to build my own custom game engine for my game project.
When it is better to use Unity / Unreal / Godot?
- The game will be a cross-platform game
Cross-platform is hard to get right even for seasoned developers as there are many moving blocks and undefined behavior. Most popular game engines are already tested and have built-in workaround for many issues.
- You need proper content pipeline
If your game depends on or uses many imported 3D models and materials it is crucial to have working content pipeline. Content pipeline transform the imported 3D models and textures to game engine specific data format. If you want to import wide amount of different 3D model formats and have working texture compression, you might want to use off-the-shelf game engine.
- You need to have realistic or next-gen graphics
As an indie, it would be hard to stay at the same levels or even bring a new game engine to the levels of current off-the-shelf game engines.
- Game has to be build in the shortest time possible
It is hard to beat time-to-market with a custom engine. This doesn’t need any explanations.
- You need to find people with existing skills to use the engine
When you bring new people to the team in the later stages of the game’s development, you will be better of when they would have experience from the game engine you are using.
- Game is a mobile game that ships for Android
It’s pain in the ass to develop OpenGL ES for Android. Be prepared for graphics issues. There are so many different phones and OpenGL drivers with undefined or wrong behavior. I would chose proven game engine for mobile games (Unity / Defold).
- You don’t have any specific or good reasoning for building a custom engine
Lastly, if you don’t find any good reasons business or game design wise to develop a game engine.
When it is viable to build a custom game engine?
- You care about fine-tuning underlying technical side
You need to tinker the fine details to have the minimal possible game distribution size and achieve the best performance. When you have access to source code, you can customize or optimize the whole stack from raw input to rendering. This is also possible on off-the-self engine, if you have access to the engines source code.
- Your needs are well known before building the game
You can estimate the features needed for the game engine to build the game. This way you can have rough estimate, how long it will take to build the engine. And how big of a job it is to build the game engine.
- Your content pipeline is simple and limited
For example, if your game design allows you to stick with one 3D model format and exclude textures with alpha.
- The game doesn’t require next-gen graphics
This is self-explanatory. Sometimes less is more.
- You think the game development will take more than two years or you want to provide updates for the game many years after the game release
After starting to build with Unreal / Unity / Godot, those will receive updates and the upgrade process for your game can bring game breaking changes that would need reworking levels and/or game mechanics. I have seen this happen for AAA game.
Why I have chosen to build custom game engine for my gamedev project?
- It has to achieve lowest possible network and input lag
I need to have full control over the rendering loop, present swapchain and also input polling to fine tune the input and network latency.
- It has to be ultra-light and ultra-fast
I want the game to be small in distribution size, have ultra-fast start-up time and minimal loading times. Also the game performance should be excellent on low-end machines. I want the game to be non-intrusive, lightweight and accessible by people with low-end machines.
This is both a game design choice and it also enables us realistically to develop custom game engine. We believe that visuals are very important but highly-realistic or candy graphics distract the core gameplay. Simple visuals also means simple content pipeline and simple rendering engine for the game engine.
Yes, you can also build map editor with Unreal / Unity / Godot. But this comes as a bonus while building the map editor for the engine. It brings a bit more extra work to polish the editor for external users but I think it is worth it.
- I’m in it for the long term!
It is much easier to support future Windows versions and fix upcoming issues related to new hardware when I have control over the whole stack. If I would have chosen Unity or Unreal I would be stuck with the version we started to design with. If they would, for example, change the ray casting engine, physics engine, AI navigation engine or any core part of the engine in future versions, it could potentially change the gameplay drastically and to unwanted directions!
It easy to focus developing the game engine to support only single platform. By focusing on single platform, I miss the headache of developing cross-platform abstractions and separate implementations.
- I’m software engineer first, game designer second.
In the end, I just like to tinker, read and develop things around new techniques and possibilities.