Se o servidor compara todos com todos para saber quem pode ver quem, quando o número de jogadores aumenta 10 vezes, o cálculo aumenta 100 vezes.
Por quê Compara a distância entre todos os personagens, ou, mesmo dividindo em grade (grid), centenas de jogadores se juntam perto de uma célula → Efeito Com 100 jogadores são cerca de 10 mil comparações; com 1.000, cerca de 1 milhão → Na tela Em aglomerações, como world boss e guerra de castelo, o tick dispara: câmera lenta e engasgos
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Dividir em grade ou setores e comparar só com quem está perto, atualizar com menos frequência quem está longe, limitar o número de jogadores que cada um vê.
Números de referência
Somando a comparação de distância e a atualização das listas de quem vê e quem não vê, se cada par de jogadores custa 0,1 µs (um décimo de milionésimo de segundo), 1.000 jogadores (cerca de 1 milhão de pares) dão 100 ms por tick. É o dobro do orçamento de 20 ticks (50 ms).
No gráfico
Sobe com a carga · Tempo de tick do servidor, jogadores reunidos num só lugar
Onde olhar
Jogadores por zona ou canal e tempo de tick no mesmo gráfico, com o tempo gasto no cálculo de visibilidade medido à parte dentro do tick. Sem essa medição, a fatia de CPU por função do processo do jogo com perf top -p
Confirma se
Quando o número de jogadores reunidos num lugar dobra, o tempo de tick quase quadruplica, e as funções de visibilidade e de distância ocupam a maior parte do tempo de CPU
Descarta se
Tempo de tick crescendo na proporção do número de jogadores, ou funções de envio e serialização com fatia grande: explosão de broadcast ou custo de serialização e compressão
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo
Replication Graph in Unreal EngineEpic Games O modelo padrão, que avalia todas as conexões para cada ator, vira gargalo de CPU no servidor com muitos jogadores e atores; MMORPGs e similares dividem o mundo em grade e reutilizam as listas por célula
perf-top(1) — Linux manual pageperf Mostra em tempo real a fatia de uso de CPU por função (símbolo) de um processo (-p) ou thread (-t) em execução