Estamos criando um jogo de tiro em primeira pessoa para multiplicadores. O cliente envia sua posição para o servidor a uma taxa fixa (atualmente em 10Hz). O servidor envia uma única mensagem contatando todas as posições do jogador para todos os jogadores na mesma taxa (10Hz).
Como esperado, o movimento é bastante instável, pois o jogo a 60fps está recebendo atualizações apenas 10 vezes por segundo. Qual é a melhor maneira de suavizar esse movimento? A maneira mais óbvia seria interpolar entre os dois últimos pacotes, para que a interpolação termine à medida que recebemos um novo pacote. Mas isso adiciona um atraso instantâneo de 100ms para todos os jogadores.
A outra maneira seria usar a velocidade e a aceleração inferidas nos últimos pacotes para prever onde o jogador está antes da chegada do próximo pacote; no entanto, se a previsão estiver errada, o jogador tenderá a pular assim que um novo pacote for recebido .
Alguém sabe como os títulos AAA resolvem esse problema?