Digital-Tutors: Unreal Engine 4 vs. Unity: Which Game Engine Is Best for You?

As a Unity “refugee” I’d like to put a few thoughts in…

I jumped on the UE4 bandwagon one week after subscription opened. That’s how long it took me to get my head around and realize where my future direction lies.

What I do not understand though is why is everyone so desperate to get C# in UE4?

Unity has C# and I never found it to be that “hot” - matter a fact, the whole process felt cumbersome. You couldn’t be a game designer without knowing C# or their JS version of the API. In UE4 you do not have to know C++ and can still design an entire game without writing a single line of code.

No, I am not code shy and I think my past work on the Linux UE4 shows that, but I just feel there’s a deeper market penetration (read more users) through Blueprints/C++ than with C#. Besides, if you are going to learn a programming language, C++ should be it, as it offers the most skill development/re-purposing than C# does. If you learn C++ you can apply that to most platforms. C# really only applies to Windows, in general.

The issue of UE4 being “heavy” on resources, let’s not forget that Epic is building a next-gen game engine. Think not of today, but of tomorrow. It’s still very much work in progress. :slight_smile:

But, I believe the most important issue is the economics. UE4 gives you an ability to start with just one-time $19 investment, and get everything (including the source code, platform support etc), while Unity does require you to invest $1,500 + $500 for each additional mobile platform. Not to mention you will need at least half a dozen packages from the Asset Store to supplement the lack of basic features in Unity that you get with UE4 OOB. The argument here was that with $1,500+whatever else you get to keep your Unity Pro license. To that I say, for $19 I get to keep whatever I got from Epic as well.

Also, many people have complained about the 5% gross revenue share with Epic, plus 20-30% needed to pay to various app stores (Apple, Google, etc). Fact is, many indie devs around the world live in less-than-ideal economies and countries. And even if they lived in so-called 1st world nations, most of them will not see $3,000 in sales from their project/game release, which means that Epic will not even bother you with those 5% revenue share. You keep what you sell, literally. Making $2,000 is still a better payout than making nothing and with a $19 initial investment, it’s a real no-brainer which engine to pick.

According to some, Unity offers quicker/easier prototyping/iteration, but that’s up for debate really. What happens when you need to take your iterations to the next level and actually produce a final result. From everything I could see, that jump from iterations to a product is one of a magnitude. With UE4 it seems to me that things are more like stepping stones towards the final goal, where the curve is not so steep. But that could be just my own perception of things.

Either way, there was at least one lengthy thread on Unity forums about UE4 vs Unity you can look up. In it the “Unity loyalists” stood their ground till the end, continuously ignoring the other side (or even the facts). I guess just as Tobbo said (and I’ll paraphrase): "You know by posting in the Un(-real/-ity) forums you’re going to get biased opinions. :stuck_out_tongue: "

To my knowledge, UE4 now can support C#, via a plugin from here: Mono for Unreal Engine - Miguel de Icaza

And I’ll say this, probably at this point, the topic of UE4 vs Unity is debatable. But in a year from now (or less)? I guess Unity will have no legs to stand on. To me, it’s a matter of time before Unity gets completely doomed.

It’s certainly not everyone, more like a vocal minority. My guess as to why is mostly fright of C++ like memory management, pointers and all that stuff that is somewhat stigma. You may look at some UE4 C++ and think that’s overly verbose and I could do that so much faster in C#. But once you actually start to dig in you see that some of that “excess code” you would need to write just as much in C# because you’re still going to use the UE4 API where most of this boilerplate comes from. And most importantly you’ll notice that a lot of that nightmare C++ stuff doesn’t even exist in UE4 because Epic highly customized it.

The other reason of course is that Unity is/was very popular and has C#. What’s a bit of a mystery to me is why people want C# specifically. I mean, aren’t there better alternatives for purely scripting and being productive with it? Python? LUA? Skookum? The latter especially. If you read this (and it turns out to be as advertised), who would still want to use C# based on Mono with all its potential present and future pitfalls when you can have a lean and highly game-specific language like that?

C# Is very easy to learn and you don’t mind the memory “garbage collector” is automatically managed by C#.
you do not bother, if the objects exist in memory, if they are not used, they are automatically destroyed.

