한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Guia do Lag em Jogos › Design de sincronização

Erro de predição no netcode de rollback Rollback misprediction

ID da causa sy-rollback · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)

Abrir o card interativo, com figuras e simulações →

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

Sintomas
Teleporte
Fatores
Latência, Jitter
Quem é afetado
Só eu
Quando
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

  1. GGPO Rollback Networking SDK GGPO
    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
  2. 8 Frames in 16ms: Rollback Networking in 'Mortal Kombat' and 'Injustice 2' GDC
    O rollback elimina o atraso de input local do lockstep, voltando e recalculando até 8 frames em 16 ms

Veja também

Mesma camada: Design de sincronização

Mesmo sintoma (Teleporte) em outras camadas

Ver o card interativo, com figuras e simulações