Orçamento de envio e prioridade por conexão Per-connection bandwidth budget and priority
ID da causa pt-priority · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento)
Se o servidor limita quanto envia por conexão e manda primeiro o que está mais perto, o lado com limite mais baixo recebe tarde, ou nunca recebe, os NPCs distantes.
Por quê Em lugares lotados, o servidor envia por ordem de importância dentro do limite de envio de cada conexão → Efeito Uma conexão com estimativa de banda baixa (ex.: janela em segundo plano que confirma o recebimento tarde) continua adiando as entidades do fim da fila → Na tela NPCs distantes aparecem tarde ou não aparecem em um só lado
Só um dos clientes no mesmo PC, Local ou canal específico
Quando
Quando junta muita gente
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: aumentar com o tempo a prioridade das entidades adiadas (para evitar starvation), garantir um intervalo mínimo de atualização. Cliente: enviar as confirmações de recebimento a tempo mesmo em segundo plano, para a estimativa de banda não cair.
No gráfico
Sobe com a carga · Entidades adiadas por conexão, volume enviado por conexão
Onde olhar
Registrar no servidor, por conexão e por tick, os bytes enviados, o limite de envio (banda estimada), quantas entidades ficaram adiadas sem envio e quanto tempo passou desde o último envio de cada entidade. No Unreal, o Networking Insights mostra o tamanho dos pacotes por conexão e as entidades replicadas em cada um
Confirma se
O NPC invisível é uma entidade adiada há muito tempo nessa conexão, o limite dela é mais baixo que o das outras conexões, e as entidades adiadas aumentam quanto mais lotado o lugar
Descarta se
Sem entidades adiadas e com o NPC enviado a tempo: aponta para etapas depois do envio (buffer de recepção, carregamento, opções de exibição). Todas as conexões encostadas no limite: problema de volume de envio ou de design de visibilidade do servidor inteiro
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Fontes
Actor Priority in Unreal EngineEpic Games Com a banda saturada, os atores a replicar são escolhidos por prioridade (distância, linha de visão, tempo desde a última replicação). Nem todos os atores são replicados toda vez
State SynchronizationGaffer On Games Acumulação de prioridade: entidades que não couberam neste pacote entram primeiro no próximo, e o limite de banda é ajustado em tempo real
Networking Insights in Unreal EngineEpic Games Mostra, por conexão, o tamanho dos pacotes enviados e recebidos e as entidades e propriedades replicadas em cada um