Differences between Unity and Unreal

Let's rephrase here a fundamental question. I'm considering using Unreal, but many people seem to be using Unity for making indie games. I'm never planning to go into AAA games, I only want to make...

Updated about 4 years ago

Let's rephrase here a fundamental question.

I'm considering using Unreal, but many people seem to be using Unity for making indie games. I'm never planning to go into AAA games, I only want to make indie games as a solo developer(maybe in a small team). Is Unreal the right choice for me? Does Unreal have significant disadvantages compared to Unity for an indie dev or a small team? Is it slower/harder to make prototypes and small indie games in Unreal? Why do so many people use Unity instead?

This is just a short summary which should give you some basic overview, so you would know better what to look at. It aims to clarify some doubts and myths.

Unity is great for 2D games, mobile games

  • Unity shines at mobile development, lightweight on phones. Small engine footprint, even now possible to embed the Unity app in another app.

  • Unity now supports every mobile monetization method possible (ads, in-app purchase) - they focused for years on it.

  • Unity is much better for 2D games. Unreal support is very limited, it has only Paper 2D plugin. Yes, a single plugin and nothing around in the engine is designed with 2D in mind. Even the orthographic camera doesn't fully work with Unreal's lightning. Meanwhile, Unity provides a lot: 2D lightning, animation tools, sprites, tilemaps. Read more about the evolution of 2D tools in Unity.

  • Lightweight mobile games is a major reason why there are more Unity games published than Unreal ones. There are over 4 million apps on App Store alone.

  • Unity is all about being "simple, easy to start and universal".

UE4 is designed for small teams

This is the myth that Unreal Engine is meant for large studios. It's essential to debunk it here.

UE4 was designed with indie teams in mind as Epic already filled "AAA studio niche" as it was possible at a time. That's why we have blueprints, visual scripting and dozens of tools working with each other out of the box. Especially if somebody working on a game when gameplay uses characters or heavily-directed content (implementing and scripting small things in every place of the game instead of relying on programmer every day).

Unreal rendering focuses on physically based rendering and perspective camera. Making stylized games still possible, there are dozens of small stylized games done in UE4. You can make a racing game or spacecraft simulation game, the engine doesn't focus on FPS games (it's not UE3).

It comes with a lot of tools out of the box for handling characters, skeletal animations (not limited to humanoids), rendering such things as hair, fur and eye shaders. It's extremely indie-friendly in this regard.

Check examples of solo devs and small studios utilizing the engine - links to blog posts on the official blog.

It's already a tradition that Epic post a blog post with a list of stunning indie games developed with UE4 after major showcase events

How much engines cost?

  • Unreal Engine is now free to use. And you don't pay anything until you reach the first $1 million game revenue! Check FAQ with links to licensing terms.
  • Unity's personal license is free, but it comes with some limitations. Check their plans and pricing.

Tools & learning curve

  • Unity's easier to start with. It's much simpler, fewer systems and features than UE4, it's easier to comprehend. Although it's not easier for non-programmers who want to script anything, it doesn't come with visual scripting out of the box.

  • There's less learning of Unity since this engine doesn't provide reach gameplay framework out of the box. The built-in Unreal gameplay framework is used commonly to create games focusing on characters. First-person perspective, third-person view, but also top-down. It simply comes with character movement, character-oriented camera manager, advanced animation system.

  • This previous point doesn't matter much if your game doesn't utilize 3D characters. Or you prefer to establish your own gameplay framework from scratch - "make engine your own".

  • The issue can arise in Unity if you'd like to do implement a complex game. It's often harder with Unity if working solo or in a small team. Keep in mind, we're not talking about "AAA complex level" - such division doesn't truly exist. There are no "indie features" or "AAA features". Every project uses a different set of features. You might not need 90% of Unreal features, but you might need all complexity and flexibility of a single system, i.e. Sequencer - saving a lot of time and effort while working on animating things in your world.

  • Unreal provides AAA tools for many domains out of the box. It's relatively easy to work with PBR-based tools and achieve "AAA indie" quality. The engine comes with visual scripting and many similar node-based editors. The list of tools and features provided with the vanilla engine is really long...

  • Skeletal animation system is extensive and provides a lot of tools to non-programmers. Working with animation is sweet, i.e UE4 is the common choice for fighting/action games. A new Control Rig system allows for procedural authoring animation just in the engine; also possible to keyframe animation through Sequencer and bake the result to animation asset.

  • There are no "must-have" plugins for Unreal Engine to get from its marketplace. Engine plugins serve as workflow improvements or providing features for a specific type of project.

  • It makes UE4 very friendly for artists and designers. The engine philosophy is to provide all the standard tools out of the box. That's why it's so huge piece of software and it can be intimidating for beginners. You don't need to learn everything, just learn what you need for a given game. And you don't programmer to start since you got node-based editors everywhere in the engine.

  • Unreal Engine 5 promises to bring huge workflow updates to 3D artists. No more retopology of meshes, creating a low-poly version, generating LODs and baking normal maps.

  • Having so many systems and tools out of the box, sometimes you might feel forced to do things in "Unreal way". That's sometimes some issue for developers/projects working on unconventional projects, or when doing things in a way designed by Epic engineer happens to be confusing.

  • Now, Unity is in process of adding fundamental tools to the vanilla engine, i.e. visual shader editor, input management. That's why the Asset Store was so vital for Unity through years as the engine was missing so many things. Still, there's no visual scripting - Unity acquired Bolt as a temporary solution, but their native solution isn't ready yet.

  • Unity's strength is flexibility in customizing rendering, how the render passes are arranged. It's improved with new Scriptable Rendering Pipelines - High Definition Render Pipeline and Universal Render Pipeline. This is much harder with UE, it's required to dive into C++ and modification of the engine code.

  • Nobody uses Unity's networking (they working on a brand new solution), relying on third-party solutions. Meanwhile, UE4 comes with the excellent multiplayer support out of the box. Unreal's gameplay framework is built with networking in mind. Gameplay Ability system is a specialized plugin preventing you from reinventing the wheel while building multiplayer mechanics.

