Confusion on C++ and Blueprint Visual Scripting

Preface: I’ve been an aspiring artist for a while (like 10 years and counting, wanted to be a manga artist when i was young), and I’ve also recently learned to program within the last 2 to 3 years. So I understand what both sides of C++ and Visual Scripting are SUPPOSED to do. But this isn’t explained well for either side in my opinion, therefore i’m asking this:

Okay so I have been playing around in unreal for quite a bit of time trying to understand some things. I’m about 2 weeks of actual experience with it, and a few months of listening to concepts such as how to use visual scripting, and taking Udemy courses and listening to the youtube tutorials to understand whats going on in the User Interface of unreal.

I have some kind of assumption built into my brain where C++ would be better to learn for it due to optimization reasons. But now i’m really questioning this mindset.

I do understand that the point of the C++ parts of unreal is to make all of the back-end work faster to do. But my main confusion derives from this. Also with the general way unreal itself is advertised.

So a question I have is:

“What are the actual advantages to programming with C++, and what are they for Visual Scripting. And also what are the disadvantages to both?”

Preface: After watching a good amount of twitch stream for C++ programming, I finally understood that you could write new functionality in C++ and then put it in blueprint format. So I do understand that.

But for the actual answer to the question though? Is there any reason to not be using both C++ AND Blueprint functionality when making a game?

It feels like UE4 mostly supports developers that have C++ or programming understanding, so that they are capable of problem solving, while Visual scripting is literally only for people who don’t have that knowledge, yet still require a tiny amount of programming knowledge to sketch an idea out.

For example:

For a while I have been having problems looking for whatever sets the speed option for the ball you fire in the first person shooter layout. The best I managed to do was figure out how to change how much it modified force applied to other objects.
I personally haven’t opened this particular project in C++ yet. But i’m guessing if I do, i’ll be able to find whatever sets its velocity particularly fast.

Example 2:
I popped open the 2D Sidescroller C++ layout, and looked at it in visual 2015. (This is actually when it really reinforced the whole understanding science thing). I noticed in the cpp file things that are kind of arbitrary values unless you understood what it actually meant. (i’ll actually provide a puush image for this)

Literally the first question I had was “What is 1 of a float in this context?”

If you did this exact same thing visually, you’d just position the camera and it will give you a visual representation of it (unless you are actually able to just compile and it changes the visual camera’s position, i didn’t try this yet)

So what im asking is:

Is C++ really only for if you need to change the way the engine works when it comes to functionality and pre-made settings such as gravity and rendering?


With that last question in mind, is Visual Scripting literally just for people to be able to create content based off of those pre-made functions in a visual way?

Opinion question:
If I can do the same thing in code that I can do in visual scripting, and understand it more visually than I could in code, why would I not use visual scripting for it?

No, there isn’t. Using both is the best you can do. Theres no good reason to limit you to only 1 of them.

Yes, that’s what it is for.

If it is something where you need really good performance, then that would be a reason to use C++. If that is not the case and you feel better with BP, just use BP.

The intended workflow in a typical dev team is having your programmers writing C++ systems and code that is exposed to Blueprints, and having designers implement those systems in the game via Blueprints in the editor.

You don’t have to use it like that…especially if you’re a one-man dev team, just use what works for you.