Se o jogo está ocupado e demora para tirar os pacotes do socket (a interface de envio e recepção de rede oferecida pelo SO), o buffer do SO estoura.
Por quê Os frames atrasam e o jogo lê o socket tarde → Efeito O buffer de recepção do SO enche: o UDP descarta pacotes, e o TCP reduz a janela de recepção para parar o envio → Na tela Teleporte (UDP) ou avanço rápido (TCP)
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Usar uma thread dedicada à recepção, ajustar o tamanho do buffer (SO_RCVBUF).
Números de referência
O buffer de recepção padrão tem de dezenas a centenas de KB, conforme o SO e a configuração. Em lugares cheios, as atualizações podem chegar a centenas de KB por segundo.
No gráfico
Sobe com a carga · Descartes no buffer de recepção UDP, frame time
Onde olhar
Registrar no Monitor de Desempenho do Windows Microsoft Winsock BSP\Dropped Datagrams (datagramas UDP descartados por falta de espaço no buffer de recepção do socket) e UDPv4\Datagrams Received Errors junto com o frame time, e contar no jogo as lacunas na sequência dos pacotes recebidos
Confirma se
Em lugares cheios ou logo após frames longos, Dropped Datagrams aumenta e, no mesmo momento, surgem lacunas na sequência do jogo. No mesmo horário, não há perda do lado da conexão
Descarta se
Dropped Datagrams estável, mas com números faltando na sequência: perda no caminho
Como verificar
Verificação no ambiente do jogador
Fontes
socket(7) — Linux manual pageLinux man-pages SO_RCVBUF é o tamanho máximo do buffer de recepção do socket; o padrão vem de rmem_default e o máximo de rmem_max (o Android também usa kernel Linux)
RFC 9293: Transmission Control Protocol (TCP)IETF O campo de janela do TCP é o número de bytes que o receptor ainda pode receber; se for 0, o emissor só envia zero window probes e espera
Low Latency Workloads Management and OperationsMicrosoft Dropped Datagrams e Dropped Datagrams/sec do conjunto de contadores Microsoft Winsock BSP: datagramas UDP descartados porque chegaram mais rápido do que o app processa ou porque faltou espaço no buffer do socket de recepção