Stiamo costruendo un gioco multiplayer in tempo reale, in cui ogni giocatore è responsabile di riportare il proprio stato su ogni iterazione del ciclo di gioco.
Gli aggiornamenti di stato vengono trasmessi utilizzando UDP inaffidabile .
Per ridurre al minimo l'invio di dati di stato, abbiamo creato un sistema che invierà solo delta (indipendentemente dai dati di stato che sono stati modificati).
Questo metodo tuttavia è imperfetto, poiché un pacchetto perso significherà che gli altri giocatori non riceveranno il delta, facendo in modo che il gioco si comporti in modo inaspettato.
Per esempio:
Supponiamo che lo stato sia composto da: {positionX, positionY, health}
Frame 1 - positionX changed --> send a packet with positionX only.
Frame 2 - health changed // lost !
Frame 3 - positionY changed --> send a packet with positionY only.
// Altri giocatori non conoscono i cambiamenti di salute.
Come si può superare questo problema allora? l'invio di tutti i dati non è sempre fattibile.