I like comparing products because most of the time it’s stupid easy to tell who’s the winner and does the job better.
That however, is not the case in eternal race of Unity and Unreal Engine, as both game engines are of insanely high quality, and the price is similar as well at least seemingly (free, pay small fee after your games start making money).
Major Unreal Features
As person who used both game engines for long time and is not biased in any way I feel entitled to write this post, so let’s begin.
The first, most important difference is the language support, so in other words, in what language will the game designer code? For Unreal its C++, and for Unity its C#.
C++ is relatively: lower level, fast, harder to code in, and older.
The fact that it’s low level means the language is faster and more suitable for coding programs, games and operation systems than higher level applications, such as websites. The higher level language is, the less place for optimization (often manual, difficult, and time consuming).
It is old therefore it’s less well thought, as when it was coded, the creators didn’t consider the infinite pool of options they can add to it, which is pretty common case among all coding languages. Then it’s being fixed with updates, however there’s a limit of how much a programming language can change from it’s initial version due to the risk of ruining backwards compatibility – older programs would not compile.
Unreal has many great tools built in, that you will need to either code yourself or buy (or find free version on internet) when using Unity.
Some people truly hate Blueprints, because it makes game designer job seem less hard than it really is. What is it then? Blueprint is Unreal’s name for visual scripting nodes.
It means exactly that instead of writing actual code, you will choose corresponding graphical node from window that poped up, and it will work exactly as code.
Blueprints were slower than C++ in the past however now it’s not the case. Now, Blueprints are equally fast to C++.
It means you don’t need to know coding at all, and still can create very functional game. Most likely more functional than what expert programmer would create without game engine.
Blueprints are great, however they also have negatives:
- You have to learn Blueprints. There’s same amount of work that is required to learn coding than it is to learn visual scripting in UE4.
- Skill not transferable. C++ and C# are transferable to other programming jobs. Here, you have to learn Blueprints, which take long time to learn, and when you decide to code applications instead of games, you won’t know how. You won’t have years of experience.
- You actively try to not use C++. Even if you force yourself to code instead of using Blueprints, the urge to pick easy way will be too strong.
- Slow editor. With time, your Unreal editor will start to lag even on really good computers. That’s because Blueprints take lot of space.
- Harder to keep them clean and organized. Even in small projects you will face “Blueprint Spaghetti” where there’s ton of nodes required to just do simple tasks, that are overlaying each other and take huge space. Its detrimental to your game creation process because it will add way more complexity than learning programming language would.
Best Unity Traits
All the mentioned factors are rated with relativity to Unreal.
C# is relatively: higher level, almost as fast, easier to code in, younger, has garbage collection.
People would worry that if C# is higher level then it’s slower, and that’s usually true, but here the difference is so small that not you and not the biggest game developer companies will feel the difference. And that’s how things are in 2019, it will change for the better when Unity Technologies finishes major changes by Rebuilding Unity’s Core.
It’s also much better thought language as it was coded later, and coding in it is absolutely entertaining and simple. You will love C#.
It’s higher level, therefore you can code many other things with it, not only games or programs, but also websites.
Garbage collection means you won’t need to manually free programs from memory. Many developers forgot to do this in languages like C++ and that’s why their programs after running for longer, reach insane memory usage numbers and lag the system or crash. In C#, you don’t have to do this.
For me, C# looks like the winner here. Let’s not forget about other huge differences that will impact the workflow.
Unity Editor takes 4 times less space than Unreal’s.
And not only that, it also works faster, even in case of huge games and many files.
That’s partially because your project has smaller files (no blueprints, just code), but also because Unreal has way more features, that unfortunately impact the workflow. Have you even tried developing something on laggy computer? That’s the worst. Simple things will take you lot of time. And that doesn’t only happen to basement computers or these from 2005.
Editor speed is major factor. The faster your computer is and the more program is optimized, the more responsive program will be. You will triple developing speed by choosing faster engine. Or by upgrading computer.
In case of Unreal you can even wait few minutes waiting for your C++ scripts to compile. Some people even report even waiting 30 minutes or more. And that’s just see small change, like changing the color, fixing the letter case from “dragon” to “Dragon”, and such.
Imagine having to wait few minutes after each time you compile code just to see if it works, then out of boredom checking Facebook, and in the end forgetting about your game for next 30 or more minutes.
Time is valuable so don’t do that.
This is absolutely huge Unity benefit, as it impacts the designing speed. Unity C# scripts open and compile instantly.
This may seem like a small benefit, but it’s actually insanely huge factor. As a developer of any kind, whether you code websites, games, programs or OS – you will search internet a lot to find solutions and sample code.
It is not stealing, I’d say it’s more like borrowing, learning, improving and implementing the code that you found online.
You will do this all the time. I’d even go as far and say that, as newbie game designer, you will only copy the code from internet instead of writing your own. And that’s alright.
In case of Unity all it takes is two clicks or two keyboard combinations to copy and paste.
In case of Unreal, you will either find videos (that take long time to follow and replicate, even up to 30 minutes to just create simple thing) or screenshots. In both cases it will take long to copy it as you will have to pick node by node. And it may not work in the end. Super frustrating.
Reasons To Use Unreal
Go through the list and think if any of these applies to you.
I Am Too Lazy To Learn Coding
Unreal is heaven if you for some reason don’t want to learn coding.
Don’t have time? Don’t understand it at all? Then pick UE4 and create your game with Blueprints.
Games made with visual scripting aren’t any worse than games made with C++.
I Don’t Mind Long Compile Times
If you still decide to code, then not only you have to deal with ugly C++, but also with long compile times whenever you save a file and want to test changes.
It may take minutes whenever you do it, while its instant in Unity.
Sounds like deal breaker for me.
My Computer Is Top Tier
I mean you need really good computer for Unreal.
Most heavy games you’ve ever played are not comparable to how heavy this engine is.
And it only grows along with your project.
My suggestion is to install it, and see if Unreal lags with many objects added to the level.
Then choose engine accordingly to the result.
I Prefer C++ Over C#
I don’t understand how can one prefer C++ from C#, excluding cases where one doesn’t want to admit how much times one has spent on this language.
C++ is not worse in any way, but it’s much harder, less bearable and intuitive.
If you have specific reason to learn/use C++, or have no troubles coding with it, and prefer it from C#, then go for it.
I Plan Creating Multiplayer Game
Unity is also perfectly capable of creating multiplayer games. The difference is that Unreal does it natively, while Unity has it in plans.
(Unity also does it natively, but the module is a little bit outdated, and there a new one coming.)
So if you want to create multiplayer game of any sort (MMO, matchmaker, rooms, etc), and don’t want to use third party framework in Unity, nor wait for Unity’s new native solution, then go for Unreal.
I Am Not Afraid Of Less Job Opportunities
Unreal is 20 times less used by developers than Unity. And between job offers theres similar difference.
It is much harder to land Unreal job, in my area there’s one per few months, and few Unity jobs per one month.
Therefore Unity is safer to learn career-wise.
When Is Unity Recommended
Although usually people switch to Unreal from Unity and not vice versa, I think they don’t count the major factors.
I Want Bigger Chances Of Finding A Job
As I specified above, there’s way more jobs in case of Unity.
But hey. Nothing is guaranteed, you may not find game designer job even if you learn this tool deeply.
But nothing stops you from trying. Learn it, create some games, put them on your portfolio, and send your CV around.
I Prefer C# Over C++
You can code websites any many other apps with C#.
Its multipurpose language that’s worth learning.
But the best thing in comparison with C++ is C#’s syntax.
I Have Slow Or Average Computer
Having a weaker computer is equivalent to having a good computer with a lot of things running on it.
That’s why I love Unity.
I can have over 20 tabs opened, listen to music on YouTube, have Blender in the background, and many other things as well!
And Unity still doesn’t lag.
I Just Love Coding
There’s no visual scripting in Unity. You will have to code.
Its not that hard honestly. People who don’t want to learn coding, most likely just didn’t have the “aha, that’s how it works” moment yet.
Once u grasp few basics and try to code few simple things, general syntax becomes super easy to read, understand and write.
I Want To Learn
With the above step, there’s lot of thinking and learning being done whenever you use Unity.
For comparison, in Unreal although you learn too, there’s a huge no-brainer factor as you just copy Blueprints from other people videos.
This is similar to coding, therefore you learn whenever you fail or success, but the whole process wastes so much time on following video tutorials and trying to implement their nodes in your project.
That time could be actually spent to brainstorming the code (that you just copied from internet) while trying to understand it.
Due to this very reason, learning Unreal is slower than learning Unity and C# is.
I still regret how I’ve spent hours following some video tutorials just to get easy thing done in UE4, where in case of Unity you would just copy some sample code, read documentation, adjust the code, and it would be done before you even start trying to understand whats going on in Unreal.
Top Mainstream Alternatives
Unity and UE aren’t the only engines. There are more:
- Amazon Lumberyack.
- Game Maker.
- RPG Maker.
But they aren’t really comparable to Unity and UE4.
Maybe except Godot, which is good if you want your engine to be completely free (even without paying small fees after you start selling your games) and completely open source.
But there’s comparable difference in number of resources available for Godot and Unity (the latter number being much bigger). If you are a newbie, then its not advised to try Godot, because there aren’t many code examples on internet.
Tool Importance In Bigger Picture
There are people who say that “tool is not important” and that “what matters is not tool but skill of developer”.
Skill matters, but that sentence is huge BS. Tool choice is of significant importance, and your skill depends on it.
But not only your skill, also your product, your income, your customers’s happiness, and so on.
That’s why I always make sure I have the best tools for whatever the job is, even if its just cleaning Windows’s temporary files.
Starting project as serious as designing a game requires the best tools, otherwise we will waste ton of time, fail to accomplish something relatively simple, and start over with different tool after few months of hard work.
Months that could be spent on creating our perfect game.
I presented two best game designing tools to you, whatever will be your final choice – you will not regret, and your game will be of top tier quality.
I strongly think of Unity as big-time winner. Both engines are great but Unity workflow is just fantastic. Easier and faster to learn, faster to develop your game, works on slower computers, makes learning actually entertaining, and so on. Trying to make game work through blueprints or ancient C++ is for sure frustrating experience, and not my cup of tea.
And you? Which engine will you choose?