Reactor Multiplayer Engine

Built for Games
Other Engines
Can't Handle.

Reactor is built around performance at scale, a workflow that doesn't get in your way, and infrastructure that keeps running without babysitting.

Designed to Sync Worlds
Previously Considered Impossible.

Realistic physics, large crowds, and persistent worlds with thousands of moving parts. Reactor handles these without exotic server setups or specialist networking knowledge.

Network Culling

Sync Groups: Only Send
What Each Player Needs.

In a large open world with 20,000 entities, each player only needs to see the nearest 5,000. Reactor's sync group system partitions the scene into spatial cells and automatically assigns players to the groups containing nearby entities, reducing per-player bandwidth and server load as your world grows.

All entities default to group zero, which syncs to everyone. From there you define cell size, group assignment logic, and player enrollment in a single server room script. Reactor handles the rest.

Tutorial: Network Culling Using Sync Groups →
G4
G5
G6
G7
G8
G9
G10
G11
G12
G13
G14
G15
P
Synced to player Culled Active sync group

Ultra-Low Bandwidth

~2 Bytes Per Object.
9.5× the Competition.

Reactor uses delta-based compression to send only what changed, per object, per tick. In a head-to-head benchmark against five leading Unity multiplayer solutions, Reactor delivered 9.5× better bandwidth efficiency than the next closest and 17× better than the least efficient.

That gap translates directly into scale: where other tools sync 500 objects, Reactor syncs 5,000. And because bandwidth costs less, your hosting bill stays predictable as your player count grows.

Open benchmark on GitHub →
SolutionRelative bandwidth
Reactor1× (baseline)
Competitor A9.5×
Competitor B11×
Competitor C13×
Competitor D17×

Bandwidth per synced object. Full methodology and source available on GitHub.

120hz Tick Rate

Server-side simulation up to 120hz. Network tick rate is independently configurable. Tune the balance between bandwidth and fidelity per room type without changing simulation logic.

Server-Side Physics Queries

Full physics scene query API available in server scripts: raycasts, overlap tests, and sweep tests. Validate hit detection, trigger area checks, and line-of-sight queries entirely server-side.

Collision Filters

Named collision groups configured in the Unity inspector. No code required. Assign entities to groups and define per-group collision and notification rules. Full collision event API for server-side response.

Object Pooling

Built-in entity factory system supports object pooling out of the box. Reuse game object instances across entity spawns to avoid allocation overhead in high-churn scenes like projectile-heavy games.

Motion Interpolation

Object motion is smoothed automatically regardless of server tick rate or network conditions. Interpolation responds dynamically when the server slows, masking temporary poor conditions without developer intervention.

Time Scaling

Adjust server physics simulation speed at runtime using Time.TimeScale. Implement slow-motion effects, fast-forward simulation, or variable tick pacing without touching your game logic.

Start Fast. Add Complexity
Only When You Need It.

Reactor removes the parts of multiplayer development that cost the most time: rewriting controllers, hand-rolling prediction, managing separate build pipelines for client and server. Most of it is handled for you, or optional.

Client Authority · Unity Ownership

Use Your Existing
Unity Controllers.
No Rewrite Required.

Add ksUnityOwnership and ksAutoSpawn to any game object. When a player connects, the server assigns them ownership, and from that point the client drives the object's transform and properties directly. No player controller port, no server-side physics rewrite.

The server assigns and transfers ownership. One player can own multiple objects simultaneously. Scripts react to ownership state via ksOwnershipScriptManager: enable for the local owner, disable for everyone else, or destroy on disconnect.

When you're ready to harden against cheating, the server-side validation system intercepts property updates before replication. Security is additive: you don't need it in your foundation to build on top of Reactor.

Tutorial: Spawning and Controlling Entities from the Client →
Server: assigns & transfers ownership

Player 1

Vehicle
Cargo A

Player 2

Turret
Shield

Player 3

Crane
Unowned

Validation: intercepts before replication

override ksMultiType OnValidate(
  uint propertyId,
  ksMultiType current,
  ksMultiType incoming)
{
  if (incoming.Float > maxSpeed)
    return current; // reject
  return incoming; // accept
}

Player Controllers · Input Prediction

Instant Feel.
Server Authority.

Reactor's player controller system runs the same controller code on both the client and the server simultaneously. On the server, it applies inputs authoritatively. On the client, it runs ahead of the server to give the feeling of immediate response with no input lag and no waiting for a round-trip.

Custom predictors let you tune how the client reconciles divergence from the server. The default linear predictor handles most cases. For complex movement such as vehicles, physics chains, and curved paths, implement a custom predictor using ksCurves or your own interpolation math.

Player controller: runs on client and server

// Runs identically on both sides
public class AvatarController : ksPlayerController
{
  [ksEditable] private float m_speed = 5f;

