Skip to main content
unreal-engine-4free

Why I’m choosing Unreal Engine 4 over Unity 5

First of all, this post is not intended to initiate or encourage a flame war, neither to be a deep comparison about these tools. This post is just my personal opinion about the matter, feel free to disagree with me or contribute with it in comments.

As written in my previous post, this last week I was trying to decide which engine I’m going to focus from now on – Unity 5 or Unreal Engine 4. Both tools are really great, with huge community, good documentation, several resources, etc. In special, Unity has grown A LOT since past few years acquiring a legion of fans (just look at ludum dare!).

However, I think Unreal Engine is a better option FOR ME, because:

Engine features

This is actually the most important reason of why I prefer UE 4.

Unreal is a mature tool with several years of development, so it is natural to UE have a lot more stable features compared with Unity. For example: material editor, behavior trees, animation editor, visual scripting, great debug tools, general game structure, etc. But…

Unity doesn’t have feature X, but you can find a solution for it on the asset store

I read this a lot. Unity does not have scene transitions, but you can buy it in the asset store for 75$. Unity does not have a node-based material editor, but you can but one in the asset store for 90$. It is good to know that there are so many stuff in the asset store, but still:

  • There are several essential things that Unity should provide.
  • Most assets are over-priced – 75$ in a scene transition? Really? – Moreover, it is pretty easy for an American or European to buy a couple of packages with 200$ or 300$, but for Brazilians trying to make some small stuff, 300$ is A LOT OF MONEY (in this very moment, this would be equivalent to 1500$+ for an American or 2000$/2000+ for an European).
  • Lot of assets sucks – the Unity team seems to understand that quality matters just now, and still they don’t have a practical solution for it.
  • Lot of assets are incompatible. Now suppose you buy 3 cool assets for 1500$/2000$ and then discover that you can’t use them together.

Again, it is awesome to have lots of useful stuff on the asset store, but I (with big I) don’t like and can’t afford this current model.

Programming and game structure

Unreal uses C++ while Unity uses C#. I need experience on C++. Not preference on this one, only utility.

Unreal also uses a visual scripting scheme called Blueprint – which enters on the feature discussion above. Blueprint is awesome and deserves an article exclusively for it.

Still in the programming aspect. I am a lot more comfortable with Unreal structure. Every time I try to do something on Unity, I end up frustrated. Unity enforces some crap solutions based on its entity-component system. Just look at the number of singletons that people spread around forums.

Open source

I’m an open source guy, and I believe that OSS is a sustainable solution for any kind of application. With open source softwares – in special those maintained by a big company – we have a more efficient flow of bug discovery/correction and the guarantee (in a certain level) of good features, since users can evaluate, criticize, and contribute directly to the code, even before its release.

On the other hand, companies with proprietary tools must have a bigger investment to supply this quality and efficiency on the development. Moreover, with proprietary tools, your project will be tied and sometimes hanged, for example: the Brazilian government lost MILLIONS of digital documents some time ago, because they were all in an old proprietary format that were deprecated and the company didn’t provided any real conversion solution for them – after that the government started to adopt open formats for their documents.

The Unreal Engine 4 is open source, they capitalize on a percentage over the revenue of your game. They also provide several GOOD QUALITY assets and example for free (for non-commercial usage), so you have a big base to start your prototype and study.

Conclusion

In summary, I’m going with Unreal because:

  • Features
  • C++
  • Better structure
  • Open source
  • Good base assets

Reminding that, this is a personal choice based on personal motivation and preferences. I don’t want you take this as confident basis for you. Both Unity and Unreal are great tools, try them for yourself.

