Lab: Multiplayer / Realtime
Stato replicato: input come comandi/eventi, simulazione autoritativa o CRDT; il bus trasporta aggiornamenti a bassa latenza.
Approfondimento
Definizioni, contesto e collegamenti tra concetti — leggi prima del palcoscenico interattivo se parti da zero.
Rete, sequenze e autorità
Nei giochi realtime, gli input sono comandi; il server autoritativo decide lo stato ufficiale. Il client applica predizione locale per la reattività, poi riconcilia quando arriva un frame con `seq` più recente.
EDA su TCP/WebSocket è comune per metagame e lobby; per FPS strettissimi spesso si combinano protocolli dedicati o UDP con perdita. Il principio resta: eventi ordinati, perdita gestita, stato derivabile.
Debug e replay
Salvare seed, timeline di eventi e snapshot periodici rende riproducibili bug altrimenti elusivi. Il lab mostra una riconciliazione minimale: estendi con buffer di input e smoothing.
Palcoscenico
Step 0/3 — CloudEvent in transito
Contratto e codice
Schema JSON basato su CloudEvents 1.0, poi snippet server e client.
{
"specversion": "1.0",
"source": "/orders-service",
"id": "550e8400-e29b-41d4-a716-446655440000",
"time": "2026-05-13T12:00:00.000Z",
"datacontenttype": "application/json",
"type": "com.example.game.input",
"data": {
"matchId": "m_9z",
"seq": 1042,
"playerId": "p1",
"input": { "dx": 1, "dy": 0 }
}
}