Moving to Unreal from Unity (Programming)

Hello Everyone,

I’m a level designer and animator, and I love me some Unreal. The CSG system is exceptional for prototyping, the art pipeline is smooth as butter and the lighting and cinematic tools are fantastic. However, a game is not solely built on visuals; enter, my lead programmer. Very talented coder, very efficient, and a great team member, but he has one crippling flaw: he hates Unreal, and loves Unity. He knows both languages by the way, so the C#/C++ argument isn’t the issue here.

At the moment, we’re working on a fairly large single player action game, and the workflow for everything we need to do, except programming, is cripplingly slow for a title of this scope. Next time we start a project, I refuse to put my art team through this process again, but it’ll take some convincing to get him to switch. I need help from any programmers out there that have gone from Unity to Unreal, are there some plugins or tools, maybe features, that drew you in? What would help the switch between the engines?

I have the programming talent of a damp lump of moss, so I don’t know what to look into.

Any help is welcome, cheers!

Hello TomcaT, interesting read indeed.

Can I ask the following.

Why did you choose to switch to unreal and why does your programmer hate unreal?

The biggest pro to UE4 for programmers is the full source access. The Astroneer developers mentioned in one of their streams they switched from Unity to UE4 because it ended up being a better pipeline, more tools they needed out of the box, full source code access, and blueprints to help offload some of the programming work.

He could take his skills at game programming to the next level by examining and modifying the source. Maybe even contribute to the engine. On the other end he could hand over some high end scripting tasks to the game designers by exposing stuff to blueprint.

Also, if he is already proficient in Unity, learning a new engine will benefit his over all skill portfolio.

I would like to switch to Unreal for a few reasons:

  • More features and tools, polished, out of the box (Sequencer, Level Design Tools, Material Editor, Blueprints, etc)
  • Stronger and more advanced lighting technology
  • More efficient interface (grouping, filterable outliner, easier content browser, sensible prefab editing)
  • Advanced, yet optional, graphical features (dynamic GI, subsurface scattering, post-processing volumes)
  • The CSG system, for blocking out levels, would speed my LD pipeline up 5x (Proven in the past with a previous UE4 project)
    And more, but this is a good overview

My programmer dislikes Unreal because:

  • We’ve previously worked with UDK, and it was not a good experience for any of us, him specifically.
  • He knows Unity’s libraries inside out, and having to learn Unreal’s would make him feel slow and inefficient.
  • He finds he is able to find any solution to a problem he is having with Unity, in the documentation and forums, and simply doubts Unreal can offer the same degree of help.

If you don’t mind my asking, how does the C++ to Blueprint work, is it fairly efficient? My limited understanding of it for actual programming is that you have to decide on a C++ or Blueprint game, and cannot switch. I imagine I’m wrong but if you have done it, have an opinion?

You can efficiently mix C++ and Blueprints in multiple ways. It is in fact what Epic themselves recommend for bigger projects. You can write C++ classes and subclass them in blueprint. You can write C++ components and add them to your blueprint classes. You can pass data and events back and forth between the two layers. Every built in blueprint function is written in C++ and you can easily add your own.

You can mix the two in the way that suits you best. I personally do most stuff in blueprints, using C++ only when required or where it is significantly more effective. But if you are already proficient in C++ you can use blueprints only for really high level stuff. Only using one or the other on principle is unwise.

On the topic of UDK, I never used it personally but from what I’ve heard UE4 is very different.

I was in a similar boat as your programmer up until the middle of last year when Unity did away with the perpetual license (I have owned one since 2012). The biggest hurdle I had to get over was the Unreal way of doing things.

Pros:

  • You don’t have to worry about Mono not being updated (try a foreach loop on mobile in Unity and see what happens)
  • You can make BP nodes in C++ so the non-programmers can do things
  • Forums have people who know a lot of stuff (Rama is one of the C++ gurus I see around)

Cons:

  • ReSharper or VAssistX is almost a requirement because VS intellisense is really slow
  • I will admit that Unity has better documentation but UE4s is not unusable
  • The asset store isn’t as big as Unity (could be a con depending on how reliant you guys are)
  • Asset management is way better in Unity

Notes:

  • It takes a bit to get used to the terminology (coming from Unity)
  • It will also take a little more effort to find an answer to a solution since BP is everywhere, C++ not so much.
  • BP->C++ performance shouldn’t be that noticeable (I’d still write a minecraft/terraria world generation algorithm in C++ though)
  • You can make a C++ project and always use BPs but a BP project to a C++ one is a nightmare (so I’ve heard anyway)
  • UDK is way different than UE4 (I tried it once and it was a bad experience)

