Support Stream - Blueprint Optimization - May 19th

If you’re working with Blueprints at all, then this is the stream to catch. and go in-depth with the do’s and don’ts for getting your Blueprints optimized. Ever wonder if there was a better way to do something? Want to not be so dependent on Tick? Timers, Interfaces and Casting will be demystified.

WHAT
, Whiting and discuss Blueprints and how to get the best performance out of them.

WHERE
Follow us on the official Unreal Engine Twitch channel:

WHEN
Tuesday, May 19th @ 2:00-3:00PM EST Countdown]

WHO
, Technical Writer
Whiting, Lead Programmer
, (@]())

Feel free to ask any questions on the topic in the thread below! We’ll get to as many as we can!

Edit: The YouTube archive is available here](Blueprint Optimization | Live Training | Unreal Engine - YouTube)

Awesome! I can’t wait for this because I’m still a novice in UE4. Learning how to optimize blueprints will be really useful :smiley:

[QUESTION] How would you debug the performance cost of a specific blueprint nodes? Let’s say I know function X is expensive, but I don’t know what nodes in said function are the bad ones.

For example, I recorded some data with session frontend and according to that it seems that a lot of the math nodes are cheap while the get array node is expensive. I figured that the get nodes would be extremely cheap since you’re getting an item at a certain index. Although I don’t understand anything about session frontend so I might just be misunderstanding something.

[QUESTION] Need help implementing new blueprint OSS nodes - Multiplayer & Networking - Epic Developer Community Forums

[Question]
Delays or Timers?..

[Question]
How performant is casting, and if it should be avoided, what are some other design patterns that could commonly be used instead?

[Question]
All things being equal, does a static mesh actor have less overhead than an equivalent Blueprint Actor?

I think blueprint optimization is an extremely fascinating topic… I really often think which way of doing something is better.

Hyperlooks question about casting is really good. I would like to know what’s better, doing an impure cast or branching on the result of an “Object equals” node.

Where is the most blueprint overhead compared to c++? Just calling one Line Trace Node, what is the overhead from blueprint compared to c++? Which blueprint functions have the worst overhead? I guess it’s the “Int + Int” node :rolleyes: And which functions are generally really expensive?

What’s better, doing 8 Line Traces or doing one Sphere Trace?

[Question]

Are there any Blueprint performance concerns or pitfalls related to specific platforms (iOS, Android, consoles, etc.)? Or is performance within Blueprints generally platform-agnostic?

[Question]
Tips & tricks to augment the workflow rapidity of creating Blueprint scripts.

My favorite is zooming out and in to quickly traverse my script (my middle mouse wheel is on fire :smiley: ) but I know there are other tips!

I will be tuning into this :slight_smile:

[Question]

A little bit of a more question, but after optimizing blueprints (among textures, LODs, etc) to the best of our ability, what would be the best (or recommended) way of going about figuring out minimum and recommended system requirements for PC games? Thanks!

[question] how to deal with UMG widgets effecting the player controller(where the player controller spawns the widget) without circular dependencies or using interfaces for everything. Is there a cleaner way to do this? Should interfaces always be used to avoid circular dependencies even though sometimes they are ok?

At the end of the stream was mentioning something about how to handle a massive amount of updates at once and mentioned crowd simulation as an example, but I missed what he said. Anyone able to post a link to docs or follow up on that?

Hi Guys,

Thanks again for taking time to answer my question about 10.000 objects. I re-watched Nicks answer and I understand what he wants to do. Calculate central and then broadcast this to all the actors. However I think we have some sort of a unique requirement.

We use the engine to build an “Agent Based Model” (ABM) called SmartCap ToolBox

We like the Unreal Engine for several aspects but mostly the use of BP and being able to develop Agents with a large group of people that are not all familiar with C++. So we would like to keep this functionality and we also would like to keep the ABM functionality. Every Agent is acting autonomous. So for example several 1000 objects (of different types) listen to the Sun for the Temp-Update and use this in their internal logic to act and trigger other events.
So with those restrictions in mind we would like to have as many Agents as possible updating their internal logic as fast as possible. At the moment we use the “event model” provided by the engine. But since mentioned that this is the most expensive way of doing things; what would you suggest we try (in C++) / interfaces to broadcast update events.

Thanks again for the help! …we love the engine :smiley:

What I think I understood is that for single players game there really wouldn’t be that much of a difference between using BP or C++ since events/nodes are not being called 100’s of times. But for Multiplayer games C++ may be a better option in general?

Here is the video archive on Twitch:

/v/5213205

I’ll see about getting to take a look at some of these other questions here. Thanks for watching, everyone!

Thanks, looking forward to it! Would have loved for him to expand on that. No pressure!

Yes me too. I guess has a lot on his plate; but solving this one would really help us…

Thanks guys!

Just so I’m clear on this, in an example like this, is the top branch only moving in and out of the VM once, while the bottom branch is moving in and out several times, making the top branch preferable?


And in an example like this, I assume method A is preferable to method B, since you’re not getting/casting every click?

We started porting stuff to c++ …but any advice still very much appreciated :smiley: