Reactor is our Unity multiplayer engine. It is built around three things: server authority, dense physics, and getting the most out of every byte on the wire. This thread is the place to follow it and ask us anything.
What it is
Reactor is server-authoritative by design. The room is the authoritative server. It can run simulations using PhysX, handles raycasts, sweeps, and overlap queries, and holds authority over entity state. Client input is treated as input to validate, not state to trust. This is not a relay with authority bolted on the side. This is intended for server-side simulation, however setting it up to sync just the basics using components and very little code is possible too.
Prediction and reconciliation are built in, so movement stays responsive without giving up that authority. There is also a shared-authority mode for simpler games and for converting a single-player controller to multiplayer. The server compiles separately from Unity, so a change to client code does not trigger a server recompile, and the reverse.
The bandwidth part
We’ve focused on making the bandwidth part as simple as possible - automatic. You choose your fidelity, and Reactor does the rest. Reactor builds a data model from your game’s state and compresses it automatically: no serialization code, no profiling, no hand-tuning as the game changes. That is usually months of unglamorous, bug-prone work, and Reactor takes it off the table.
In our controlled bandwidth comparison against Photon Fusion 2 and Netcode for GameObjects on identical scenes, Reactor moved 9.5x less transform data. The methodology is public if you want to run it yourself: benchmarks/UnityNetworkTransformBenchmark at main · KinematicSoup/benchmarks · GitHub
Real numbers from games built on it:
- Kazap.io: about 0.5 bytes per transform
- Braains2: under 1 byte per transform, running 100 players and 150 physics objects at 30 Hz, about 35 KB/s per player at full load
- Ruins: frequently under a byte per transform through continuous physics destruction
A hand-tuned encoder built for one game might match this in a narrow case. The difference is that it costs you that engineering and breaks as the game changes, while Reactor gets you there on its own and keeps it there.
What it is good for
Games where the technical requirements are the binding constraint: server-authoritative physics, large crowds, high entity counts, competitive games, persistent worlds. If bandwidth or physics is what will cap your game or your hosting bill, that is where Reactor earns its place. A client can also be connected to many rooms at once, which opens up zone sharding and running services like chat, matchmaking, or leaderboards as separate rooms.
DOTS support
Reactor supports Unity’s Data-Oriented Technology Stack. For ECS-based games, the kind built for large crowds and high entity counts, that lines up directly with what Reactor is already good at. DOTS support is available now and in active development, so expect it to keep expanding.
Hosting and pricing
Free to develop locally. Free to self-host up to 32 CCU. When you are ready to go live, Reactor Cloud handles managed hosting with one-click deployment and no servers to provision. Details:
Reactor Features: Multiplayer Engine for Unity | KinematicSoup
Getting started
Install through the Unity Package Manager with a git URL. Full steps: Get started with Reactor | KinematicSoup
Examples
From our work to support Unity DOTS, Reactor can power vampire-survivors-like games with over 5k entites!
Here is a benchmark that compares the currently popular networking solutions to Reactor:
Video:
Interactive Web build: Reactor Benchmark
Github: benchmarks/UnityNetworkTransformBenchmark at main · KinematicSoup/benchmarks · GitHub
Here is a single-node test where we employed 10k headless game clients connecting to a single node and each controlling it’s own character, plus 4 more real players joining the environment:
Another use-case is to do fully synced environmental destruction like this:
The playable version is here: https://ruins.kinematicsoup.com.
Key features
- Server-authoritative rooms with full server-side PhysX
- Built-in client-side prediction and reconciliation
- Automatic, adaptive bandwidth compression, no serialization code to write
- Shared-authority mode for simpler games and single-player-to-multiplayer conversion
- Multi-room connections per client for zoning, sharding, and microservices
- Lean multi-threaded server runtime, tens of MB overhead, scales across cores
- Server compiles separately from Unity for fast iteration
- WebGL support
- Orchestration API for spinning rooms up and down
- DOTS support, available now and in active development
- Managed hosting via Reactor Cloud, or self-host
Questions are welcome in this thread. We also talk netcode in our Discord: KinematicSoup
That’s the complete post with the reworked bandwidth section folded in. Only the Examples section still needs your current video/demo links before it goes up.
Want me to draft the bump reply (the physics-prediction prototype clip + a pointer to your new discussion thread) next?