I am not an expert, but i think , it is a matter of convenience relative to C ++

I have used Unity Pro for 4 years. For the current project, Unreal is better for my needs.

I guess that’s the thing, whatever is convenient - works. Although, it seems to me that the trend for some people will be continue using Unity for a current project and then switch to UE for future ones.

As I said before, learning C++ means getting a skill you can put on your CV and go to the bank with it, regardless whether you work in the game industry or not. With C# I am not so sure, but then again I haven’t been looking on job boards what’s in demand lately so maybe C# is really the next big thing.

And using C# for scripting in UE4 is an overkill, when much nicer solutions are as mentioned above Skookum, LUA, Python…but I’m being biased against C# I suppose. :slight_smile:

I’m not an advanced user in UE, but already working for it.

Currently, I’m using Unity3D to mobile projects and the unsupported plataforms of Unreal, but desktop games are being worked with UE, I really enjoy the power of UE much more than Unity and love the contact we can have with the devs and all the attention they have with the users, explaining things and doing live sessions, this is !

Kind Regards.

Skookum is probably a lot easier than C#. As for garbage collection, it’s in modern C++ and especially in UE4. That’s what I meant with stigma.

One thing I believe Unity really fails at (and I say this knowing full well that Unity is an engine and very easy to pick up), is the gating of Pro features. The reason why Unity has the sort of reputation it does is because all the really pretty features that make a game look really nice and polished is behind a $1500 paywall (just considering PC only). It can look great, games like The Forest have proven this, but all the plugins required to get it to that level requires that pro license. So all the games released by hobbyists have a sort of unpolished look to them because in most cases, they can’t afford the pro license (an indie team generally doesn’t have this problem).

What I think needs to happen is that they allow you to use Unity in full, with all of its features unlocked, this allows everyone to be able to get used to and competent at those pro features, and when it comes time for shipping, Unity can throw up a message saying that “Hey, you’re using Feature [x], which is a pro feature, so you cannot publish this title until you get the license.” or something like that.

Just my $0.02.

C# doesn’t apply to Windows in General, if you’re a Unity user you should know Mono allows it to be cross platform compatible. Also a lot of reservations about C# don’t stem from C# as a language, it’s because of the god awful ancient version of Mono in Unity, it has GC issues, it’s buggy in areas and it lacks features but that’s not specifically Unity’s fault they had a tough time with Xamarin (Although from an end user perspective it’s their problem not ours). The version you can rent on a monthly basis from Xamarin won’t have half of these issues…

Playing devils advocate with myself, because I can always see two sides to the story. C++ in UE isn’t as bad as dealing with C++, GC / Mem alloc is taken care of unless you want to go and do something outside the box and personally I found C# to be very verbose in most scenarios. I had an 800 line char controller that I did in 70 lines with UE and C++, in some ways I found it easier but then again I have always preferred scripting languages… I’ve been doing this nearly 16 years now and all I did was C++ I’m at that point where I just go with whatever is easiest. I’m long past the time of spending months messing about with engines and tech, I have a game to make and that’s what I do… Whatever gets you there fastest .

I don’t actually believe for a second Unity is easier!.. If you don’t want your game to look like every other Unity game based on the same or similar shaders, you need to dig into shaderlab C style syntax and at that point especially when dealing with post, you really need to know what you’re doing, also C# is very flexible and powerful, there is nothing you can’t really do in it and that’s a problem within itself. The asset store seems to cater for most of the gaps, I’ve said this all along random Joe comes in and creates features in a couple of months sorely lacking. So if one man band random Joe can do it by himself in a short amount of time, what’s Unity’s excuse?

This do it yourself or buy from the asset store mantra doesn’t fly with me, why don’t I just use rendering and SDK templates for the platforms I’m interested in and save myself $1500.00 per seat?!

Although I will say, Unity is much easier to navigate and clean up. Performance woes? No problem, bake and run Umbra… Problems gone away (when Umbra worked right :D), Lightmapping generally was never an issue with Beast (bar the 32-bit limitation) the lightmapping generation process worked properly and it was automated on import (something I see Epic are doing). With Unreal it’s a bit hit and miss at the moment, especially for open world stuff…

