Unity vs Unreal Engine for XR Development: Which One Is Better? [2022 Updated]
Dejan Gajsek
Game developer or AR/VR programmer - if you want to build 2D/3D applications for your business or your personal project, there’s no better time than now. And if you look at the available tools in the market you will quickly find out that there's only two viable options for beginners: either Unrealor Unity.
These days, 3D game engines like Unity3D and Unreal Engine allow people with no prior VR development experience to create VR solutions on par with industry veterans. Especially given that you can experiment with both engines for free as long as you want.
Market share of games built with game engines on Steam. Source: Reddit
Initially these software platforms were built to develop 3D video games however since developing for VR (and AR) is sharing lots of similarities with game development, these game engines were adopted by the XR communities.
You don’t have to go far for success stories.
However, another challenge presents itself. What engine should you choose? Unity or Unreal? Or something completely different, perhaps?
There are several options (CryEngine, ApertusVR, Amazon's Sumerian), yet there are two engines that are dominating the market share the XR development market: Unity3D and Unreal Engine 4.
You can't go wrong with either choice. And the best part? Both game engines can be used free. This way you can practice your development chops until you reach a commercial success. If you don’t want to leave it up to a coin toss, this article will help you understand what the strengths and weaknesses are of both of these solutions.
This article also debunks a lot of myths that surround these game engines to help you choose without bias the one that is best for your project. We are looking from the lens of a virtual reality developer however, even game developers will have something out of it.
Let’s start with a quick overview of each one of them.
Unity Vs Unreal Engine
Unity Overview
Unity3D is a development engine that was first released in 2005. Since then it’s become the most popular 3D and 2D development platform in the world. Here are just a few stats:
- 60% of AR/VR content and 50% of mobile games are made with Unity3D
- Over 24 billion installs of engine in the last 12 months
- Supports 28 platforms (from iOS and Android to Oculus and Windows Mixed Reality and all in-between)
Due to its high popularity with mobile platforms, there’s a persistent myth that Unity3D is only good for mobile-oriented projects.
That is mostly because, in the past, Unity3D themselves heavily targeted the mobile market, especially during the rise of the Apple’s AppStore and Google’s Play Market.
In truth, in the last few years the engine has advanced so much that now it’s a multi-faceted development platform that can be used for any complex XR solution.
Myth: Unity is good for mobile VR/AR
Truth: Unity is good for both cross platform solutions and complex XR projects alike (e.g. entire Audi logistics and car configurator training is created within Unity3D platform). Or check out Circuit Stream's VR Training Simulation Case Study of INVISTA.
What about Unreal Engine?
Unreal Game Engine 4 Overview
Unreal Engine has a long history as a game engine dating back to 1998. Over its lifespan it was licensed to a handful of AAA-studios for titles like Unreal/Unreal Tournament, and Deus Ex. It’s had several iterations, such as Unreal Engine 2 & 3.
Things took a U-turn in 2015, when the 4th version of this ubiquitous development engine was made free to the general public.
Note: There is a 5% royalty fee for Unreal Engine-powered products that make more than $3,000 per calendar quarter. There is no royalty if you are using the Unreal Engine for architecture, automotive, film, television, broadcast, live events, training and simulation, or other non-games projects
Below are the key stats for Unreal Engine 4:
- More than 7 million users from the design and enterprise community
- Over 15 supported platforms
These days, indie developers and major studios can both use Unreal Engine for their various projects, including games, education systems, and business solutions.
Due to Unreal Engine’s origin, it’s a common perception that Unreal Engine 4 is a great tool only when you work on complex multi-million dollars projects, especially video games. On April 2022, Epic Games (company released Unreal Engine 5 with even better features).
A list of AAA-titles developed with UE4 that are coming out in 2020. Anyone else excited by Final Fantasy VII remake?
While it’s true that some of the popular game titles, such as Fortnite, are built using Unreal Engine 4, the company behind UE4, Epic Games, is actively developing a mobile segment, along with supporting community projects through their Unreal Dev grants program.
There are also VR-specific games like Batman: Arkham VR by Rocksteady Studios.
Myth: Unreal Engine 4 or 5 is only good for AAA-game titles and has superior gameplay
Truth: Unreal Engine 4 can be used for VR/AR development, 2D games, 3D and mobile development alike. It is true that Unreal is used far more often on PC games while Unity is dominating the mobile game market.
Over the years, both Unity3D and Unreal Engine addressed their weak points, so picking one of them over the other is not a simple task.
In order to do that, let’s talk about the differences for XR development with these platforms through several lenses.
Which Engine Has The Best Infrastructure?
In order to properly compare these two engines, you have to understand that the difference lies not only in technical aspects (although we’ll talk about those in the following section as well), but in the infrastructure that surrounds them as well.
Important factors of the infrastructure consists of assets stores, documentation, and community.
Let’s talk about each one of those in detail.
Assets Stores
Every virtual environment has to be populated with virtual objects that represent a real or imaginary world.
Below is an example of a VR training solution that was developed for Callaway Energy Center:
You can create 3D assets from scratch using a 3D modeling software such as Maya, Blender or 3ds Max, or you can purchase the assets via the Assets Store.
Both Unity and Unreal Engine have assets markets that allow you to purchase pre-made 3D models, objects, environments and so on.
The current number of assets in the Unreal Engine marketplace is around 10,000:
The amount of assets in Unity Asset Store is five times that, with about 31,000+ 3D assets alone:
The difference between the two asset markets becomes a factor depending on what project you’re going for.
Unreal Engine assets tend to be more oriented towards finished game productions. Many of them were previously used in AAA-games.
That explains their higher visual quality. Among those assets there are castles, sci-fi tech, and monsters.
Image Source: UnrealEngine.com
If you’re developing a game with a relevant fantasy or sci-fi setting, and you find that some UE4/UE5 assets are perfect for your project, Unreal Engine 4 marketplace can be a decisive factor. With UE5, the selection is even more attractive since they've added Quixel megascans — a large library of high-quality scanned real0life objets and environments.
At the same time, if you’re developing a VR application for business, graphics quality aren't as important as relevance and iterative development. With iterative process graphics can always be improved along with app optimization.
Given that you have more assets to choose from in the Unity store, it’s easier to find more relevant models and quickly prototype your business environment without having to hire 3D modelers and create virtual props from scratch:
Below is an example of a jet engine 3D model that you can find in Unity Asset’s store. It could be used in VR training simulation for jet maintenance:
Image Source: 3D asset that represents military jet engine
In terms of assets, Unity3D’s store is very advanced. However, Unreal Engine is catching up, and Epic Games has recently released a Quixel Megascans Pack with 16,000 high-quality material scans from Quixel library (comes with UE5).
Let’s talk about documentation and training available for these engines.
Documentation & Training
Both Unity and Unreal Engine have an extensively developed documentation on how to use the engines and on XR development specifically:
But the real educational value comes from external training.
Although there are quality training courses that teach you how to build XR applications for both Unity3D and Unreal Engine, again, the number of these courses is significantly larger for Unity developers.
For example, the Udemy education platform offers around 2,200 courses for Unreal Development, and 5,500 for Unity. Although most of these courses teach you how to develop games, the basic knowledge can be used for building other types of applications as well.
As for the business and enterprise-oriented courses, those tend to utilize Unity3D environment due to its developed infrastructure and lower entry point for new developers.
You can learn about the structure behind the XR course and how exactly it teaches you to build finished XR applications by downloading the syllabus for our 10-week project-based live XR development training.
If you're more into learning game development, we've got you covered as well — check out our career-oriented Unity Developer Bootcamp.
Let’s talk in detail about the difference between the development communities for Unity3D and Unreal Engine.
Developer’s Community
Every year developers are pushing the boundaries further of what's possible in game development or XR.
Both Unity3D and Unreal Engine are doing their best to provide developers with relevant documentation and training materials, but in this field you’re inevitably left alone to figure it out which option to pick.
Bugs, glitches, crushes, unsolved code mysteries occur every day. Who is going to help you solve those, especially when you’re on your own?
Other developers.
This is where the role of the community that surrounds game engine becomes paramount, especially in an emerging XR industry
Unity3D, as a freely accessible engine, has been around longer than Unreal Engine, so, naturally, it has a bigger community of indie developers surrounding it.
For example, on Unreal Engine’s forum there are 12,000 topics on C++ programming, and 4,600 threads on VR and AR development.
On Unity’s forum there are 128,000+ threads on scripting and 6,100+ topics on VR development. What that means is that if any problem occurs, there’s a better chance of finding someone with the same problem who can help you learn about their solution.
Another thing about Unreal Engine’s community is that it is divided between non-programmers who create application mostly with visual scripting system called Blueprints and developers who know and use C++.
An example of a Blueprint-based feature
There are more non-programmers in the Unreal Engine community. You’ll see that the number of Blueprint-based discussions on forum is twice the number of C++ programming discussions.
This division becomes apparent because many C++ developers don’t actively use Blueprints in their development process: That’s because code-based solutions are usually more resource-optimized and flexible than Blueprint-based ones.
Thus, expert C++ developers might not be able to help non-programmers simply because they don’t speak the same language.
On the contrary, every Unity developer knows C# — its primary development language, so that experienced developers can easily show beginner developers the ropes. It's also something we teach in the XR Development for Unity course from the start.
Let’s talk about the difference between development process in detail in the next section.
The Development Process
Both engines share many similarities when it comes to development of XR applications. However, there are major distinctions as well and we’ll talk about those in this section.
C# vs C++ And Blueprints Comparison
Perhaps, the biggest difference between the two engines is that they utilize different programming languages.
Although there are several programming languages you can use with Unity3D, the primary language for the platform is C#.
Unreal Engine 4, on the other hand, allows developers to choose between C++ programming and Blueprint visual scripting system.
The debates on which language, C# or C++, is better, has been around for ages, and, frankly speaking, are meaningless.
Both languages are perfectly suitable for XR development, and it all comes down to which one you’re more comfortable with or have more experience with.
However, C# may be a bit easier on beginners, and here’s why.
First of all, C# code is simpler.
Let’s take a primitive 3D object, such as cube, and make it float and rotate at the same time:
Here’s a code for this from official Unreal Engine documentation:
FloatingActor.h
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "FloatingActor.generated.h"
UCLASS()
class QUICKSTART_API AFloatingActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AFloatingActor();
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent\* VisualMesh;
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
FloatingActor.cpp
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "FloatingActor.h"
// Sets default values
AFloatingActor::AFloatingActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
VisualMesh = CreateDefaultSubobject
VisualMesh->SetupAttachment(RootComponent);
static ConstructorHelpers::FObjectFinder
if (CubeVisualAsset.Succeeded())
{
VisualMesh->SetStaticMesh(CubeVisualAsset.Object);
VisualMesh->SetRelativeLocation(FVector(0.0f, 0.0f, 0.0f));
}
}
// Called when the game starts or when spawned
void AFloatingActor::BeginPlay()
And here’s the code to achieve the same result in Unity3D:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class floatingactor : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float delta = Time.deltaTime;
float vertDelta = Mathf.Sin(Time.time + Time.deltaTime) - Mathf.Sin(Time.time);
float rotDelta = Time.deltaTime \* 20.0f;
transform.Rotate(0, rotDelta, 0, Space.World);
transform.position = transform.position + new Vector3(0, 0.25f \* vertDelta, 0);
}
}
Result:
Notice that you need to create two separate files in the Unreal Engine example, one for declaration, and one for definition.
It’s worth noting that even though a big chunk of the code is created by Unreal Engine automatically, it may seem a little complicated if you’re just starting out in development.
At the same time, Unreal Engine features a Blueprint visual scripting interface system that you can use to create complex applications as well. It doesn’t require you to code, and the workflow is node-based.
From official Unreal Engine 4 documentation
Almost every section in the Unreal Engine documentation is backed up by both in C++ and Blueprint examples.
It’s quite easy to learn Blueprints, especially when you’re just getting started. However, to get the most out of UE4 it’s recommended to learn C++ and combine Blueprint-based solutions with code.
Note: there’s a custom Unity3D plugin, Playmaker, that allows visual scripting in Unity3D the same way as Blueprints in UnrealEngine 4.
Another possible advantage of C# is that 90% of VR/AR development companies are using C#, which translates to a largely documented code-base and a larger amount of tested solutions in the development community.
Platform’s Source Code Access: Unreal Engine Vs Unity
Both platforms are self-sufficient — the tools and workflows they offer are more than enough to create XR applications of any type with no modifications to the platforms’ source code.
However, there’s one major difference between Unreal and Unity.
Unreal Engine is an open source engine. Unity is not.
What that means is you can modify UE5 source code to fit your needs, free of charge. At the same time, you can view Unity3D source code, but in order to modify it you need to acquire an enterprise license.
While this may be a deal breaker for bigger productions, smaller developer teams should carefully consider whether they should modify platform source code at all, otherwise one quick fix may spawn an avalanche of bugs elsewhere.
If you need some custom functionality in Unity3D, in most of the cases platform-based scripting and plugins from the asset store should be enough.
Unity vs Unreal Engine Graphics Comparison
If we were to time travel back to 2012, when Unreal Engine 4 was first revealed to the general public, the quality of graphics was unprecedented at the time.
While Unity3D was mostly focused on indie and mobile game development, Unreal Engine was built on the bones of AAA-game productions.
Since then, the prevalent myth was that if you want photorealistic graphics, you have to use Unreal Engine 4.
Myth: If you need stunning graphics, use Unreal Engine 5
Truth: Both Unreal Engine 5 and Unity3D are capable of creating photo-realistic scenes and provide tools for creating stunning visuals
Here’s a comparison of graphics between these two platforms:
That said, Unreal Engine has a few advantages in the graphics department.
All out-of-box Unreal Engine projects, including assets, scenes, and tutorial projects look better.
Interesting fact: Unreal Engine 3 included a full-featured lens flares editor, whereas Unreal Engine 4 treats lens flares as a strictly post-processing effect. Unity3D still has a wide number of options to edit lense effects before processing. Alternatively, you can create custom flats in UE using material nodes.
With Unity3D, you may need some tweaking to get the best out of your 3D assets.
Advanced shaders, advanced dynamic lightings, PBR materials - it’s just less work for you at the start in Unreal Engine than in Unity.
However, if you’re using Blueprints, complex node workflows may cause performance issues.
A large amount of nodes, complicated math, and resource-demanding operational loops may slow things down compared to an optimized C++ code solution.
Below is an example that shows how a complex blueprint system dramatically reduces FPS compared to an C++ code. However, the difference seems to be smoothed out with MultiThread and nativization processes enabled.
A performance comparison between C++ and Blueprint solutions
Rendering Comparison: Unreal Engine vs Unity
Rendering in Unreal Engine
The Unreal Engine is a game engine that has made waves in the video game industry as one of the first to support DirectX Raytracing (DXR), allowing you to use only ray tracing on passes that need it and rasterization on those that do not. This ensured that both render quality and rendering speed are met, which is what every developer wants!
Since then, UE 5 has been making massive strides to improve rendering speed and quality with every next update.
The most recent water system in Unreal Engine can create any body of water you can think of, from small ponds to huge oceans.
The latest update to Unreal Engine 4 also introduced a new cinematic cloud system. With traditional methods based on skydome textures, clouds often appeared flat and low quality when viewed from an aerial perspective or from below. This is no longer the case with the UE5's volumetric lights system as they are of higher quality and hold up in all viewing angles.
https://www.youtube.com/watch?v=OD06fOk46U0
The new Volumetric Cloud component was designed to support interactions with environment lighting from the Unreal Engine's Sky Light component and two directing lights representing sun and moon.
Unreal Engine has also been released with various enhancements to the video rendering queue such as more controlled final render output, camera motion vectors, Z-depth, and more. The newly added support for Apple Pro and Avid NxHR codecs also contributes to high-quality media export.
The next iteration of the Unreal Engine will be revealed in late 2021. Unreal Engine 5 features a high-end reflection system, fully dynamic global illumination, and ambisonics rendering.
And if you're still doubtful about Unity graphic performance, check out this cinematic teaser made in Unity.
Rendering in Unity 3D
Unity offers two rendering techniques, or “paths.” To start your project on the right foot, the decisions needs to be made early on about which path to use: Forward Rendering (default) or Deferred Rendering.
Forward Rendering is an excellent option for those who want to work with transparency and custom shading models. If you can manage the light counts in your game, Forward Rendering can be a high-speed solution.
(Source)
With Deferred Rendering, we defer the shading and blending of light information until after a first pass over the screen where positions, normals, and materials for each surface are rendered to a ‘geometry buffer’ (G-buffer) as a series of screen-space textures. Deferred Rendering is a powerful technique, but it requires high-end hardware to provide the best performance. It also isn't supported by some mobile devices.
Ok, cool. But what about photo-realistic rendering?
After years of active development, pushing the limits of realism and artistic expression is now well within reach of Unity's Scriptable Render Pipeline. Unity’s latest Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP) are building more immersive graphics for immersive digital experiences from realistic materials to cinematic lighting effects.
The latest HDRP 10 update includes better tools to help you debug lighting, whereas the new depth of field mode will produce beautiful, high-quality images with path-traced defocus blur.
URP provides artist-friendly workflows for creating optimized graphics across a range of platforms with just one click. Its sophisticated Screen Space Ambient Occlusion system approximates the brightness or darkness of a surface based on its surrounding surfaces and how exposed it is to ambient lighting. This allows you to improve the visual quality of ambient lighting in your scenes by making the shadows of objects more realistic than ever before.
Fun act: both engines actively collaborate with external 3D studios to ensure smooth transition of 3D formats into the engine. For example, both Unity3D and UE4 support Universal Scene Description (USD) format developed by Pixar to support asset pipelines and enable teams to work using asset references and overrides.
Overall, remember that you can always achieve the same results with Unity3D and at this point in time both platforms are perfected to the point where there is no visible distinction between the visual quality they can produce, leaving the choice to your personal preference.
Notable Projects Made With Unreal Engine 4 and Unity3D
Both engines have been used extensively for AAA production and indie game development, and the most famous games of recent years have been made using both platforms.
However, in the last several years, the dramatic switch occurred and both platforms are now being utilized not only for the entertainment industry, but for more practical and business-oriented solutions.
Due to the advances of XR technology, businesses, education centers, and manufacturing enterprises are extensively using XR applications to improve their workflow and profits in a myriad of ways.
XR Projects Based On Unreal Engine
For example, a drug development company C4X Discovery uses Unreal Engine 4 to visualize molecular data, and thus, speed up the development of new drugs.
Visualizing complex data in VR enabled scientists to observe compounds from a new perspective, more easily spot design flaws, and also effectively collaborate across the world without the need to be in the same room.
Visualizing complex data in VR has many applications. Another example comes from Air Canada, which used Unreal Engine to create a VR presentation for their top flight business class service.
It's worth noting that 97% of the project was done with Blueprints, not coding. The reason being is that presentation-oriented VR projects are easier to pull off than XR training, because it requires more complex interaction than simply observing something.
Let's talk about some XR projects that notable companies use to revolutionise their training and operations workflows.
XR Projects Based On Unity
Audi, a german automobile giant, developed a modular VR training with 20 different programs in several languages to improve their logistics, service, and production training workflows.
Image source: audi-mediacenter.com
VR training, according to Audi, is very popular among employers, and improves the learning process, the workers’ motivation, and trainees’ ambition.
INVISTA, a global USA-based polymer and chemical intermediates company, utilizes a Unity3D-based XR solution to simulate a working environment and train employees in VR, reducing training time, saving raw material costs and decreasing operational downtime.
Boeing, GE, US Navy are using VR/AR applications based on Unity3D to train staff with greater efficiency, with benefits such as improved training retention, improved safety, and reduced operational downtime, to name just a few.
However, companies use Unity3D for presentational purposes as well. Take a look at this BMW 2019 showcase and try to guess which one is rendered and which one is real:
Summary
In the last few years both engines have been developing by leaps and bounds, addressing their weak points and persistently following the latest industry trends.
It used to be Unity3D for mobile projects, and Unreal Engine for AAA-games, but things have changed so much since then.
Both platforms are perfectly appropriate for creating complex XR solutions and indie projects alike. Both platforms are capable of creating stunning visuals and cross-platform applications.
Although Unity3D supports more platforms and is known for its cross-platform development approach, both engines are optimized for working with all the recent XR tech on the market. Many developers claim Unity is a good choice because of ease of use.
It all comes down to your previous experience and environment you’re working in.
Do you have lots of experience with C++ programming? Unreal Engine is the way to go.
However, if you’re just starting out as a developer, then Unity’s C# might be a more practical language for beginners, because it has a bigger community and VR codebase surrounding it.
If your application is heavily focused on presentation and graphics, for example a desktop game with AAA-assets or visual presentation for business, then, possibly, Unreal Engine with its Blueprints system and great visual effects out of the box is a way to go.
On the other hand, if you’re working on a complex business solution that requires a lot of customization, iterative development, prototyping, and optimization, then learning Unity3D environment may be a great option.
Carefully study both platforms, understand what works better for you, and remember that you can try both platforms for free.
Good luck with your projects!
If you're looking to become a Unity developer from scratch, check out Circuit Stream's career-oriented Unity Bootcamp.
QUICK FAQ
- Is Unity better than Unreal?
No. Both game engines are remarkable at what they do and you won't go wrong no matter which one you pick for your default tool. It comes down to personal preference, engine flows, user experience and type of projects. - Is Unity or Unreal better for beginners / Is Unity harder than Unreal?
Yes, Unity is easier to start with if you don't have much technical knowledge. The C# language syntax is easier to grasp, has fast iteration time and is more forgiving than Unreal's C++. Unreal has a steeper learning curve. If you're not fond of coding you're free to use visual scripting in Unreal using Blueprints, and Bolt in Unity. - Is Unity losing to Unreal?
Not really. Depends what industry niche are you looking at. Unity dominates the mobile market with more than 50% of all applications. If we look at the video games on Steam, 23% of them are using Unreal Engine vs 11% Unity. We have to keep in mind that both Unity and Unreal are heavily investing in other industries such as AR/VR and Visual Simulations and numerous other segments via variety of extensions. - What about pricing? Which one is more affordable?
That's an excellent questions since the pricing models between Unity and Unreal are completely different. Both have generous freemium options. However, if you decide to buy a business-oriented license Unity will cost you from $399 for Plus, $1,800 for Pro and $4,000 per Enterprise account per year. Check out the full pricing breakdown on the Unity Store. while Unreal is going to take 5% royalties whenever your application gets monetized. Unreal also sells Unreal Enterprise Program that comes to $1,500 per year and can't be used for game development.
Download Syllabus
Download XR Development with Unity Course Syllabus