Buffer de interpolação ausente ou curto demais Missing/short interpolation buffer
ID da causa cg-no-buffer · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)
Se o cliente desenha os pacotes do servidor assim que chegam, o jitter (variação no intervalo de chegada dos pacotes) aparece direto na tela.
Por quê A posição recebida é desenhada na hora, ou o buffer é menor que o jitter → Efeito A imagem para quando um pacote chega atrasado e pula quando vários chegam juntos → Na tela Os outros personagens se movem engasgando: para, anda, para
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: ter um buffer de interpolação e ajustar o tamanho dele automaticamente conforme o estado da conexão. Servidor: aplicar compensação de lag (voltar no tempo para decidir o acerto), para que o registro de acerto funcione mesmo quando o jogador atira em uma imagem atrasada pelo tamanho do buffer.
Números de referência
Em geral, o buffer fica em cerca de 2 vezes o intervalo de envio de pacotes do servidor (100 ms se o cliente recebe 20 pacotes por segundo).
No gráfico
Sempre alto desde o início · Intervalo de chegada dos pacotes, vezes em que o buffer de interpolação esvaziou
Onde olhar
Registrar no cliente a distribuição dos intervalos de chegada dos pacotes do servidor e o número de frames em que a interpolação parou ou passou para extrapolação por falta do próximo snapshot
Confirma se
A variação no intervalo de chegada passa com frequência do tamanho do buffer de interpolação e, a cada vez, o buffer esvazia e os outros personagens dão um engasgo. Aumentar o buffer reduz o problema
Descarta se
Engasgos mesmo com buffer suficiente: verificar se o próprio intervalo de envio do servidor está irregular (atraso no tick)
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Saiba mais
Um buffer maior deixa o movimento mais suave, mas faz você ver o adversário no passado na mesma proporção. Por isso, junto com ele se usa a compensação de lag: para decidir um ataque, o servidor volta no tempo até o “passado que aquele jogador estava vendo” e confere o acerto.
Physics (Netcode for Entities 6.5)Unity Compensação de lag: o servidor reconstrói o mundo de colisão que o cliente via naquele tick e decide se houve acerto