My FPS drops by around 20 during runtime. What's the problem, and how can I improve this?

The display effect is in Image 1, and the blueprint logic is in Image 2 and 3.



I think I’ve located the issue. My FPS increases by nearly 20 when I disable the lights. Could you tell me how to optimize lighting performance and refine this blueprint logic?

When is that last graph executed? What event is it on? Get Actor Of Class isn’t a fast operation. You should store their values in a variable and just check if it’s valid. If not, then you can grab it and set the variable.

As for lights, that’s a big topic. Direct light is the done the same regardless of the pipeline. Usually, it’s how shadows are handled. Are you using VSM or CSM? If you’re using CSM, you should increase the distance to cover a big area. This works well with directional lights. Other lights become costly quite quickly. If you’re using VSM, you don’t deal with any of that. But it is slower if you’re not using Nanite.

Then there’s Lumen.

We’d need more info on what you’re using for lights, if you’re using VSM or CSM, Lumen or screen space GI, and if you’re using Nanite.

A 20 FPS drop at runtime usually means something expensive starts happening after play begins, not in the editor idle state.

Common causes:

  • Too many Tick updates on Blueprints/Actors

  • Expensive traces every frame, especially weapon or AI logic

  • Too many spawned actors/projectiles/effects

  • Heavy animation, Niagara, or physics

  • UI/HUD updates every frame

  • Garbage collection or memory spikes

  • Dynamic lighting/shadows becoming costly in gameplay

How to improve it:

  • Use stat unit and stat gpu to see whether the bottleneck is CPU or GPU

  • Check stat game for expensive gameplay systems

  • Reduce unnecessary Tick

  • Move repeated logic to timers / events instead of every frame

  • Limit trace frequency and actor spawning

  • Pool projectiles/effects if possible

  • Simplify shadows, particles, and post-process

  • Profile Blueprints with Unreal Insights or Blueprint profiler

Simple way to think about it:

  • If Game thread is high → gameplay/Blueprint/AI issue

  • If GPU is high → materials, lights, shadows, VFX issue

So the problem is usually runtime systems doing too much work every frame. The best fix is to profile first, then optimize the biggest cost instead of guessing.

Thank you so much for your help! I’m using VSM with default settings for the point light. After I turned off ”cast shadows”, the frame rate went back to normal. Meanwhile, I’ve re-optimized the blueprint logic using tags.

Thank you. Your help is very logical. I’ve found that the point lights are consuming a large amount of GPU resources, and the problem was fixed after turning off cast shadows.

Glad it’s better. But all the nodes that start with Get All Actors… perform about the same. Replacing Get All Actors of Class with Get All Actors with Tag isn’t going to do anything. My point was that if you’re only executing this once, it’s fine. But if you’re executing it in your Tick event, it’s going to be very slow.

I’m sorry I only just got your point now. The whole blueprint logic executes only once. Thanks a lot!