Skip to content
Crowd Control

The engine

NetNgine.

A real-time multiplayer synchronization engine, written from scratch in C#. Not tied to any single game: the core never knows the rules of what runs on top.

In development Not public yet

The problem it solves

Real-time multiplayer is hard in a specific way: the server and a dozen clients constantly disagree about the present, and have to be talked back into agreement without the players ever noticing. Off-the-shelf middleware hides that behind a black box — which is fine until you need to understand or change what it's doing.

NetNgine is the opposite bet: a bounded, incrementally-grown base I understand end to end. It doesn't try to match the feature set of commercial networking stacks. It tries to do a smaller set of things clearly, and to stay changeable.


How it's built

The engine is split into modules, each with a small, fixed public contract that stays stable as the internals change. A game is added by implementing a module against those contracts — the core never grows a special case for it.

ECS core

The world and its entities.

Transport

Reliable/unreliable messaging over UDP.

Sync

Snapshot generation and delta application.

Interest management

Each client only hears about what is near it.

Persistence

State that outlives a session (Redis + PostgreSQL).

Sharding

Splitting a world across processes, with handoff.

On top sits a Godot (C#) client, and a set of deliberately small demos — ping-pong movement, a shooter, a two-zone world, an inventory with real persistence — that each stress a different module rather than trying to be a game.


Where it is today

Honestly: an engine that works, and no finished game yet.

What works: client-side prediction and reconciliation, lag-compensated hit detection, grid-based interest management, cross-process sharding with handoff, and a match lifecycle that creates and tears down isolated match instances. It holds up under a headless load test of up to 500 bots, with tick timing, bandwidth and ping reported to Grafana.

What doesn't exist yet: a public build, and a real game. I'm taking my first steps on a small MOBA to prove the stack — right now that's a working 1v1 matchmaking flow, basic movement, and destructible towers.


Stack

Server
.NET 8 (C#)
Client
Godot 4 (C#)
Transport
UDP (reliable + unreliable)
Hot state
Redis
Persistence
PostgreSQL
Observability
Prometheus + Grafana
Matchmaking
NetMaking (Go, optional)

License: to be decided (MIT or Apache 2.0) when the engine's repository opens up.