Downloads
C# · netstandard2.1 · Any Game Engine

NUCLEUS

State-Synchronized Multiplayer Networking

Mark a field and it replicates. Underneath that one line sits a tick-aligned, bit-level engine that your game grows into rather than out of.

Simple to start
One CoreManager, a transport, and the fields you want replicated. No packet code, no wire format to design, nothing to hand-serialize.
Hard to outgrow
Prediction and replay, stacking interest rules, multi-writer objects, ownership and cheat reporting are already in the box when you reach for them.
From the team behind Fish‑Networking
The free framework a generation of Unity multiplayer games shipped on. Nucleus is what we built next: the same instincts, with no engine wrapped around them and nothing inherited that we would not write again.
01 / Bandwidth

Send the change,
not the object.

Position and rotation ride in 1.5 to 3 bytes per update. Values pack down to the bit, only what changed goes out, packets batch themselves, and any value can be told to send less often than the rest.

  • Around 85% less traffic than whole-value frameworks
  • Full snapshot for new arrivals, deltas for everyone else
  • Send interval set per value, not per game
  • Near-zero garbage, so the CPU cost stays flat too
Bytes on the wire, per object update
Nucleus1.5 to 3 B
Quantised floats~15 B
Raw position + rotation28 B
One moving object, one tick, position and rotation only.
02 / Game Feel

Instant to the player.
Honest on the server.

Input applies the moment it is pressed, and the server still decides what happened. When the two disagree the client rewinds to the server tick, replays everything since, and carries on without the player noticing.

  • Prediction with reconciliation and replay
  • Projected physics for owned and remote bodies
  • Smooth at any frame rate and any send rate
  • Lost updates repaired instead of desyncing
One mispredicted tick
Client
Server
Replay
Predicted locally Server disagrees Rewound and replayed
The server has only answered up to the tick it disagreed on. Every input since is re-applied, right up to the one being pressed now, and the player keeps moving the whole time.
03 / Scale

Four players.
Or four thousand.

Interest rules decide who hears about what, which is the lever that sets your ceiling. Memory and bandwidth stay flat as players arrive. At party size the same engine hands one object to several clients and keeps the session alive when the host walks away.

  • Interest rules that stack per system and per connection
  • Multi-writer objects, with the winner decided and attributed
  • Host migration and couch co-op on one connection
  • Lists, sets, dictionaries and queues that replicate themselves
Party
  • Several clients driving one object
  • The session survives the host leaving
  • Two people on one machine, two players
Persistent
  • Interest rules cap every feed
  • Spawns paced per connection
  • Memory flat as players arrive
04 / Fair Play

Clients send input.
Never truth.

Control of an object is granted and revoked while the game runs. Every write is checked against who was allowed to make it, and a dozen kinds of misbehaviour reach your code with the detail attached and a sensible punishment already chosen.

  • Ownership handed out and taken back at runtime
  • Value-level validators that can decline a write
  • Your own account system, with nothing visible before approval
  • Deterministic step order, so a bug reproduces
Caught for you, reported to you
Writes to an object it does not controlRejected
Input stamped for a tick that already passedDropped
More spawns in a tick than the server allowsThrottled
State that never converges to the serverReported
Examples. Each one arrives on a callback you can override.
05 / Your Stack

Your engine.
Your servers.

netstandard2.1 with no engine dependency and no per-player fee. Mark a field and it replicates, swap the transport in one line, run it on whatever you already rent, and configure it from launch flags the way deploy pipelines expect.

  • Unity, Godot, Flax, or a bare server process
  • Synapse for UDP, Yak for offline tests, or your own
  • Roslyn code generation, no runtime reflection
  • Port and address from the command line
🎮
Official Unity integration included
Components, custom inspectors and the source generator ship with the engine, alongside demo scenes you can open, run and copy from.
🐦
Godot
Mono / .NET
Flax
.NET Runtime
🖥️
Standalone
.NET 6 / 8
🔧
Custom
Any Engine
Code

One CoreManager.
Then your game.

Create a CoreManager and pick a transport. Every sub-manager wires itself up, the tick loop starts, and what you write from there is game code.

Connect.cs
// One engine object, and the same transport type, on both sides.
CoreManager core = new();
Synapse transport = (Synapse)await core.TransportManager.AddTransportAsync<Synapse>();

// As the server: listen, and hear about players as they arrive.
await transport.ConnectAsync(Invoker.Server);

core.ServerManager.ClientAuthenticated += connection =>
    Console.WriteLine($"Player {connection.Id} joined");

// As a client: point at the host and go. Nothing else changes.
transport.RemoteHost = IPAddress.Parse("203.0.113.42");
await transport.ConnectAsync(Invoker.Client);
Theme: