Estamos criando um jogo multiplayer em tempo real, no qual cada jogador é responsável por relatar seu estado em todas as iterações do ciclo do jogo.
As atualizações de estado são transmitidas usando UDP não confiável .
Para minimizar o envio de dados de estado, criamos um sistema que enviará apenas deltas (quaisquer que sejam os dados de estado que foram alterados).
Este método, no entanto, é falho, pois um pacote perdido significa que outros jogadores não receberão o delta, fazendo com que o jogo se comporte de maneira inesperada.
Por exemplo:
Suponha que o estado seja composto por: {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.
// Outros jogadores não sabem sobre mudanças de saúde.
Como alguém pode superar esse problema então? nem sempre é possível enviar dados completos.