The server is the referee
Your screen moves you right away, but every position is checked against speed and the world's limits. A move that does not add up is corrected back.
A meeting space in orbit around a shared sun, where every person is a glowing star or planet. Browsers ask one agent where to play, then talk to a game server over a live connection; game servers mirror shared rooms to each other so people on different servers still see one another.
Supervisor starts the agent and the four servers, and restarts any that crash.
Today a server keeps no chat history. A separate database service will store it.
Redis Streams or Kafka instead of direct server links, once there are more servers or machines.
More than one agent behind a load balancer, so the agent is no longer a single point of failure.
Send each player only the people near them, cutting traffic in very large rooms.
Your screen moves you right away, but every position is checked against speed and the world's limits. A move that does not add up is corrected back.
Twenty times a second a room sends just the players who moved, packed in 7 bytes each. People standing still cost nothing.
A game server only accepts a connection that carries a ticket the agent signed for that exact server and room, used within 30 seconds.
Room updates; your own movement is sent at the same pace while you walk.
Position and facing in each update, instead of 12 bytes before the binary protocol.
Measured in rooms of 1,000 with 20% of people walking, keeping delays under 50 ms.
Outgoing traffic for those 5,000 players; the network, not the CPU, is the next limit.
One shared map at /r/<name>. Everyone with the same link is together.
A server heartbeat, 20 per second, when a room sends out what changed.
A short-lived pass from the agent naming your room, your server and your player id.
The direct links between game servers that keep a shared room identical on each of them.
Moving a player to a less busy server without them leaving the room or losing their spot.
Cluster version (branch scale-out). Without cluster settings the same image runs as a single
game server that also plays the agent's role. Numbers measured on a development machine; see
docs/cluster.md for the technical design.