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 almost 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?

Well, there are a lot of comparisons on the internet. This is just short summary which should give you some basic overview, so you would know better what to look at.

  • 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. Check The evolution of 2D tools in Unity.

  • The Unity editor has low hardware requirements, but it won't run much faster on beefy hardware. So 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.

  • Meanwhile, UE4 will fully utilize even 128 thread CPU for things like code compilation, shader compilation, cooking game. Unreal - as engine targeting AAA since the beginning of time - it' optimized for crunching a lot of content. Now they're upgrading engine for open worlds, which will also bring performance and workflow benefits for smaller teams.

  • You need to set up some kind of "build system" for UE4 if going serious about C++ with Unreal or having 2 programmers (you need to compile C++ and then open UE4 editor, no magical compilation in the editor like in Unity). It's nothing difficult, and you need that for another sweet thing...

  • UE4 source code is available publicly, free of charge. You can make use of that for years, without paying anything. Access to source code it's important, you can easily alter small things in the engine - improve tools, workflows, fix bugs. As every single game engine could have some critical bugs - you can fix in UE4 if it's important releasing, i.e. while releasing a game.

  • Unity's easier to start with, partially because of extensive docs. Also, it can be a trap, it's easier engine because of it' much simpler. Fewer systems/features than UE4, usually "simplified" - seems easier to comprehend. The problem arises if you'd like to do something complex/advanced. It's often much harder with Unity. And 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 UE4 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.

  • UE4 is very friendly for artists and designers since you don't programmer to start. And this engine philosophy is to provide all the possible tools. 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.

  • Unity is friendly for programmers or maybe "scripters" would a better world. C# is easier to learn than C++, although... you don't use pure C++ for UE4. "Unreal C++" it's an experience closer to Unity's C# than pure C++. If someone wants to be a programmer, shouldn't be much difference for him. It' only the starting from Unreal C++ is more difficult, partially because official docs don't explain programming/C++ concepts - assuming everybody is programmer already...

  • Now, Unity is closing this gap - at least by introducing fundamental tools in the vanilla engine. They didn't include these things until recently: visual shader editor, input management. That's why the Asset Store is so important for Unity, the engine was missing so many things. And still missing some. There's no visual scripting (Unity acquired Bolt as a temporary solution, but their native solution not ready yet. Nobody uses Unity's networking, while UE4 networking is excellent.

  • Unity company doesn't create its own games and you can feel it. If you would work on the game, things from mentioned in the point above would be added a decade ago. Meanwhile Epic dog foods every single system. Either with Fortnite (so systems and editor tools tested game played by hundreds of millions of people on every major platform) or a special game developed to prove new systems (i.e. RoboRecall for VR). And this might the most important thing, UE4 tools are proven and often simply work. Meanwhile, Unity does usually create a shiny promotional movie and doesn't even release it as a project. We haven't ever seen a game that looks as good as Unity's internal demo.

  • There's no concept of scalability settings in Unity - simply the visual settings available in the engine, so users than adjust it to his/her hardware. It makes a huge difference when working on a game visually awesome 3D game.

  • 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, multiplayer. For all the reasons above, Unity is designed for simplicity and small games.