Download

Nativize Blueprint assets speed vs C++

I have yet to try this feature but I’d like to get something clarified please.

With the nativize BP assets option on in the project settings, do you get any benefits from using C++ outside of the argument that one might prefer it? And by prefer I just mean someone might be more used to iterating through things, create parent classes or whatnot with C++… and I also get that with BPs you’re stuck with what Epic has given you, which is largely enough for my needs.

How close to ‘just as fast as C++’ will my BPs be with this option on? I guess that’s my ultimate question…

Thanks!

You should use blueprints for anything where development time is more important than run speed. This is about 80-90% of your average project.

You can swap between BP’s and C++ seemlessly using function calls into one or the other. Therefor the general concensus is unless you realllllly like C++ just use blueprints and profile later, find bottlenecks and reduce them.

The thing I don’t see said much about BP’s is how little bugs I find in my BP code. I’m a visual learner but still - everything just works perfectly. If I’m not doing a complex BP I can almost guarantee it will work first time, and debugging the more simple errors is crazy easy. There’s more debugging tools for C++ but unless you’re making huge BP’s you just don’t need them

Thanks, I’m really trying to figure out if those BP bottlenecks are an issue anymore with the option to nativize my BPs at publish time? Sure, BPs are slow and required per tick events can get troublesome… but how much better would a complex BP bottleneck be if I’d rewrite it in C++ vs just nativizing it?

Oh I just realised what you’re talking about. My bad.

I guess you know it’s experiemental but thinking about it the ability to nativize it and then rewrite certain parts that bottleneck seems really valuable. Right now we obviously have BP’s and C++ and no real inbetween. There’s a lot of lost functionallity in BP for smaller optimizations that are quick and easy but require a C++ class so I’d imagine once the feature is fleshed out it’ll be a near standard for even medium size optimizations. That’s where I see the major improvements being gained - small edits to BP classes that can only occur in C++ being easily added or rewriting the internal operations of a BP to get around compiler bottlenecks.

Considering BP’s are compiled I’d be quite suprised if the nativizing itself gives much added performance. Surely they are compiled into something near C++ already? If not, having this as a compile option would be interesting.

Yeah, that’s what I was kind of thinking as well… it’ll all get compiled so what exactly is different? I think this feature is sold as a speed improvement feature…

Ok so I found something https://docs.unrealengine.com/latest/INT/Engine/Blueprints/TechnicalGuide/NativizingBlueprints/index.html.

‘The main goal of Blueprint Nativization is to reduce the virtual machine (VM) overhead in the runtime version of the project. As a result, the generated code is not necessarily designed to be “friendly” or reusable.’

I’m not quite sure what that ultimately means to be honest…

It means you won’t be nativizing Blueprints, and then turning around and editing/using that generated C++, as it is a disaster.