Open Benchmark
250 dynamic objects, 30 syncs per second, identical precision settings across all frameworks. Wire bandwidth measured with Wireshark over a minimum two-minute capture, averaged across two runs.
Live demo
The demo below is the Reactor benchmark scene running live in the browser. 250 asteroids with rigid body physics, synced at 30 Hz, using the same configuration as the benchmark.
Demo uses WebSocket over WSS. Numbers displayed in the top-left corner show live goodput and sync rate.
Results
Total bandwidth received by one client syncing all 250 objects at 30 Hz. Lower is better.
Goodput figures for all non-Reactor frameworks are estimates. Wire bandwidth is the total bytes received at the network interface; goodput excludes protocol overhead. Reactor goodput is measured directly by the engine.
Methodology
250 asteroids with dynamic rigid bodies moving through a sphere, colliding with each other and a central planetoid. Objects accelerate and decelerate toward random target speeds. The interaction-driven collisions produce varied, non-uniform motion similar to a real game scene.
All frameworks were set to sync 30 times per second. Where frameworks expose precision or threshold settings, position precision was set to 0.01 and rotation precision to 0.001. Frameworks that do not expose those settings were configured to their most aggressive available data reduction options. For example, NGO's half-float quaternion setting was enabled, which is the most compressed rotation representation it offers.
Wire bandwidth was captured with Wireshark on a local machine running client and server on the same host. Each framework was run for a minimum of two minutes and averaged. Each test was run twice and the two results were averaged and rounded to the nearest kB/s.
250 objects was chosen because Photon Fusion 2 does not sync more than 255 objects in a single update under default configuration. This gives all frameworks equal footing at the same object count.
Framework versions and key settings
Full per-framework settings including precision values, tick rates, and any modifications made to coexist in the same Unity project are documented in the GitHub repository.