Performance Review

This data was recorded on 29th August 2025 with plugin version 0.2.1. All numbers are expected to improve as more time is spent on optimizing the plugin.

A scenario has been created to simulate any number of headless clients, all moving and shooting at the target character within a small map. These characters can also hit any character on the map. This would be worst case scenarios in many shooting based projects but you may find that your own results vary.

CPU Trace

8 Player Scenario

The 8 player test case shows that the majority of the cpu work is being spent on animating the characters (8.7ms out of a total 14.8ms frame). However, the characters in the test project are copied directly from Lyra and have not been optimized so there is likely a lot of functionality that can be either removed or improved on the server (like motion matching, simplifying node states). If your project has already handled this, you’ll likely get much better numbers.

1.3ms of frame time is spent on the rollback logic, moving and enabling/disabling colliders. Another 1.3ms is spent on additional NetworkPrediction tasks within the FixedTick.

Around 1ms of the frame is spent on additional physics handling and 1.5ms on replicating properties on actors.

16 Player Scenario

To understand how the plugins complexity scales, I also ran the same scenario but with 16 players. The character animations now take around 18.8ms in a 37ms frame which shows that they’re not far off scaling linearly. They are still the bulk of the processing.

The Gunsmith Fixed Tick is now 6.1ms up from 2.6ms previously. This seems to vary between 4.8ms and 8.8ms which is likely due to how many times the colliders need to be moved back each frame for the rollback. Most games can use Spatial Culling to prevent the rollback of actors that should be skipped if the rollback is irrelevant to them.

The Actor Replication is now up to 8.9ms compared to the previous 1.5ms which shows that the exponential complexity of replicating to many players may end up being the main bottleneck in player count. This can be mitigated by implementing Replication Graph or Iris.

Net Trace

The Net Insights for the 8 player scenario shows that the server must send around 750 bits per character for the Gunsmith Shooting and Health component, while the Mover component averages at 600 bits. This means that for each player, the server must send ~1400 bits of data to each player to ensure the simulation stays in sync. As this is a worst case scenario, games that implement Replication Graph or Iris with a large map could potentially bring this requirement down by a large amount in most cases.

The Network Profiler shows that the outgoing bandwidth of this 8 player scenario is 350 KB/s.