Is C++ worth it over Blueprints?

Hello,
I’m familiar with programming but not with C++, I was playing around with Blueprints and I’m able to get the stuff done that I want, not everything but most of it.

I’m wondering if it’s worth learning C++ instead using Blueprints.
Learning a new language is fun but takes time, now I’m wondering if it’s worth learning C++.
Because I don’t know if it’s possible to do anything with Blueprints that I can do with C++ and if the performance with C++ is significant over Blueprints.

Are Blueprints just slower than C++ no matter what or are there some rules how to use Blueprints to make it comparable with C++. How much are Blueprints slower than C++?

For example I will spawn many bullets in my games, sound queues for each shot and it’s about 3D airplane fights, no physics maybe some effects but the flying itself wont use physics, more like basic gravity, going up slows you down, going down speeds you up.

Can I also sketch in Blueprint and create the same in C++? I see that the bp nodes are named different than the C++ classes.

1 Like

Hi! Well…I am not an expert but I can share my experience with you.
I am using Unreal Engine since about 3+ years ago. Blueprints mostly. Same as you I was familiar with programming in many other languages but not C++. I feel really comfortable with Blueprints but C++ is more pure and efficient in many cases as Blueprints basically are C++ functions written to make your life easier most of the time but they have overheads many times. I tried Learn C++ 2 or 3 times with online VTC courses and I felt very frustrated because I was getting compilation errors all the time…hard to grasp the full concept of the language…the third time I give it a try I finally can pass that frustration line and started to make things working and feeling comfortable with C++. I was practicing a lot with C++ and decided to port a BP game I had to C++ as a challenge and exercise and in the process I learned a lot on how C++ and BP communicates with each other and co-live. I think the best is handle both things and make hybrids. BPs have the visual benefits and the kickass UE editor where you can easily setup components, etc. I noticed some ‘BP spaghettis’ functions are just a couple clean C++ lines and I was amazed on that. There are other things like Delays that are very easy and useful in BP and you don’t have in C++… you have to deal with timers and event delegates and is a bit more tedious. Another benefit of C++ is that in BP you don’t have ALL the UE features implemented. For example now I want to make a split screen game and switch the layout from horizontal to vertical at runtime and I noticed that is only possible in C++ (at least you make a custom ‘blueprintcallable’ C++ function but that stills being C++. Now That I am pretty used to the language, what I do in my project is create them as C++ projects, prototype in BP (I still feeling is a lot faster to work with than C++) and then Just create parent classes for each blueprint and parent my blueprints to the C++ base class and then I have both worlds connected and can rewrite BP code to C++, etc. I recommend you try to learn C++. You wont regret if you get the concept. You totally can sketch in BP and create the same in C++.
Best

Dany

I would take a read at Balancing Blueprint and C++ | Unreal Engine Documentation and also check the https://learn.unrealengine.com and search for balance blueprint and c++.

A good balance of both can have a performance benefit, but don’t do everything in c++. Blueprint is for a reason. Getting that balance right will make your game programming enjoyable.

Kaos.

2 Likes

Performance is sometimes the reason why C++ is used, but not even nearly always. Often it’s done to access functionality available on the C++ side which has not been exposed to blueprints, or tuck the logic neatly into written code and then all you need to do on the blueprint side is to call a couple of nodes.

Using both is definitely worth it. I’d say if you have the time, learning C++ is worth it even if you only end up using blueprints. Using C++ will force you to accustome yourself with programming concepts. Using only blueprints, you may kind of ignore them or only form some sort of cursory understanding, while with C++ you sort of “force yourself” into learning them.

Just using C++ won´t force you to do anything in any particular way which is a blessing and a curse of C++.
Learning C++ syntax is one thing, but learning how to program is an entirely different concept, one which could be used in Blueprint and any other programming language for that matter.

There is a lot of bad practices out there that may get the job done but leads to a lot of debugging because it is not readable by humans, not even the original author a month after it is written. This is why design patterns exists particularly for object oriented programming which any programmer (including those only making Blueprints) should get familiar with in my opinion.

In my experience C++ rarely gets used because of its performance benefits in Unreal but rather because doing the same thing in Blueprint would require a lot of workarounds. Certain tasks especially when dealing with Multiplayer games is better to do in C++, like the initial login of players, and initializing the pawns etc. while the visuals and sound should be handled in Blueprint.

This video was trigger for me to move from BP to c++ to use both

True, you could. And if you’re entering in cold, I would suggest playing around with blueprints for a while before delving into C++. Once you’ve done that it’s much easier to read the C++ code even if you haven’t done so before, since you can draw parallels to many blueprint nodes.

But a lot of learning material aimed at blueprints will often tackle programming concepts with a cursory mention, whereas for the C++ learning resources, they tend to go deeper into how things actually work.

It still requires doing your own work to really understand the concepts, and programming knowledge isn’t the be-all end-all. There is a balance which needs to be found between getting things done and architecturing code so that your project remains manageable.