But the biggest issue with Unity is there end goal, everything seems mobile centric to me. They advertise AAA visuals, yeah sure if you’re back in 2007!. Also even if you hacked away to improve the “visuals” for many months then the rest of the engine needs to support it, not so long ago they didn’t even have a 64-bit editor. How long has sheer basics like a 64-bit editor been in UE and CE?

Only mobile: I’ve done games in unity and unreal, now working in UE4.

Unity

  • Better cross platform for mobile,
  • Better for small 2d games,
  • Small amount of “why this is not working correctly” - can’t explain that but if you are working in UE4/UE3 you need to know the engine a lot,

UE4

  • Quicker production,
  • Better for big games,
  • For now mobile just ****,

So basically if you want to make games on Mobile (which means cross platform ofc) - stick with Unity, if Epic will fix all of the issues you should get UE4 - maybe middle next year. If you are working on PC game you should be working in UE4, because it’s much more faster to develop and iterate. You will get better results quicker.

Access to the engine source should be more emphasized in these discussions.
People (in other camps, mostly) keep ranting on about the 5% you have to pay in royalties, while the fact that you have access to the source, alone, outweighs this fee.

Why?

The source is nothing more than a nicety, not a necessity if the engine in question is already relatively stable. Sure it helps middleware providers do clean integrations, but apart from that ummm? The one thing that makes source worth it is you don’t have to rely on Epic to fix issues if you are prior to release and need something doing ASAP.

But with the speed Epic gets through things, you could debate how useful it is even then. With Unity, yes source code would be very nice but would you want to deal with that multi-platform monstrosity that requires 500 staff to keep going? You’d need a lot of man power to leverage it most of the time.

It also gives you access to the inner workings, not only for hacking, but for educational purposes. It has, at least, helped me tremendously in understanding how the engine works.

It is also about getting the full package. According to traditional criterias, the full package includes the engine source. There is no possibility for getting source access to unity. Even if it is unneseccary for you, it might be crucial to others…

That’s cool, nothing wrong with that. But if you really want to know how engines work, start building your own OpenGL renderer with a shader compiler it’s pretty simple to do with LWJGL and plenty of examples of how it’s put together. .OBJ support is very simple to add, UI integration and SDK integration is generally quite a pain especially .FBX. Generally you use an engine to make games quickly… I’ve built engines commercially and privately for years, it’s very interesting must admit but they are generally two separate worlds.

All engines adhere to the same rules, there are plenty of tutorials and guides on the whole thing.

I am speaking of knowledge conserning how the Unreal Engine is built, not on engines in general. But yes, building an engine, would indeed be a great educational experince.
Most people, however, choose Unity or UE4 because they either lack the time or competance needed for such an undertaking :slight_smile:

There’s no mystery to how engines are built, they are all at the base a DX or GL renderer with bolt on manipulations. You can expand Unity’s API to do all sorts of tool bolt on’s and manipulation, remembering that these are commercial engines made for commercial use whilst it’s great to use it for hobbyist needs the engine itself was made to make games. So if the correct level of support and tools are in place then the need wavers, after all this is a compliment to Epic here I’d need source for Unity to make our game. PhysX components, we require APEX use and POO (point of origin) :D. We need all sorts of things that come out the box with Unreal.

Only case use we have is potentially some back end stuff if we decide to add bespoke multi-player or we require fixes ASAP. Generally Epic are pretty quick to the mark when fixing bugs, Epic offer source but negate the need for it and there couldn’t be a bigger compliment. As said Middleware providers will always need direct access, for learning as you said it can be a great tool but at the core it’s not the end of the world if it wasn’t there.

In Unity, **** for larger games I’d recommend you have it.

It’s a lot more than that. It allows competent community members to fix bugs and add features which results in even faster development and more value for you. Granted, UE4 development is already fast enough but still the advantages of having the full source cannot be understated. Stuff like this, boom new MikkTSpace implementation. Let’s also not forget that’s why we even have that C# option now in the first place.

Didn’t I say on multiple occasions it’s ideal for middleware like scripting and fixes in a crunch? It’s still a nicety, because it’s not our job to fix the engine neither is it to provide access for middleware integrations… Were games developers at the end of the day.

Not like I’m looking a gift horse in the mouth here, it’s just not a number one consideration when I eval engines.

No, but it is to me, and many others like me:)