The Teaching Hub
DB: …

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

ServerAuthoritative
BrokerFan-out match
ClientReconcile UI
{ "matchId": "m_9z", "seq": 1042 }

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

Lab: sequenza e riconciliazione

Simula predizione client + frame autoritativo: se seq server > locale, resetta allo stato server.

Caricamento playground…