Programming

Unity is friendly for programmers.

  • C# is easier to learn than C++, it feels mostly like a general-purpose scripting language in Unity.
  • If you don't get basics of programming yet, it might be very efficient to start learning programming for video games from Unity with C#. It would smoothly introduce you to coding and teach basic concepts. This might be recommended even if you plan to work with Unreal later - much easier to grasp Unreal C++ after that. And you would understand what you're doing in blueprints - sadly, official docs and many popular Youtube tutorials on blueprints don't explain programming concepts, so your blueprint code quickly gets messy.
  • Visual Studio works nicely with C# while editing C++ can be very cumbersome without proper plug-in (more below).
  • Both engines support Visual Studio Code, although that's rarely used for bigger games. In many ways, it's a supercharged Notepad.
  • Rider IDE supports Unity and C# for some time. Support for Unreal is coming, we have Preview for now.

People are often scared of learning C++ in UE4. It comes from the fact that pure C++ requires a lot of low-level knowledge, assembling your toolchain. The thing is you don't use pure C++ with UE4, the same way you don't use pure C# with Unity. Thanks to that writing C++ code for UE4 is much, much easier than regular C++. Actually, it's more similar to Unity's C#.

  • Epic built a multiplatform C++ library, tailored for game development. This is the engine's core. Something we often simply call "Unreal C++".
  • It provides low-level mechanisms (reflection, object handling with garbage collection) working under the hood. It brings the C++ environment closer to C# or scripting languages.
  • Unreal C++ provides its own libraries supporting math, vectors, strings (with support for text localization) and many other standard things. Just to make development easier, preventing game programmers from writing his own libraries for every single game.
  • Writing code is simplified, thanks to dozens of built-in class, function and property specifiers. Also macros and many utilities.

Be warned, Unreal C++ environment doesn't provide a perfect way to compile the project without ever closing the editor.

  • There's a mechanism called Hot Reload (triggered by a huge button in editor toolbar) which allows rebuilding C++ code even if you changed code in the C++ header (.h file) or even added new classes. Unfortunately, it's not 100% stable, it causes occasional data loss. Many people stumble such issues with Hot Reload sooner or later. After asking about Hot Reload online, you'd often hear a simple "Don't ever use Hot Reload, it's unstable".
  • However, Epic integrated Live++ to all developers since 4.22 - it allows you to safely recompile changes in .cpp files. It's quick and 100% stable. Even if the game is running! Super sweet, although limited only to .cpp files. It won't work with changes made to .h files.

If someone wants to be a programmer, shouldn't be much difference for them, C# or C++. Albeit learning curve for Unreal C++ is steep, partially because official docs don't explain programming/C++ concepts - assuming everybody is programmer already...

