Framework for data access
Surge
The same application code works with a single PostgreSQL server or with many distributed databases. Surge generates the access code at compile time.
Key facts
- for .NET, with the access code generated at compile time instead of by reflection at runtime
- compatible with ahead-of-time compilation
- no memory allocations on the frequently used paths
- multi-tenant by construction, with separate caches per tenant
- currently for PostgreSQL via Npgsql
In use
Jump Jupiter accesses its data stores through Surge.
For your projects
What Surge demonstrates, I also deliver in client projects without Surge: data access without runtime overhead, cleanly separated tenants and a database that can be changed without changing the application.
Game clientUnity for Windows, macOS and Linux
Communication
Main serverC# and .NET
Communication
Simulation serversUnity, one per CPU core
Data access
Data storesdistributed, in memory and persistent
My own Kubernetes cluster in Germanywith self-hosted key management and container registry
Architecture of Jump Jupiter, a real-time multiplayer game in development, designed and developed by me.
- PulseFramework for communication between servers
- SurgeFramework for data access
- Direct connection between client and simulation server while a player is in a room.