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!
[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.
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?
Are there any Blueprint performance concerns or pitfalls related to specific platforms (iOS, Android, consoles, etc.)? Or is performance within Blueprints generally platform-agnostic?
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?
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.
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?
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?