It's very important to begin a journey into the land of Unreal C++ with proper tools. C++ is punishing those who try to approach with bare hands.

  • It's very important to use plugins like Resharper C++ with Visual Studio. It's not the fault of Unreal, Visual Studio tools don't handle C++ well. Especially large codebases like game engines. It's standard for a C++ programmer to not rely on Intellisense tool provided with Visual Studio. Read more on efficient Setting up Visual Studio for Unreal Engine.
  • For those looking for an even better tool than Visual Studio, Rider for Unreal Engine is coming. And it's preview is already praised by many programmers. There won't be a free version, however.
  • One of the most annoying things that remain in Unreal C++ are compiler/linker error messages which aren't very clear, especially for beginners. Using tools like Resharper++ helps tremendously, it does properly highlight a lot of simple issues. Still, if you stuck at something, try asking questions online. Communities like Unreal Slackers are an amazing help. Just don't expect them to read your mind, explain your issue properly.

In theory, you could live without things below - especially if you've got only a single programmer in the team. However, this is essential for efficient work.

  • UE4 source code is available publicly, free of charge. You can download source code and debugging symbols through Epic Games Launcher. Engine stops begin a black box, you can truly understand how it works. It's not unusual to copy-paste small portion of engine code, often to quickly set up your own editor tool.
  • Set up some kind of "build system" if having 2+ programmers - you need to compile C++ and then open editor, no magical compilation in the editor like in Unity. It's nothing difficult, it's great for non-programmers to obtain compiled binaries from the repository. And it makes easier to take advantage of the next sweet thing...
  • It's totally optional, but it's also common for Unreal teams. Ignoring pre-compiled engine available through the Epic Games Launcher and compiling engine from source. We call it a "source build". After that, you can easily alter small things in the engine - fix critical bugs, expose hidden things to the project, improve your tools and workflows.

Go ahead, check Introduction to Unreal C++ in official documentation :)

PS Epic purchased company behind SkookumScript for a reason. This a speculation, but they might come up with a custom scripting language designed to fill a gap between blueprints and C++. And that would serve us much better than just stitching another general-purpose language to the engine.

Stability of technology

  • Unity company doesn't create its own games. You can feel it this engine isn't used daily by the internal team working on complex games. Meanwhile Epic dog foods every single system. Either with Fortnite - systems and editor tools tested game played by hundreds of millions of people on every major platform. If Fortnite doesn't use specific systems, they build an extensive demo or small game (i.e. Robo Recall for VR). And this might the most important thing, Unreal tools are proven and often simply work. Even if marked as "beta".

  • It's important to note that many Unity developers recommend using LTS (Lont Term Support) releases of engine for production. Instead of so-called "tech releases", which are introduced a lot of changes, new systems and tools - but often quite unstable for use in development.

  • Unity does usually create a promotional movie and doesn't even release it as a project - it's confirmed that some demos used renderer features that weren't implement in the engine afterward. For these reasons, we haven't ever seen a game that looks as good as Unity's internal demo. This is a weird strategy.

  • A lot of indie studios switch from Unity to UE4 for the next project because Unity wasn't enough for more ambitious projects: more content, higher visual fidelity, more power for non-programmers, easier prototyping. A notable example would be InXile switching to Unreal for the next RPG after Wastelands 3.

  • Unity is in process of upgrading the entire engine for bigger projects and teams, but this an enormous undertaking... It's basically "Unity 2nd generation", but changes are integrated into current Unity. It means the engine goes through huge architectural changes and some studios decide Unity is too unstable to develop 3D games for now. This is Reddit discussion under the opinion of Rust creator on the current state of Unity.

Unreal editor requires a better hardware

  • The Unity editor has low hardware requirements, but it won't run much faster on beefy hardware. It's great to make small games on a laptop, bring it to co-worker space or anywhere. Not so great for projects with a lot of code and assets, Unity won't scale that well.

  • UE4 requires more powerful hardware as it targets 3D games. It might get expensive if you're about developing the hi-end 3D game on a laptop. Check the article on Recommended Hardware for UE4. In return, the engine handles asset-heavy projects way better than Unity. As engine targeting AAA since the beginning of time - it's optimized for crunching gigabytes of content. Engine fully utilizes even 128 thread CPU for things like code compilation, shader compilation, cooking game. Now Epic is in process of upgrading engine for open worlds, that already brings performance and workflow benefits for smaller teams.

  • It's a huge productivity boost to use two screens with Unreal editor. It wasn't optimized to use on a single screen with resolution lower than Full HD.

For beginners

Youtube engine comparisons tend to overgeneralize, saying "both engines have 3D tools, thus are similar". And actually providing very little information, but... this one is a really good comparison from the perspective of a beginner!