Hello!
In order to optimize my game, I have changed how my enemies work. Started with them being Characters, changed them to Pawns, and now their base class is Actor, and they use my custom movement implementation.
The weird issue is that the framerate stays largely the same, especially in builds.
How could it make sense that 300 moving characters and 300 moving pawns (with floating pawn movement component) results in the same performance?
(They use the same mesh and everything, they are just simple test enemies.)
Same is true for my 300 custom Actors.
It’s as if the movement is executed each frame, but we still have to wait for something running in parallel, so it ends up not making a difference.
And indeed, Unreal Insights seems to show something like that… I think. But it also barely shows anything, just a few “lines”. Is this normal?
With Character class:
With Pawn class:
With custom Actor class:
As you can see, Insights doesn’t reveal much, I can’t look into what is actually happening. Nothing shows on any of the other threads that I omitted from the screenshots either, so this is all I’ve got. How can I figure out what the game is waiting for? How can it make basically no difference how my hundreds of enemies are implemented?
Some additional info:
- Without enemies spawned in, I have ~120 fps, and it drops in line with the number of enemies, so that is indeed the bottleneck (empty test scene, nothing is going on besides the enemies).
- All 300 enemies are on screen at the same time in all of these cases.
- Their movement logic is simple, they just go to where the player is.
- My game logic is in blueprints, so I can’t instrument functions in my code to make them show up in Insights. (Or can I somehow do that in BP?)
- My build configuration is Development (not Shipping so that I can make the trace files), as the Test config would require source code. But this should not be relevant, as there’s no framerate difference in Shipping builds either.
- Obviously, frame rate isn’t capped, Vsync is turned off.
Any help is much appreciated!