I would do it again in a heartbeat knowing what I do now even though I was very against UE4 at the beginning. For tidbits of things to get excited for have him look up delegate methods and the built in damage system for starters.

  1. Would owning a license of VS Ultimate solve that particular issue, or is that something totally unrelated? (Again, wet lump of moss when it comes to programming)

  2. What makes the asset management better? Personally I’ve found the content browser better than Unity’s project window, but that’s mostly for materials, meshes, and prefabs.

  3. So would you say your advice is to always start with a C++ project and only make blueprints where desired? To allow for more flexibility, I’d imagine.

  1. Probably not, I haven’t tried the Visual Studio 2015 (released this year) intellisense but it’s the autocomplete thing that pops up with available commands when programming (helpful if I forget a something). Both those tools have additional features that speed things up like refactoring, automatic method implementation, blah blah programming stuff bleh bleh bleh.

  2. Unity you can drag and drop everything in the content browser and it’ll be fine, but in UE4 there’s redirectors to worry about and you can sometimes break a project moving too many things around.

  3. You can make a C++ project and never touch C++ and it will work the same. It’s mostly so if the programmer in the future wants to do something it’s ready to go. If it’s a project that you are 1000% certain will never use code, you can make a BP only project.

This is the first time I’ve heard about problems going from pure blueprints to C++. What are the hurdles with it?

I have used Unity for over 6 years, Unreal I’m in for ~4 years.
All it takes to switch from Unity is willingness…

I’ll tell you one thing: the worst thing to do is work with someone who doesn’t want to do his job. If the company have to switch engines, but a programmer refuses to do so then just fire him, no exceptions.
I have situations like this, nowdays if I join a team and I see that there’s people in there who doesn’t want to work, I leave as soon as I can.

“-Oh but we are just indie and…”
I hear this one a lot.

Man that is no excuse for anything.
You can’t use " being indie" as excuse for lack of quality on your games or someone’s lack of professionalism just because “we are just a small indie group”.
Have to be professional, treat yourself with respect to grow your career; respect the studio you work for even it’s a garage band.
The studio/company/group/whatever and the project comes first, not an individual’s personal satisfaction just because “-oh I luv Unity, I hate Unreal, I ain’t gunna work on Unreal! >”
That is pathetic, really…

Respect for what the project needs to succeed must always come first in everybody’s mind;
People must understand that, and leave behind the hobbyist mindset, otherwise everyone are wasting their time while they have “no real job”. Because most likely a project will never be complete or the end result will always suck if the people making that game are the first ones to neglect it or fail to see how valuable it is (because if you can’t leave your own comfort zone to benefit the project you work on, what does that mean? You don’t really care about what you’re doing more than you care for yourself and you will never in your life make anything meaningful while you act like this).

Well in that case is just better stay with Unity, because the guy will not work properly if he openly express already how much he doesn’t like the platform :stuck_out_tongue:
Forcing him to switch will only bring trouble as well.

It’s something that I heard a few people say it when following a few tutorials back from when 4.5/4.6 was the latest version and again from the Udemy UE4 course by Ben Tristram (4.10/4.11/4.12). I’m a programmer so I’ll always be using C++ and I’ve never had to transfer a BP only to a C++ project.

I mean if the switch is easy it makes sense, expose BP for the designers so the programmers can focus on the core of the game or other complex features. From a previous project I recall our programmer (different guy) mentioning that it was an initial decision with no option to change after, my guess is that he chose BP and had a few problems getting back to C++.

With regards to all points made by Bruno and franktech, you’re right in assume he is well liked, not only is he a good friend but he’s also incredibly talented, engine aside he has a talent for code. If everyone on the team suddenly switched he’d come over no problem, but I’d rather convince him to give it a try based on some great features for programmers that UE4 offers; something everyone here has helped with for sure.

There is no issue changing from a Blueprint project over to C++; just have to have VisualStudio installed and working properly.

The major feature that drew me in is that it’s Unreal Engine. It’s a well made game engine. Unity is not. It’s a bare-bones visual editor.
I started with UDK liked how they programmed their engine, lots of ploymorphism. Making a pawn was a breeze extending from UT-Bot.
UE4 has LOTS of components that make the jobs easy for a hobbiest designer, artist and programmer.

Really with BP, all a programmer has to do is create new tools for his team to use. That’s how it’s done in AAA studios.

Unity has nothing to work with.

Also, using plugins are a nightmare, since different coders code differently and code doesn’t work well together.
With marketplace assets, since they are all made with BP, a centralized coding structure, interaction between packages is easy.

To be fair, because of BP, I’ve yet to code something useful in (assisted) C++. I just got away from Objective-C and they are so similar. I code in Java,C#,php, etc and I don’t want to touch C++.

Blueprint is the visual programming language to c++. It does all the same things, but graphically compared to looking at lines of code.

Hell, if you want I’ll code for you.
I use BP mostly, but I’ll make tools in C++. It’s not hard for me.