Selecting the right game engine is a key business decision that must not be glossed over. You need to research the game engine and why it fits your project better, and not blindly select it.
Although a game engine is a tool and the outcome depends on the developer, the right choice will significantly affect the outcome of your project and the time you (and your team) spend working on it.
In this article, we will explore in-depth key information you need to know about two of the top game engines out there: Unity, and Unreal Engine. Many questions, is Unity easier than Unreal? Is Unity or Unreal better for Beginners? will be answered.
Let the battle begin!
Unity and Unreal are currently the leading RT3D (Real-Time 3D) engines for games, cinematography, industrial simulation, XR, and other app development.
We will provide a comparison between both engines to help you choose between one or the other. First, let’s check some of the most popular games made with each!
Other popular games made with Unity:
Other popular games made with Unreal:
Oculus is the current leading platform for VR gaming, which generated 2.2 billion in revenue in 2021, compared to $1.1 billion in 2020.
This is driven by the most popular headset for VR gaming, the Meta Quest 2, which is a standalone headset (untethered from a gaming PC), running in android, with limited rendering capabilities which are similar to mobile. This is one of the reasons why we see that around 70% of the games on this platform are made by Unity.
Other popular VR games made with Unity:
Other popular VR games made with Unreal:
Now, let's dig into the technical characteristics of each engine.
These Real-Time 3D engines include built-in and external packages for scripting (code and no-code), rendering (2D, 3D, XR), physics, sound, networking, animation, multiplayer, etc. However, just because they provide a solution for each category, does not mean these solutions are equal. Let’s look more closely.
Both engines are to be programmed with specific scripting languages:
C# is used inside the editor and with external applications. C# is friendlier with a faster learning process than C++. Also, C# is well suited for common use and software architecture implementation at scale which requires maintenance when the app grows.
C++ in Unreal complements the Blueprint tool, but does not replace it. While you can produce an entire project in Unity with C#, the same is impractical to achieve in Unreal with C++. C++ also allows you to implement software architecture, but it’s harder to learn and use than C#, and the implementation of C++ in Unreal relies heavily on Unreal-specific code that does not translate to general C++ usage.
This is ideal for designers or developers who don’t want to dig into a programming language. Instead, they prefer to use a visual mode to program the objects in the editor.
Unity: Visual scripting package (previously known as Bolt)
It is a node based logic-engine, you can implement behaviors for game objects in the editor, and it’s almost fully compatible with C#. Unity’s scripting documentation is C# centric, making Unity visual scripting slower to learn than C# for individuals with no scripting experience. If you learn C# scripting, visual scripting will come easily. Extending the available visual scripting nodes requires no special skills.
It’s the primary way to assemble game logic in Unreal, especially for beginners. With C++ providing anything that cannot be accomplished by Blueprint. Unreal’s scripting documentation is Blueprint-centric, making it faster to learn for individuals with no scripting experience. Learning how to use Blueprint does not translate directly to C++ scripting, which requires additional training and education. Extending the blueprint nodes requires key C++ library knowledge built upon a series of engine-specific macros that extend blueprints through plugins or editor-module compilation.
As the leaders they are, both engines provide excellent quality and speed for real-time rendering. Unreal gives you high fidelity graphics out of the box, whilst in Unity you need to configure the render pipeline to match such graphics.
This has a two-way effect, if you are building for mobile with Unreal you would need to strip down the graphics for mobile optimisation, and the opposite in Unity.
In XR development, the need for optimization often outweighs the possibility to include higher fidelity graphics, so the Unity default setup is often more suited.
Unity’s render system is more modular than Unreal’s. It provides both a visual node-based editor, Shader Graph, and the ability to write shader code directly with high-level shader language (HLSL). HLSL code can be daunting, but it lends the experienced developer a greater degree of control over the rendering process with fewer layers of abstraction in between. The greatest downside to Unity’s method of rendering is that it is not well suited to convert between the high definition and universal render pipelines. Once one is chosen, switching to another can be time-consuming. Post-processing–effects like bloom, anti-aliasing, and color grading–are extendable with core presets that cover most use cases.
Unity’s shader graph examples Source: Unity
In Unreal, the ability to write complete HLSL is not provided in the engine directly, instead, a node-based material editor enables a vast range of customization with fewer technical hurdles. There is some limited access to HLSL shader code through custom nodes, but otherwise Unreal shaders must be added at a source code outside of the engine. Post-processing in Unreal is also extendable with a greater series of choices for each effect than what Unity provides out of the box.
Although Unreal has been a market leader in real-time rendering, from architectural visualization to advanced VFX and motion capture in movies, Unity high definition render pipeline (HDRP) has been used for advanced automotive visualization. At the GDC 2022, Unity showcased “Enemies”, a Real-Time cinematic trailer in which the viewer can watch a female model's face including eyes and iris movement, mouth skin and movement, hair, small hair, and other very hard to render details with such a high level of fidelity that it is tremendously difficult to be aware of it’s real or not.
Realtime VFX can be accomplished in a myriad of ways: a common solution in both Unity and Unreal is to use simple animated planes with custom materials for VFX. The vertex shader aligns the planes with the camera, and the bone animation and fragment shaders do the heavy lifting. This can save on draw calls compared to expensive CPU particle systems, but it does not allow reactive procedural effects. For those, both Unity and Unreal provide VFX-specific tools to generate millions of GPU-based particles.
As the name implies, the Visual Effect Graph allows for visual-scripting with nodes and blocks to spawn, manipulate, and drive parameters for particles. The editor itself is reminiscent of Unity's Shader Graph. This is undeniably a powerful system, but it is not possible to utilize it on all platforms: The Universal Render Pipeline, which is suitable for mobile devices, only supports some features of the Visual Effect Graph, and cannot render particles with lighting derived from the scene.
Unity’s shader graph examples Source: Unity
Niagara is also a visual-based editor, but it does not resemble either Blueprint or the material editor quite as closely as Unity's Visual Effect Graph resembles its Shader Graph. This means that learning to use the Niagara system may feel entirely foriegn to Unreal developers that have no VFX background. The Niagra system is based on a series of modules that stack on top of one another, manipulating the parameters within each step of the way. Its high level abstraction at the module level means that arbitrary data, such as mesh positions, can be piped into these modules and drive highly interactive effects. The limitations of the system also rear their head on mobile. Specifically, it does not support ES3.1 rendering, and you must instead target Vulkan rendering for Android devices or Metal for iOS devices. This does not take into consideration practical limitations of GPU utilization, which will restrict what is possible further based on how many particles and calculations can be handled without lowering the FPS significantly.
Both engines allow cross-platform development including Windows, Mac, Linux, Android, iOS, PS, and Xbox, among others.
Outside of the common platforms, Unity has an advantage in XR: It supports HTML5 web publishing, while Unreal discontinued official support after version 4.24. This makes publishing to WebXR from Unity still potentially viable, unlike Unreal.
For XR development, most virtual and augmented reality platforms support Unity better than Unreal, this can be seen in developer toolkit releases. Unreal Engine often gets these toolkits released months after Unity, and the feature supported by Blueprints may be limited.
A lot of XR multiplayer experiences are made with Unity, from Zenith MMO to population one, VR Chat etc. Whilst, there are currently very few and hard to pick XR multiplayer experiences built with Unreal Engine.
Some reasons why the barrier to entry is high for Unreal compared to Unity for Social VR:
Runtime mesh access.
The reason runtime mesh loading is so important in social games, XR included, is to allow for custom and personalized content, such as creating new environments, avatars, and accessories, that are not pre-packaged within the binaries of the application.
Until recently there have been very few runtime mesh loading features in Unreal. Certainly nothing built in. While the editor has the code to import a variety of assets, including FBX, OBJ, and ABC files, these are editor-only modules and are not licensed to run in standalone games.
Unity's support is more approachable than Unreal's, and Unity has the concept of a Unity Asset Pack, which can load any type of art asset into a compiled Unity game with compatible binaries. Unreal does have DLC and patching functionality, but it is not as robust and certainly not approachable to the layperson. Recent advancements in GLTF runtime loading in Unreal may solve this issue, which is how Ready Player Me avatars now load into Unreal. However, there's still some optimization needed, as the construction of a skeletal mesh at runtime is a single-threaded operation, which can cause jitters or a hang in the rendering thread.
All fundamental real-time animation features are supported by Unity. Armature based animation, vertex animation, state machines, and sequences provide the necessary building blocks to construct complex animation systems.
Although both provide animation engines inside the editor, Unreal has proven that its animation quality and tools are more mature. Recent additions include a scriptable rigging system, Control Rig, that places more control in the engine without the need for separate 3D authoring software, as well as live-link take recording, to capture and save real-time performances on characters from a variety of tracking systems.
Both options provide excellent support for developers. However, Unity has a bigger community than the Unreal engine, this may be due to the beginner-friendly nature of the engine. This implies that if you are stuck during development, you have a higher chance of finding a Unity solution than an Unreal solution.
Unity comes with fewer built-in features, but has a larger marketplace for plugins and extensions, allowing for added functionality at a range of prices. Unreal makes up for this with a wide variety of built-in features, with a somewhat smaller plugin marketplace.
You can find an extensive variety of assets in these marketplaces: 3D models, environments, sounds, shaders, tools, templates, etc.
Besides the Personal (no fees) plan, Unity has paid plans in accordance with the company’s revenue in the last 12 months, starting at US $ 399 per year/seat (user). No royalty fee. More info: Unity Engine plans pricing
On the other hand, Unreal has a Standard License (no fees) plan, an Enterprise program at US $ 1500 per year/seat, and a royalty fee when certain terms are met. More info: Unreal Engine licensing options
Unity is preferred by around 62% of the game developers:
From 71,828 people interviewed last year by Stack Overflow:
Unity visual scripting (formerly Bolt). Complements C# scripting, but with less documentation. Easily extendable.
Blueprint. The focus of scripting documentation. Powerful, but siloed from C++ scripting. More challenging to extend.
Native Virtual Collaboration Tools (Source Control)
Documented external pipeline
RealityScan (coming soon)
Stock Art Assets
Physics-Based Interactions for XR
Native IK Based Interactions
Asset Management Pipeline
Original Asset + Metadata file. You’ll still need to export from your authoring platform of choice, but there’s one less step to worry about when transferring assets, within the engine.
Asset converted to Unreal-specific format during import. This eliminates the need for a separate metadata file, but if an asset becomes corrupt, or is moved outside of its correct location, then it may be hard to recover. In addition, the linking system for assets is highly dependent. You must understand file-redirectors fully if you are going to frequently move or rename assets and folders.
Source Code Access
Read-only access to engine source.
Read/write access to engine source (after compiling from GitHub repo).
Efficient/moderate quality by default. High quality is attainable with greater effort.
High quality by default. Performance may suffer for mobile devices without optimization
State-machines, timelines/sequences, script-based animation. With enough time and effort, just about any feature visible to the end player/viewer of an Unreal product can see the same results produced with Unity. The limiting factor is the time it takes to reach these end results due to the requirement to build animation systems up from scratch.
State-machines, timelines/sequences, script-based animations, animation post-processing, in-engine rigging, live-link. The Blueprint a unique derivative: the Animation Blueprint. The ability to rapidly composite animations does not necessarily extend the functionality far beyond what Unity can provide, but it does provide a faster pipeline.
Shaders and Materials
HLSL, and Visual Material Scripting. Requires greater understanding of Shader programming.
Visual Material Scripting. Requires less understanding of Shader programming.
Some built-in support, but mostly third party plugins are used, like Photon, Normcore or Mirror
Built-in support out of the box is very good and battle tested in games as Fortnite
HTML5 build supported
Smaller distributions by default. less complex render pipelines result in fewer performance bottlenecks.
Larger distributions by default. Performance may suffer if the wrong features are left enabled for less capable hardware.
Samples and templates
More fragmented. Not all systems are documented in a central repository
Unity has a large community of developers, if you are stuck it is easy to find someone with a similar problem
Unreal has a smaller community, if you are not an experienced developer it is easy to be stuck when developing
Start without fees, $ 399 per year/user for studios. No royalties
Start without fees, 5% royalties for off-the-shelf products that exceed $1M gross profit over the lifetime of the product
Cross-platform gaming, entertainment, education, Gaming, virtual production, arch viz, digital twinning
Gaming, industrial engineering, medical device, and pharmaceuticals
More accessible for programmers. Unity has fewer bells and whistles by default, which enables learning fundamentals without being faced with challenging complex systems.
More accessible for artists. The wide range of systems, plugins, and tools make advanced work faster, but learning these systems will take longer.
Unity has wider cross-platform support, and with the URP pipeline, it is easy to deploy across multiple platforms without overhauling your projects
Unreal has cross-platform deployment, but it requires more manual setup and application compilation knowledge
* Engine compilation required
** External download
There are two kinds of people that will read this article, those that are trying to decide which engine to invest their time in, and those that have already made their choice and want someone to agree with them. I’m sure to disappoint at least a quarter of you by that metric, but here goes!
Unity is the reigning champion in XR development.
Unreal is a legitimate choice for XR development--no one would write an article comparing the two if that was up for dispute--but if you’re basing your choice on the quickest way to produce high quality XR content, then
Unity wins outright.
The vast majority of studios hiring XR developers already use Unity, and in the indie-developer space there’s a much larger community of XR developers and programmers to support existing and growing teams. To prove this point, take one of the most popular emerging markets in XR: social platforms on standalone VR headsets. (The rising popularity closely relates to the most frequent talking point of 2022: the Metaverse.) There’s more competition between Unity and custom-engine programming right now than there is between Unity and Unreal. There are a variety of reasons why this is the case, but let’s call out just two:
Where Unreal really shines is in the rich new graphical features that are continually brought to the engine, first in UE4 and now in UE5. Examine the development roadmap here. Unity is working to catch up with Unreal in this sector, such as their recent acquisition of Weta Digital. However, the most exciting features Unreal added all have one thing in common: they’re not suitable for standalone XR devices.
These are exciting, these are fun... and these are not going to work on a Snapdragon XR2 chipset without some significant modifications/optimizations. There’s potential here for cloud-streaming XR content for standalone headsets, but no one’s quite cracked that nut yet.
This brings us to our final critique of Unreal for XR development: You’ll need to significantly reign in your art-team (or your inner artist) to meet performance requirements. If you give someone $100 dollars and ask them to buy all the essentials from a grocery store, that’s one thing. If you ask the same person to spend that $100 at the grocery store or at the Michelin restaurant across the street, they’re going to exceed their budget far more quickly. What can I say? Sometimes that duck confit is too delicious to resist when paired with a side of lumen-based global illumination.
So there you have it. There are some clear and present challenges in adopting Unreal as your platform of choice for XR. This begs the question, why have some of us personally chosen Unreal over Unity for XR development? The answer is straightforward: once you overcome the learning curve for either engine, they’re both capable of delivering exceptional high quality XR content.
We’re also beginning to see a shift in the demographics that use Unreal: As people are lured in by the AAA visuals, they’re finding more ways to extend the engine for use in XR, especially as XR hardware improves; thus driving increased support, documentation, and features in Unreal. Unity continues to dominate the space, but that may change if they are unable to match Unreal’s growth rate in the market.
Our recommendations for you to choose between Unreal and Unity.
Thanks to the XR Bootcamp mentors and team for writing this guideline!