Why we chose Unreal Engine
At first, without any engine
Back in the days of VirtualSociety Online, we made the choice not to use a game engine. VirtualSociety online being a web game, we had a few possible choices of engines, like Babylon.js1 or PlayCanvas2, but we made the choice to use only a rendering engine, ThreeJS3.
What is a game engine?
Unlike a rendering engine (like ThreeJS3), a game engine takes care of the different components of a video game, such as physics, sound mixing, inputs and outputs (keyboard, mouse, controller), etc.
Not using an engine had several advantages. First of all, it gave us the opportunity to build our own engine, perfectly adapted to our needs. At the time when VirtualSociety online was in 2D, the engine was made in a way that allowed players to create their objects directly inside the game. When we made the transition from 2D to 3D, some of the code could be kept, by integrating ThreeJS for rendering, which would not have been possible if we had used a 2D game engine.
Creating our own engine was also a very rewarding experience, as we were confronted with a lot of different aspects of video games, handling actions, animations, cameras, non-player characters, and sound.
When we decided to develop a game full time, and start all over again, we asked ourselves if it was better to create our own engine or use an existing one. While creating your own engine has some advantages, as we saw above, using an existing engine is often the best solution, especially for a small studio.
Why use a game engine?
There are plenty of benefits that come with using an existing, well-known game engine, including:
- Hiring is much easier! Indeed, hiring a developer or an artist familiar with Unreal Engine or Unity for example, is easy, because many schools teach how to use these engines. Learning how to use a well-known and widely used engine makes it easy to integrate into many projects. On the other hand, when using an engine created internally, new team members must first become familiar with the studio's way of doing things, which requires a lot of time and investment. Also, when a studio is looking to raise money to make a game, using a well-known engine increases investor confidence, in part because recruiting will be easier.
- Most major game engines are cross-platform. Porting a game to different platforms is time-consuming and challenging, so engines that natively support multiple platforms make this work much easier.
- Using an existing engine greatly speeds up the development of a game for many reasons. First, a lot of the complex calculations are already built into the engine, so you don't have to redo everything from scratch. Additionally, the engines are made by developers who have a lot of experience and knowledge of game development, so they usually set up a structure that will make development easier, and will push developers to adopt best practices in building their game. This can prevent many mistakes and wasted time.
For all these reasons, we chose to use an existing engine, rather than recreate one ourselves as we had done previously. One question remained: which one to choose?
Cross-platform game engines
Many game engines that meet our needs exist. We can for example mention Unity4, Godot Engine6 and Unreal Engine 5
We are not going to compare them here to find out which one is better than the others. All of them have their advantages and drawbacks, and it is wiser to compare their philosophies, their strong points or simply the choices they have made, and which will make them more or less attractive depending on the tastes and objectives of the developers. Instead, we'll explain the different reasons that made us choose Unreal Engine for VirtualSociety (and we're not saying that it would be better than another one, or that it's the choice we would have necessarily made for another game).
Our choice : Unreal Engine
First of all, let's be clear: choosing an engine is never a strictly technical choice. Each engine has its own philosophy, and will suit some developers better than others. Of course, some choices would be foolish, Fortnite could not have been developed with GameMaker, but the final choice of a game engine is always partly based on personal preferences. Here we will detail some of the criteria that made us choose Unreal Engine in our situation.
The strengths of Unreal Engine
- The Unreal Engine7 rendering pipeline is undoubtedly one of the best of the current game engines. It allows 3D designers to have very precise renderings and offers powerful and easy to use tools.
- Unreal Engine allows game development in C++, and lets developers access the engine's source code. This brings many advantages. Unlike other engines that use a separate scripting language, the code of a game made with Unreal Engine uses the same language as the engine, which allows it to better interface with it. This also allows for a better understanding of the engine's workings, as well as the ability to easily fix any engine bugs if needed.
- Lumen is the new global illumination system in Unreal Engine 5. This technology provides dynamic global lighting, without baked lightning. In our case, where the game is completely customizable by the players, we can't rely on pre-calculation of lights and shadows. Lumen is the ideal technology, allowing us to have sublime renderings in game, while maintaining a flexible world, editable by the players.
- The use of the Unreal Engine and access to the source code are completely free. Epic Game takes 5% of a game's profits when its revenues exceed $1 million.
- Unreal Engine is a trusted engine, used by many AAA games.
Like any engine, there are obviously good and bad sides, so far, we note for example:
- documentation is quite limited, especially in C++. Very often, beyond the simplest use cases, the best way to know how to do it is to read directly the engine source code to find similar use cases.
- 2D game support is very limited (or even absent without a plugin), Unreal is really focused on 3D.
- games developed with Unreal Engine are quickly heavy (both in terms of executable weight and resources required), which is particularly restrictive on mobile platforms.
There were a few other factors that helped us make our choice, although they are not technical or engine features. Among them we can mention:
- Epic Games supports independent creators, whether they use Unreal Engine or another engine if they share knowledge or resources to the community. They offer the Epic MegaGrant, a grant for 3D projects.
- Epic Games, like other companies, is fighting to reduce game royalties to distribution platforms (often very high, in the range of 30%), and to allow developers to distribute their software and games on free and open platforms.
- We have a certain admiration for the creator of the Unreal Engine, Tim Sweeney9, who continues to program despite the gigantic company he created, and who uses his fortune to preserve rare and endangered forests and animal and plant species.
5 Unreal Engine
6 Godot Engine
7 Wikipedia page about graphics pipeline
8 Godot Engine devblog article
Whats missing in godot for AAA
9 Wikipedia page about Tim Sweeney