3 thoughts on “Why I’m choosing Unreal Engine 4 over Unity 5

  1. Hey there. For some reason a page of this blog was open among the thousands of others I keep open in my browser :P and I decided to take a look at the front page and found this very interesting article. Since UE4 went ‘free’ I’m considering it as a potential engine for my projects and I’ve tried it recently. I agree with most of what you said, specially the ‘features’ part. Unity is becoming a kinda 3ds Max since for a lot of things beyond the basic you need a ‘plugin’. I like procedural generation and fully ‘dynamic’ (in the ‘editable’/’modifiable’ sense) games and I’ve hit two walls: 1-Navmesh can’t be generated on runtime, what makes the builtin AI useless for rt-generated stuff, specially because carving is damn slow so you can’t even do it the hacky way, and 2-Unity is completely thread unsafe. Threading is extremely important for ‘dynamic’ games. Of course you can still do most stuff on a separate thread, what I’m doing atm for my current project, and queue the API ‘instructions’ to be executed on the main thread, but that sucks and I don’t know why, but the whole editor tend to crash when you’re simply passing object references to other threads (without calling functions, etc.). Well, back on track: I’ve used Max in the past and I really hated that aspect of it (plugins for everything). Specially when you had to upgrade what was pretty much guaranteed to break all the plugins. It’s a sad fact that Unity is going that direction and the community seems to be ok with that. There are of course very good open source stuff for Unity out there, but the quantity is very limited, I think it’s mostly because people don’t really want to put much effort on improving such a ‘closed’ platform.

    I disagree on programming, I consider C# a pretty nice language and I really enjoy working on it. All that I remember from the days I programmed in c/c++ is pain and suffering :P. The UE4 API is really good and it makes programming very productive and easy, however, you can’t compare it to C# imho. The only thing I don’t like very much in C# is that Mono is much slower than the MS implementation, specially the Mono in Unity which is extremely outdated and terribly slow. However, since MS opensourced the CoreCLR and the other stuff (incl. mscorlib and the builder), I’m extremely excited with it overall. I’ve benchmarked CLR exhaustively and I found it to be much faster than any JVM out there (they say hotspot is faster than openJDK, I found them to be pretty much the same in performance, and CLR blows both of them outta the water (on windows of course)), so I see absolutely no reason to use a language such as C++ nowadays, unless you’re into masochism and that kinda stuff :D.

    I also disagree on the component-based model. Just as class composing and not subclassing is, imho, the right way to go in most cases, a component-based model is, imho, the right architecture for most games (not to say all). What I don’t like about Unity though is that it doesn’t have specialized object types. You have to use GameObjects for everything, and GameObjects are terribly slow.

    Blueprint is not for me too. I just don’t see the point… The only explanation I can think for it is that it has an appeal for noobies. Of course it’s always great to have a ‘v-high-level’ option for when you don’t need the performance (e.g. menus, level selector, ui in general (even in-game), etc.) but I don’t consider BP the solution for that. I’d rather use python or even lua (which I dislike very much). And from my benchmarks I wouldn’t be surprised if even standard cpython is faster than BP, let alone pypy (which is a mem hog) or perhaps even a subset like godot has. BP is terribly slow!

    The built-in features and opensource are the reasons why UE4 really shines imho. Another point is the community. The Unity community is, with exceptions, (sorry the expression) retarded. I’m not talking about noobies, although the forums were invaded by them… I’m talking about loads of intractable ‘fanboys’. Just look at the threads on the new ‘personal edition’ splash screen. I mean, that was a terrible decision imho, and one of the reasons why I’m dumping Unity for good, but you can’t even have a conversation with the community nowadays. Other people may have an opposite pov and I accept that, but the community is full if totalitarian extremists, they won’t accept any opinion that’s not their own. This may sound silly but I really like to have a civilized community to participate.

    Another point is the overhead. Unity 4 was almost perfect in terms of overhead imho. If it had a modern Mono it would be the perfect engine in terms of performance (both rendering and game logic). Unity5 is a disaster (specially on android). But it is still much much better than UE4. The overhead is specially on the rendering pipeline. I don’t know if it’s because UE4 have to do extra work under the hood to have all the advanced features rockin’ or if it’s doing something very lame like racalc’ing normals every frame :P, but the fact is, there’s quite a bit of overhead in there. What is very bad for simpler games since they’re gonna hog the system like BF4. For mobile UE4 is not very good too, not only because of the cpu/gpu overhead but also because the apk for a flappy bird is gonna end up with 100MB :). For 2D it’s unsuitable atm, at least for my quality standards. Paper2D still has a long way to go, and that combined to all the cons, incl. the fact you pretty much have to use a 3D phys engine, makes it unsuitable. On Unity you move some images to your assets folder, drag’n’drop the sprites to the viewport, and you’re good to go. Draw calls batching works perfectly outta the box so unless you’re doing some crazy shit you won’t have any problems. On UE4 you need patience and luck to have a 2D game that won’t overheat a modern discrete PC graphics card.

    What I’m really looking forward ATM is FNA, which is a crossplat resurrection of XNA4 (which I’ve never used but heard wonders). I know we’re talking about high-level engines and stuff, but I’m surely gonna consider that for my next projects since ATM I’m sticking with the godawful Unity for my current stuff. For simpler stuff I don’t think a fully featured engine like Unity/UE4 is optimal, and if I ever adopt a framework for my simpler stuff, then I’ll make sure to adopt UE4 for the more complex ones since it has all(/most) the features I could possibly need and for complex games a ‘bloated’ engine is not only completely acceptable but also the optimal solution imho. At least for us solo gamedevs :).

    I like LibGDX but I can’t stand Java. I really hope something like it (with libgdx-ai and bindings/wrappers) pops up but for C#. That would be nice.

    Sorry the Wally Text :P.

    Alan

  2. This was really good to read. I have read a lot of comparisons between unreal and unity, but rarely anyone mentions the most important point- unity requires us to purchase a lot of assets which are not free. Then what’s the whole point in being free. Also one less important thing which bugs me is dark theme is only in pro. i mean really Unity? don’t be so silly. let the “free” users not hurt their eyes from the white theme. so after reading a lot of comparisons and reviews i think i will use Unreal, and hopefully i will not change my mind.

    The only reason i wanted to use unity is because i want to make android games, and i want the file size to be smaller than 50 mb. but i guess, now i will have to get comfortable with 100mb.

  3. You’re doing it right. Haven’t touched Unity since v3.* back in 2011. I distinctly recall looking at Unity Script and wondering “wtf were they smoking”. Looking at how the asset store has become a platform for micro-transacting developers to death I’m completely disinterested in using Unity for personal projects.

    5 years on and I’m considering using Lua to get around having to learn Unity script. I’d rather just switch to Unreal but unfortunately I’m not in the position to make that decision at work.

    Best of luck to both of us I suppose.

Leave a Reply

Your email address will not be published. Required fields are marked *