State-Synchronized Multiplayer Networking
A tick-based, bit-level networking engine built for multiplayer games. Authoritative server architecture, transport-agnostic, with delta state replication that plugs into any C# runtime.
Every byte counts in multiplayer. Nucleus is engineered to give you surgical control over what gets sent, when, and to whom — with zero compromise on performance.
Instantiate one CoreManager and the engine bootstraps itself. Every sub-manager wires up, cross-subscribes, and the tick loop stands ready.
Get a networked game running in minutes. Nucleus handles the complexity so you can focus on building your game.
// Bootstrap the entire engine with one line CoreManager core = new(); // Add a real UDP transport (LiteNetLib) Transport transport = await core.TransportManager .AddTransportAsync<Tugboat>(); // Start listening as an authoritative server await core.TransportManager.ConnectAsync(Invoker.Server); // React to clients joining core.ServerManager.ClientAuthenticated += (Connection client) => { Console.WriteLine($"Player {client.Id} connected"); }; // Drive it from your game loop core.NetworkLoopManager.Start();
Every design decision in Nucleus prioritises performance. Bit packing, delta replication, and object pooling combine so your game uses less bandwidth, less CPU, and less memory — every tick.
Nucleus targets netstandard2.1 with no runtime dependencies. Plug your game loop in, swap the transport, and it works — in Unity, Godot, Flax, or a bare-metal server process.
INetworkLoopStepProvider to feed Nucleus ticks from Unity's Update, Godot's _Process, or any custom game loop.Transport to support Steam Sockets, EOS, or anything else.// Production — real UDP over the internet await core.TransportManager.AddTransportAsync<Tugboat>(); // Testing — offline in-process loopback await core.TransportManager.AddTransportAsync<Yak>();
Nucleus is available now. Add the package, create a CoreManager, and you're networked — in minutes, not weeks.
CoreManager. All 7 sub-managers wire up automatically. Add a transport and start the loop.