Comparing Unity vs Unreal for VR, MR or AR Development Projects

By 
XR Bootcamp
May 6, 2022

Unity vs Unreal - how to decide which engine to use in your next XR project

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!

 

Popular non XR Games made with Unity

unity vs unreal

Other popular games made with Unity:

  • Call of Duty mobile,
  • Pokemon Go,
  • Escape from Tarkov,
  • Rust,
  • Hearthstone,
  • Ori And The Blind Forest,
  • Pillars Of Eternity.

 

Popular non XR Games made with Unreal

unreal vs unity

Other popular games made with Unreal:

  • Seshua’s Saga: Hellblade II, 
  • II, Dragon Quest XII: The Flames of Fate,
  • Dreamhouse: The Game,
  • eFootball PES 2022,
  • Gears of War,
  • Mortal Online 2.

 

Unreal: Blueprint

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.

Blueprint.  Source: Unreal

Rendering - Unity vs Unreal

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:

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

Unreal:

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.

Real-time Cinematic Rendering - Unreal vs Unity

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.

VFX - Unity and Unreal Comparison

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.

Unity: Visual Effect (VFX) Graph

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

Unreal: Niagara

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.

Target platforms - Unreal vs Unity

Both engines allow cross-platform development including Windows, Mac, Linux, Android, iOS, PS, and Xbox, among others. 

Unity

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.

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.

Creator focused multiplayer XR experiences

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.

Animation - Unity vs Unreal

Unity

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.

Unreal

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.

Support - Unity vs Unreal

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.

Assetstore/Marketplace for Plugins and Extensions

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. 

Unreal Marketplace

Unity Asset Store

Subscription Cost - Unity vs Unreal

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

Which engine do developers prefer? Unity vs Unreal

Unity is preferred by around 62% of the game developers:

From 71,828 people interviewed last year by Stack Overflow:

  • 12,793 showed interest in working with Unity in the near future.
  • 5,154 showed interest in working with Unreal in the near future

Comparison Table - Unity vs Unreal

Feature/Criteria

Unity

Unreal

Visual Scripting

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.

XR Integrations

Native Virtual Collaboration Tools (Source Control)

Photogrammetry

Documented external pipeline

RealityScan (coming soon)

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).

Rendering Capabilities

Efficient/moderate quality by default. High quality is attainable with greater effort.

High quality by default. Performance may suffer for mobile devices without optimization

Animation Framework

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.

Networking Framework

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

WebXR

HTML5 build supported

Not Supported

Performance

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.

Documentation

More comprehensive

More fragmented. Not all systems are documented in a central repository

Support

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

License Costs

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

Target Industries

Cross-platform gaming, entertainment, education, Gaming, virtual production, arch viz, digital twinning

Gaming, industrial engineering, medical device, and pharmaceuticals

Learning Curve

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.

Cross-Platform Deployment

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

Some hot takes!

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:

  • XR platform features and extensions are almost invariably released to the Unity game engine prior to Unreal, such as the original Oculus Quest hand tracking feature. Sure, Unreal also receives these sorts of features, but you’ll have to wait a few months and when they do come to Unreal they’ll often be C++ APIs long before someone exposes them to Blueprint.
  • Unity could be described as a developer-first game engine. Contrast that to Unreal which could be considered an artist-first game engine. Historically Unity has provided documentation, and workflows that cater to programming, scripting, and game logic. Unreal can be great for visual scripting with Blueprints (that’s how I fell in love with the engine coming from my art background), but the leap to C++ is a significant one and Blueprints will only prepare you to understand the concepts, not the syntax of the language.

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.

  •  Nanite – allowing non-skeletal objects to render on screen with billions of tris.
  •  Lumen – Hyper realistic real-time global illumination.
  •  Metahumans – Unreal (hah) levels of detail without expensive digitization and rigging.
  •  Realtime Raytracing – lights and reflections simulating from all surfaces on and off screen.

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.  

 

Conclusion and Recommendations

Our recommendations for you to choose between Unreal and Unity.

  • If you are an XR Unity developer considering switching to Unreal. I do not recommend the switch. Only do so to explore how you enjoy Unreal engine, or as a safety precaution in case Unreal overpowers Unity’s control in the market.
  • If you are an XR Unreal developer considering switching to Unity. I do not recommend the switch. You’ve probably overcome the majority of the challenges of Unreal development for XR. Only switch if your specific project specifically requires a feature not available in Unreal.
  • If you are a programmer with no game engine experience, choose Unity. You’ll find the learning curve has a shallower slope.
  • If you are an artist with no game engine experience, choose Unreal. You will fall in love with the capabilities of Unreal but be prepared to swallow the bitter pill that there are technical limitations in XR.
  • If you have neither programming nor art experience, choose Unity. You will learn it more quickly and can always experiment with other engines after establishing a strong foundation.
  • If you need to produce a mobile/standalone game or app, with some distribution to XR, choose Unity.
  • If you need to produce a AAA game, with some distribution to XR, choose Unreal.
Access this collective and industry-wide effort to compare Unity and Unreal

 

Thanks to the XR Bootcamp mentors and team for writing this guideline!

  • Lucas Martinic, VR Prototyper, Asset Creator & Mentor at XR Bootcamp
  • Hammed Arowosegbe, Senior Software Engineer, XR at Vault Hill, Chapter President Nigeria, The VRARA
  • Ian Berget, Co-founder, and CTO of Launchvox Inc
  • Hernando Nieto Jaramillo, Unity 3D VR developer, PortalSense

 

© 2021 XR BOOTCAMP. All Rights Reserved