I’m currently working on a project in Unreal Engine 5 and I’m experiencing a performance issue that I can’t fully understand.
In my level, I have several actors that use Event Tick in their Blueprints to update simple logic (mainly checking distances and updating variables). At the beginning, the game runs smoothly at around 90–120 FPS, but after playing for a few minutes, the FPS gradually drops to 30–40 FPS.
Here is what I’ve already checked and tried:
The logic inside Event Tick is relatively simple (no heavy loops or complex calculations).
I tested disabling some actors, and the performance improves slightly but the issue still exists.
Garbage Collection does not seem to be the main problem.
No obvious memory leak according to the profiler.
My questions are:
Is using Event Tick on multiple actors a bad practice in this case?
What are the recommended alternatives to Event Tick for frequently updated logic?
Are there best practices or patterns to optimize Blueprint performance in situations like this?
Any advice, examples, or documentation links would be greatly appreciated.
This is a multi dimensional question and has multiple answers but I’ll try to be brief.
Is Ticking Bad? : Not really but it’s something that you want to avoid. Second to second gameplay generally will require ticks or physics, anything that doesn’t need to be updated every frame shouldn’t be in tick fundamentally. Every tick, every running function is a load on machine so using sources efficiently is a big trick. On multiplayer even you have to think is this tick functions should tick on server too ? or not?
Alternatives? Rather than using ticks and updating variables , you can use a event base system: when a variable changes makes an event and you can bind to these events in any actor. EX:
Pattern or UpdateLogic ? Well there are many patterns , you can watch some beginner videos around it and every pattern has its place its a bit question of what that system needs also a little bit question of what taste the designer / developer has.
Best Practices? Well in your case: if you are spawning actor and they are ticking in the world, when you don’t need them make sure they are destoyed unloaded or stops ticking/ minimal tick when not relevant to gameplay. So for checking distances maybe you don’t need to query distance to player all the time? maybe they have collisions and after overlapbegin they start ticking.
It’s a bit question of why you need to check distances?
Do all of them need to check distances?
Do all of them need to check distances on tick with same rate?
If player is not looking at them do they need to check update distances?
While checking distance do i need to search that class all the time?
While checking distance if we know the target coordinate wouldn’t be enough?
Also a further / advanced point of thinking for this would be : Should actors know player to self distance or player should know distance to actors and actors know nothing?
What operation are you exactly doing on event tick?
How many actors are we talking about?
As a side node, Blueprint Event Tick is very inefficient and slow (10x - 100x slower) compared to the C++ native implementation, so if event tick is absolutely necessary, consider performing this in C++ instead.
Depending on the number of actors that are ticking, you may also want to look into batched ticks or aggregated ticks instead.
There are very few instances where Event Tick can’t be replaced with a timer or some event / delegate-based alternative instead, so considering using that instead.
As a side node, Blueprint Event Tick is very inefficient and slow (10x - 100x slower) compared to the C++ native implementation, so if event tick is absolutely necessary, consider performing this in C++ instead.
While Blueprint Tick is definitely slower, this is too broad and a blanket statement that may confuse some beginners. It is highly unlikely that anyone will see 100x slower operations without extremely heavy logic.
Please come back to me when you’ve shipped at least multiple commercial titles before spreading obvious propaganda
I am a professional Unreal Developer with multiple shipped commercial titles. I do not appreciate the way you handled this and how you responded with a personal attack. I stated that it was definitely slower and suggested you not confuse beginners with blanket statements. I will not be responding further and will refer this thread to a moderator who will moderate as needed for the response.
So am I for over 10+ years, and I too don’t appreciate the way you are handling this.
Please focus on resolving the issue that the OP is encountering (like I am in my first post), rather than going on a tangent that isn’t conducive towards solving the OPs issue.
1- Ticks are slower in BP, for something simple a beginner shouldn’t have problems
2- Anything can be going on with original poster’s question.
3- Think the overall beginner friendly direction is already made by me. Like some insights, patterns, what can go wrong, is ticks bad or good?
4- Both sides are correct (honestly) with this, beginners can be understood wrongly and the statement is fundamentally being correct. So no wrong information.
5- Maybe the “blanket” wording can be misunderstood especially in a written environment and that’s ok, let’s not argue with how many titles people shipped since community is here to help eachother. (not a moderator but since converasation in being butchered wanted to step in)