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.
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.