  public override void Update()
  {
    ksVector3 velocity =
      new ksVector3(
        Input.GetAxis(Axes.X), 0f,
        Input.GetAxis(Axes.Y)
      ).Clamped(1f) * m_speed;

    velocity.Y = RigidBody.Velocity.Y;
    RigidBody.Velocity = velocity;
  }
}

[ksEditable] fields are exposed in the Unity inspector and configurable per-asset. No code changes needed to tweak speed, turn rate, or jump force across different room types.

New in 1.1

Local Development Server

Rapid prototyping without cloud deploys. Build server configs with Ctrl+F2, rebuild the runtime with Ctrl+F3, and start a local instance in one click. Iterate in seconds, not minutes.

Clean Code Separation

Server, client, and common scripts live in separate assembly folders. Reactor enforces the boundary at build time, preventing accidental Unity references in server code or server logic leaking to clients.

Script Assets

Store configurable server parameters as Unity assets, similar to ScriptableObjects. Assign different controller assets to different rooms without code changes. Editable fields appear in the inspector automatically.

Animation Sync

ksAnimationSync automatically syncs all Unity Animator parameters as networked properties. No manual property mapping. Add the component, set the Animator reference, and replication is handled.

Coroutine Support

Write async server logic naturally using coroutines. Sequence timed events, stagger spawns, implement cooldowns, and build complex event chains without callback nesting or state machines.

Live Server Debugging

Attach Visual Studio to a running local server instance and debug server scripts with full breakpoints, watch windows, and call stacks. The same workflow as any other C# project.

Publishing Workflow

From Unity to
Live Server
in Four Steps.

The entire publishing and deployment workflow lives inside the Unity Editor. No separate CI pipeline, no CLI tools, no context switching. Build, publish, launch, and monitor from the same window where you write your game.

1

Build configs Ctrl+F2

Compiles room, scene, and entity configurations for local testing. Auto-rebuilds when server scripts change.

2

Test locally Start Local Server

Runs a local server instance. Connect from Play mode. Attach a debugger. Iterate without deploying.

3

Publish image Reactor → Publishing

Packages server runtime and configs into a versioned image. Binds the client build to the image automatically.

4

Launch instance Reactor → Servers

Select region, scene, room, and resource configuration. Launch with one click. Monitor and restart from the same panel.

Deploy Once.
Run for Months.

Reactor's cloud layer handles everything between "I want a live server" and "players are playing," without a DevOps contract or a separate infrastructure team. Rooms stay online, orchestration is scriptable, and data persists across instances.

Months

Long-Running Persistence

Rooms run reliably for months without requiring restarts. System-level updates are the only reason to cycle an instance. Build persistent worlds, always-on game servers, and social spaces that never reset between sessions.

1-Click

Integrated Hosting

Launch server instances in any supported geographic region directly from the Unity Editor. Select CPU and memory configuration per room type, set Keep Alive to auto-restart on unexpected crashes, and monitor running instances without leaving Unity.

Scriptable Orchestration

The Cluster API is available to all running rooms, enabling complex multi-server game systems from within a single framework. Build matchmaking lobbies, sharded open worlds, guild systems, or chat rooms, all by scripting how rooms spawn, message, and share state.

KV

Inter-Room Data Persistence

The Cluster data store provides a simple key-value mechanism for sharing state across all rooms in a cluster. A built-in event system lets rooms subscribe to data changes in real-time: player inventory, leaderboards, cross-room flags, and live world state.

v1 / v2

Client-Server Version Binding

Clients are bound to a specific published image. Clients on an old version only see servers running that version, while new clients connect to updated instances. This enables staged rollouts, platform-specific builds, and live updates without forcing everyone to restart.

Roles

Team Management & Access Control

Organize team members into roles (development, QA, and live operations) with appropriate access levels. Real-time and historical resource usage analytics available via the web portal. Public room tags let clients browse instances before connecting.

Self-Hosting

Dedicated Private Hosts
When You Need Full Control.

The local SDK supports self-hosting for up to 32 CCU per instance at no cost, useful for internal testing, LAN play, or evaluation. For production self-hosting, dedicated private hosts are available on any cloud provider.

Features requiring the Reactor Cloud (scriptable orchestration and inter-room data persistence) are available via the hosted service. Everything else runs identically on self-hosted infrastructure.

Self-host limits vs. cloud

CapabilityLocal SDKReactor Cloud
CCU per instance32Configurable
Local server testing
Managed hostingn/a
Cluster orchestrationn/a
Inter-room persistencen/a
Private dedicated hosts

Ready to Build
Without the Ceiling?

Install Reactor via Unity's Package Manager and follow the tutorials. A local development server is included. No account required to start.