O jogo prevê o input do adversário e mostra o resultado antes; se errou, volta no tempo e recalcula. Quanto maior o ping, maior o trecho que precisa voltar.
Por quê O adversário muda o input (diferente do previsto) → Efeito O input real chega meio ping atrasado, e o jogo volta esse tanto e recalcula → Na tela Os movimentos do adversário pulam alguns frames ou mudam de repente
Ao fazer ações específicas, Aleatoriamente, de vez em quando
Responsável
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Adicionar de 1 a 3 frames de atraso de input para reduzir quanto o jogo volta, definir um limite para a volta.
Números de referência
Com ping de 100 ms (50 ms em cada sentido), a 60 FPS o jogo volta cerca de 3 frames. Com 2 frames de atraso de input, cai para 1 frame.
No gráfico
Picos aleatórios · Frames voltados, RTT (ping)
Onde olhar
Registrar no cliente, a cada rollback, quantos frames voltou, o RTT no momento, a configuração de atraso de input e o tempo gasto para voltar e recalcular
Confirma se
No instante em que o movimento do adversário pulou, o número de frames voltados é alto, e a volta média é aproximadamente (latência de um sentido − atraso de input) ÷ tempo de frame, crescendo com o ping
Descarta se
Volta pequena, mas com engasgos: problema de desempenho, o recálculo passa do tempo de um frame. Resultados que continuam diferentes nas duas telas depois da volta: divergência no resultado do cálculo (desync)
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Fontes
GGPO Rollback Networking SDKGGPO Prevê o input do adversário e segue em frente; se o input real for diferente, recalcula do ponto da divergência até o presente