Divergência na predição do cliente Prediction mismatch / reconciliation
ID da causa cg-predict · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)
Seu cliente mostra o movimento antes da confirmação; se o servidor calcular de outro jeito, seu personagem é puxado.
Por quê O cliente move o personagem antes da confirmação do servidor (predição) → Efeito O servidor calcula colisão, velocidade de movimento ou buffs de outro jeito, ou não recebe o comando → Na tela Quando a confirmação chega, seu personagem é puxado para trás
Em movimento ou ao trocar de mapa, Aleatoriamente, de vez em quando
Responsável
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Cliente: usar o mesmo código de movimento do servidor, enviar os inputs em duplicidade, corrigir de forma suave. Servidor: usar o mesmo código de movimento do cliente, descartar pelo número do input os inputs que chegam duplicados e processar cada um só uma vez.
Números de referência
A distância do puxão é “tempo de divergência × velocidade de movimento”. Basta perder alguns comandos para dar 1–3 m.
No gráfico
Picos aleatórios · Número de reconciliações com o servidor (falhas de predição)
Onde olhar
Registrar quantas correções de posição o servidor enviou e a distância corrigida. No Unreal, as correções ClientAdjustPosition do servidor; no Unity Netcode for Entities, quantas vezes a predição falhou e foi revertida e recalculada
Confirma se
As correções se concentram nos horários dos reports de rubber banding, e correções grandes se repetem com certos buffs, terrenos ou skills de movimento
Descarta se
Correções concentradas só nos momentos de muita perda: aponta para perda dos pacotes de input (conexão). Sem correções, mas com outros personagens parecendo puxados: “Extrapolação excessiva (dead reckoning)”
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Fontes
Introduction to prediction (Netcode for Entities 6.5)Unity Cliente e servidor fazem a predição com o mesmo código de simulação; se o resultado diverge do estado do servidor (falha de predição), o cliente reverte e recalcula, e a correção fica visível