Se o horário do servidor estimado pelo cliente está errado, ele retém informações de entidades que acabaram de chegar, como se fossem “do futuro”, ou as descarta como “antigas demais”.
Por quê A estimativa do horário do servidor de um dos clientes erra muito (medida durante o carregamento, volta do modo de economia de energia) → Efeito O horário de referência da interpolação não bate com o horário das informações da entidade → Na tela A entidade aparece tarde ou fica parada
Depois de ficar parado, Logo após login ou manutenção
Responsável
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Refazer a sincronização de horário periodicamente e redefinir na hora se a diferença for grande, não usar valores medidos durante o carregamento ou logo após voltar do modo de economia de energia.
No gráfico
Alto só em alguns · Erro na estimativa do horário do servidor por cliente
Onde olhar
Registrar no cliente o horário do servidor estimado, o RTT, os momentos em que a sincronização de horário foi refeita e quantas vezes informações de entidades foram retidas ou descartadas. Tentar reproduzir logo após um carregamento ou logo após voltar do modo de economia de energia
Confirma se
Só no cliente com problema o erro de estimativa passa do limite de redefinição (no Unity, hardResetThresholdSec, padrão de 0,2 s), há registro de informações retidas como futuras ou descartadas como passadas, e refazer a sincronização de horário resolve na hora
Descarta se
Erro de estimativa pequeno, mas a entidade aparece tarde: aponta para “Orçamento de envio e prioridade por conexão” ou para o carregamento
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Fontes
NetworkTimeSystem class (Netcode for GameObjects 2.5)Unity Se a diferença de tempo passa de hardResetThresholdSec (padrão de 0,2 s), força o acerto; no resto do tempo, ajusta aos poucos com adjustmentRatio, acelerando ou desacelerando