Concerns about UE4

I have a serious, and hopefully constructive concern about Unreal Engine.

I am coming over from c#/Unity and Unreal and C++ has always been hyped for their capabilities but truthfully I’m running into ALOT of weird buggs, something that I’ve never seen C#/Unity never suffer from, and I am hoping to get some solid advice and feedback from the unreal community as to why and whats going on here.

  1. Starting small, Visual Studios Intellisense runs like garbage with c++ (and unreal?). Its so laggy, it takes minutes to catch up to what youve typed, and it throwing errors around everywhere when everything’s perfect, Whats up with this? Should i use Vs code instead of Vs Studio? I’ve heard of VAssist but its a paid program and I find it odd Id need to invest in something when C++ is supposed to be this super efficient language and Unreal is supposed to be “so great” as the leading game engine.

  2. The work Flow back and forth between VS and Unreal is quite slow. Having to manually build/compile after any code change is tedious. It feels like this degradation of work flow over time is going to cost any company or person a lot of time/money compared to C# to Unity which is instant. What I don’t understand here is that Unity is written in C++, and then it somehow bridges in C# right? So how can this engine be faster than one written with its native language?

  3. Continuing on with workflow issues, I am following a tutorial on Udemy, and I keep running into the same unusual and painfully frustrating bugs as the instructor. We will change one thing in C++ and suddenly all these things stop working in game. Usually a blueprint derived from the C++ class , although the code related to it wasn’t changed at all. Normally we just add a new variable and function and somehow this breaks all old blueprints related to other functions or variables.

This results in the same process of : Try to close the editor and reopen. If that doesn’t work, Close the editor and try launching through VS with Cntrl+F5. If that doesn’t work, rebuild VS files, delete binaries folder and generate off of .exe. If that doesn’t work, Delete the blueprint and start over…. This has been the biggest pain… and It makes absolutely no sense to me. I am very frustrated. Could someone please lend some advice?

Thanks for your time and help.

Unity hosts a C# compiler the same way Unreal hosts a Blueprint compiler.

C++ is not a hosted virtual machine.

You are using C++ like it was a hosted virtual machine.

The Inheritance chain between a C++ class and a Blueprint created from that class is actually very complex and it’s something these tutorials online can’t explain.
Btw you don’t really need to create a Blueprint to place a class in a level, you can drop native classes directly, makes things a lot easier for beginners.

As i have also Unity experience i would recommend to Unreal Online Academy and here the “Twin Stick Shooter with Blueprints” Tutorial by Zak Parrish. Zak Parrish shows some basic concepts and even when i am not a fan of this genere the tutorial was an eye opener. There is also a part where he shows the interaction between Blueprints and C++ (you write and compile a little bit C++ but i have never experienced a problem). Generally i found many books and tutorial outside UR which show nothing better examples than in the official documentations (and often the same examples). Look also at the Content Examples.

Appreciate the replies,
But I feel like they dont answer why UE4 overall seems to work less efficiently than Unity? and has a multitude of bugs that require you to close everything, delete and regenerate files.Its quite confusing as C++ is supposed to be a superior language. I dont quite follow what youre saying about a hosted virtual machine. Maybe you could explain?

Good to know about being able to simply place a Cpp class into the world.

The reason why Unity works much faster is because if it was a car you would only be allowed to change the tires in a garage while Unreal Engine lets you change the chassis in a desert if you want to. Blueprint like [USER=“434”]BrUnO XaVIeR[/USER] mentioned is much more like Unity C# where you are only allowed to change the tires in a garage and give the car a new paint job.

Visual Studio intellisense doesn’t work well with millions of lines of code and macros out of the box, and even when tweaked it has its limits which is why 3. party plugins tailored to UE4 is advised.

The efficiency of C++ is noticeable at run-time not compile-time. Developers have been spoiled by the near instant “compile” times of managed C# code compared to unmanaged C++ code. Unreal keeps pushing the limits of how fast it can compile this giant engine and several strategies can be used like Pre-compiled headers.

A new feature I haven’t dug into yet is Live-coding which should let you make small changes to C++ code while the game is running.

I think if you want to have a similar (better) experience with Unreal then you have to embrace blueprints. Then once your game is further along you can start to convert some blueprints to c++ or move things that would be a mess in blueprints to c++. Basically what they describe here: Balancing Blueprint and C++ | Unreal Engine Documentation

I find unreal development way better than unity as long as I embrace blueprints, but every project / team is different, and yes there are known downsides to blueprints too. The secret is a good balance.

Unreal c++ is just painful especially if you are learning unreal that way. I quit unreal and went back to unity because I did not embrace blueprints and tried to do everything in c++ when I first started learning unreal.

Well thanks for the replies,
that makes a bit more sense about the compile times…
I know everyone says to use Blueprints for everything,
but I wana learn C++ to work in the game industry, I dont think I can just show them my blueprints and be like “here hire me”. Wont go as far when jobs require “fluent C++”

Its amazing the amount of bugs im getting with C++ and UE4.
I have two classes, both exposing a UAnimMontage point the exact same way,
yet 1 class I cant assign a montage in the BP child of it, and the other I can. Literally identical set up. >.<