Engine Description – Unity3D
Unity is an engine that was first founded in 2004 with the aim to make game development more accessible to everyone. Since then it has become a very popular 3D and 2D development platform globally.
Unity has a very intuitive design, and an impressive asset store. It has a great community, with a substantial number of tutorials and courses to be found online. All of which make Unity an irresistible choice for people starting their development journey and small teams.
Engine Description – Unreal Engine
Unreal has an extensive history as a game engine which dates back to 1998. It was released by Epic Games alongside its debut title “Unreal” and shortly followed by the very popular “Unreal Tournament”. Unreal has been known for its groundbreaking graphics and dominant presence in the gaming culture.
It has now been put in a contending spot with Unity following its latest pricing model which has made it more accessible to smaller development teams.
Infrastructure
In order to properly compare the two engines, it is necessary to understand that the differences lie not only in their technical aspects but also in the infrastructures surrounding them as well. Such as their toolboxes and asset stores, their documentations, and their communities.
Both of the engines have their own asset stores that hold a variety of plugins, models, animations and pieces of code. Some of which are created by Unity and Unreal respectively, but a majority of these extensions are community built.
Unity comes preloaded with tools for developers to use, including physics simulation, animation and rigging, lighting, event triggers, audio and much more. Though in comparison with Unreal it still leaves a lot to be desired.
Unreal comes loaded with a substantial number of tools and features that work right out of the box, albeit being quite a bit more complicated. It can feel like navigating a maze with no map at times.
Both Unity and Unreal have extensively developed their documentation on how to use their engines. Although there are quality training courses to teach developers how to build applications for both Unity and Unreal, the number of courses are significantly larger for Unity.
For example, the Udemy education platform offers about 2280 courses for Unreal, and 6418 courses for Unity.
A vast majority of these courses do teach developers how to develop games, however the base knowledge can be used to build other types of applications.
Both of these engines are doing their utmost best to provide developers with relevant documentation and training materials, but inevitably developers are left alone to figure out which solutions are best when it comes to bugs and unsolved problems with code.
This is where the role of the community surrounding the game engines become preeminent.
As the more freely accessible engine for developers, Unity naturally has a bigger community of independent, or indie, developers surrounding it.
Unreal Engine forum topics number in around 12000 on development threads, on the other hand, Unity forum threads number in around 128000 topics. Meaning that if a developer were to come across an issue, there would be a better chance of finding someone with the same problem and a solution to learn from.
The Unreal Engine community is also somewhat divided on the matter of non-programmers who create applications mostly with the visual scripting system called Blueprints and developers who utilise the C++ language.
Coding
Perhaps the most notable difference between the two engines is that they utilise different programming languages. The primary language for Unity is C-Sharp (C#), although there are several programming languages that can be used with the platform, such as JavaScript. On the other hand, Unreal allows developers to choose between C++ and the Blueprint visual scripting system.
The debates on which language is better, C# or C++, are arbitrary, as it mostly comes down to what a developer is comfortable with, their experience and what is suitable for the project.
However, though fairly similar to C++, C# is a lot simpler and easier to learn. Making it a natural first step when learning to code. For example, for a somewhat simple mechanic developers might find that they will need to create two separate files in Unreal, one for declaration and one for definition. Unlike having to create one file in Unity. This may seem quite complex for developers early on in their journey.
As mentioned earlier, Unreal features a Blueprint visual scripting system that developers can use as well to create complex applications. The workflow is node-based and does not require any code. It is quite easy to pick up and learn Blueprints, especially when starting out in Unreal.
This is great for quickly prototyping levels.
However to get the most out of the Unreal Engine, it is recommended to combine C++ and Blueprint based solutions into an application. Almost every section in Unreal’s documentation is backed up by both C++ and Blueprint examples.