What is the maximum amount of actors you could spawn and still keep 50-60+ fps?


I was wondering how many moving actors you could spawn on screen and still keep a decent framerate (50-60fps). I’m trying to create a small particle system, and when i get up to about 300-500 actors the fps drops to about 10-20fps. I was wondering if there are any improvements i could make. Right now, i’m just spawning 500 actors with default staticmesh sphere.


OS: W8.1
CPU: i7-4820K @ 3.70GHz
Memory: 8GB
GPU: AMD Radeon R9 290X


It all depends on your system’s specifications. There is not “set” limit.

Alright, but are there any ways to optimize it to get better performance?

Obviously spawning actors with heavy calculations is one place you can optimize, but i’ve noticed that it doesn’t matter if i have a heavy amount of calculation or not, if i simply have over 300-500 normal moving objects (for example interpolating between X100-X500) the FPS will drop below 30.

I was wondering if anyone has any idea on how to spawn more than 1k moving objects without going below 60fps.

Making use of instancing and material instancing brings you far. Try not to use the “complex as simple” collision method, a custom collision model might be better. LoDs are your friend. Optimize triangle count where you can, don’t use textures that look the same on a lower resolution and keep your materials simple.

That’s for your meshes, you could always test those 1k moving objects using simple boxes and see how it affects performance.

there really is not much you can do about that. we have struggled with that very same issue for our current project but ultimately you end up being limited with how many actors you have moving per frame.
i dont think any of our improvements would work in your case as they require that actors can be offscreen so you can reduce the tickrate while they are offscreen for example. ultimately it all comes down to not having as many actors moving…

It makes me smile that I’m not the only person using a R9 290x.

Anyway, it really just depends on the game you are creating as well as the actors you are placing.

You can easily get 500 boxes, but 500 different static meshes that have detail (like a house)…that’s a different story.

Just experiment a bit, it really depends.

~ Jason

Alright thanks for the help guys, ill try to experiment a bit more.

At the moment i’m using a 2D platformer project. i’ve basicly removed every (i think atleast) unreal engine setting from the actor, since all i really need is a sprite for the actor. movement and collision is handled in C++.

I’ve managed to get my fps to about 50 using 1k moving particles (60fps at 800).

I’ve run out of ideas for tinkering with sprites/mesh settings right now, the only thing i can think of that would improve the fps is to stop movement/calculation on certain particles depending on their position.

try going into the c++ programming and removing the ‘tick’ function.