Avalanche de spawns ao entrar em área lotada Spawn burst when entering a crowd
ID da causa sp-spawn-burst · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento)
Quando o jogador se teletransporta para uma cidade lotada, o servidor precisa enviar de uma vez a aparência, o equipamento e o estado das centenas de jogadores que acabaram de entrar no campo de visão.
Por quê Teletransporte, login ou troca de canal fazem o jogador aparecer de repente num lugar lotado → Efeito O servidor monta e envia de uma vez os dados completos de centenas de jogadores, e seu PC também carrega tudo de uma vez → Na tela Uma pausa curta logo ao chegar, personagens aparecendo com atraso, um por um, e comandos respondendo com atraso
Em movimento ou ao trocar de mapa, Logo após login ou manutenção
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Servidor: enviar em ordem de proximidade, dividindo entre vários ticks, cachear os dados de aparência. Cliente: receber antecipadamente durante a tela de carregamento, criar os personagens recebidos aos poucos ao longo de vários frames.
Números de referência
Se os dados de aparência, equipamento e buffs de um jogador têm 300 bytes, 500 jogadores dão cerca de 150 KB. Dezenas de vezes o volume normal de um tick (alguns KB) chegam num instante.
No gráfico
Pico logo após abrir ou manutenção · Bytes enviados por conexão, frame time do cliente
Onde olhar
Bytes e pacotes enviados naquela conexão nos primeiros segundos após chegar a um lugar lotado (log do servidor) e frame time do cliente (net graph, log do cliente)
Confirma se
Logo após a chegada, o volume enviado naquela conexão dispara para dezenas de vezes o de um tick normal e depois baixa, e no mesmo instante o frame time do cliente também dá pico
Descarta se
O mesmo travamento acontece ao ir para um lugar vazio: aponta para troca de mapa (transferência entre servidores) ou carregamento no cliente
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Fontes
Detailed Actor Replication Flow in Unreal EngineEpic Games Ao abrir pela primeira vez um canal de ator, envia junto dados como posição e rotação iniciais; quando a conexão satura, os atores restantes ficam para o próximo tick
Actor Priority in Unreal EngineEpic Games Prioriza por distância e direção do olhar, enviando primeiro os atores próximos e visíveis