Hi,
We currently use a lot (hundreds to thousands) of BSP geometry during map development for blocking out walls/floors. There have been no performance issues from this in previous versions of the engine (up to 4.17.2).
Since upgrading from 4.17.2 to 4.18.2, performance has taken a dive. Profiling shows collision sweeps for Character Movement to be the main culprit. Further testing has shown that this only seems to happen when there is a significant amount BSP geometry.
I’ve created a test project which demonstrates the issue.
- Created a FPS Blueprint project
- Started a blank map and added several large, spread out BSP boxes
- Added additional FirstPersonCharacter blueprints to the map (to simulate AI and show how the issue gets exaggerated when multiple characters are on the map)
- Stat game in console to see time spent in the game code
- Upgrade project to 4.18.2 → right click uproject file and switch engine version - alternatively just open up in 4.18
- Stat game in console to see time spent - notice collision code has shot right up
Collision analyzer (and the UE4 profiler) show ComputeFloorDist taking a particularly high amount of time (.5 to up to 1ms per frame from one character).
I’ve attached some screenshots of stat game from 4.17 vs 4.18, as well as a screenshot of the collision analyzer output from 4.18.
My test project is also linked below, which can be tested in 4.17, then converted to 4.18 to immediately notice the effect.
I understand and appreciate that BSP geometry should not be used in the final map (static meshes preferred) which is what we progressively move to over time, however this performance hit is making it incredibly difficult to test out our gameplay since our framerate is now so low (easily hitting over 150 FPS in some scenes down to now around 20fps constant due to CPU bottleneck).
Test project can be downloaded here:
http://www.primaxentertainment.com/Test4.17.zip
Any guidance and investigation would be appreciated.
Cheers
Luke