Framework for communication between servers
Pulse
A call to another server looks like a function call in code. Pulse generates the code for it at compile time, and the transport can be swapped.
Key facts
- for .NET, built for real-time servers, distributed services and communication within a host
- transports: reliable UDP, shared memory and AF_XDP with zero-copy receive on Linux
- one shared protocol and code generation pipeline for all transports
- low latency, without memory allocations during operation
In use
Jump Jupiter runs on Pulse: the game client, main server and simulation servers communicate through it.
For your projects
What Pulse demonstrates, I also deliver in client projects without Pulse: code generated at compile time, interchangeable transports and connections with access control.
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.