Fortnite

Atualização de Desempenho do BRFN

30.10.2017
O desempenho importa, e apesar de estarmos constantemente progredindo para trazer melhorias, regredimos um pouco em alguns momentos e, no geral, não estamos onde gostaríamos em longo prazo.

Do ponto de vista do jogador, a manifestação dos problemas relacionados ao desempenho são:

Cliente
  • Taxa de quadros baixa -> aumento na latência de entrada de dados, intervalo alto entre quadros
  • Latência no vídeo -> aumento na latência de entrada de dados
  • Atrelamentos (tempo de quadro anormalmente longo) -> vídeo congelado seguido de avanço rápido
  • Taxa de quadros inconsistente -> dificuldade ao mirar

Servidor
  • Taxa de atualização de conexão/taxa de quadros do jogador baixa -> aumento no ping
  • Atrelamentos (tempo de quadro anormalmente longo) -> "efeito elástico"

Rede
  • Perda de pacote -> "efeito elástico"
  • Saturação na conexão da banda larga -> "efeito elástico"
  • Ping alto -> "efeito elástico"
  • Estouro de pacote (especialmente usando Wi-Fi) -> "efeito elástico"

"Efeito elástico" é quando há inconsistências entre o cliente e o servidor que resultam em uma correção extrema. Sejam movimentos bruscos de outros jogadores, interações estranhas com portas, etc.

Diversos problemas diferentes resultam no efeito elástico, e há várias raízes para esses problemas. Por exemplo, nossos servidores podem sofrer atrelamentos por problemas no nosso código, por impactos negativos de outros servidores que estão funcionando na mesma máquina (vizinhança barulhenta) ou por problemas com o sistema operacional ou hardware do anfitrião, resultando em uma degradação no desempenho, mas não em falhas totais (falhas parciais).

Sua conexão com nossos centros de dados é impactada principalmente pela nossa escolha do local dos centros de dados e pelo seu ping em relação a eles, mas também há muita variação no ping com base no caminho que seus pacotes fazem. Também existe possibilidade para latência adicional ou perda de pacotes se você estiver usando Wi-Fi.


Eis o que estamos fazendo ou precisamos fazer na parte de monitoramento:
  • Rastrear o desempenho do cliente de várias classes de hardware de GPU segmentadas por configurações de resolução e gráfico para entendermos o impacto de nossas mudanças.
  • Rastrear atrelamentos de cliente com algum peso com base no impacto na experiência do jogador.
  • Rastrear pacotes de rede do cliente (e o tempo entre eles) recebidos do servidor e fazer o mesmo com servidor recebido do cliente.
  • Rastrear o desempenho do servidor e número de quadros perdidos — nosso primeiro objetivo é executar em 20 Hz de maneira estável.
  • Rastrear o desempenho do servidor agregado por máquina virtual para identificar máquinas ruins e removê-las.
  • Rastrear o ping e a perda de pacote por região e por provedor de internet para informar e escalar quando detectarmos anomalias.
  • Rastrear situações que resultam em momentos de desespero. Por exemplo, banda restringida e perda de pacote resultando em maior envio de tráfego, o que só piora as coisas.


Eis o que precisamos fazer na parte de desenvolvimento:
  • Melhorar o desempenho nos sistemas de PC com a configuração mínima (Nvidia GTX 460, Radeon HD 5570, Intel HD 4000). Essa é uma área em que recentemente pioramos as coisas, mas demos os primeiros passos para corrigir a questão na v.1.8. Não vamos parar por aí.
  • Corrigir travamentos de GPU no PC e continuar trabalhando com fornecedores de placas de vídeo, como NVIDIA, AMD e Intel, para melhorar o desempenho e a estabilidade.
  • Melhorar a latência de entrada de dados nos consoles. Melhorias aplicadas na v1.8 — conte pra gente o que achou.
  • Continuar nosso avanço nas melhorias do desempenho no console. Rastreamos a porcentagem de VSYNCs perdidos e queremos ficar abaixo de 2% (ou quase) de perda de quadros.
  • Reduzir atrelamentos durante o jogo. Definimos um atrelamento como um quadro que durou mais de 60 ms, resultando no salto de um quadro inteiro. O objetivo é ter menos de um por minuto, visando eliminar completamente atrelamentos acima de 100 ms.
  • Corrigir atrelamentos restantes em servidores dedicados. Por exemplo, se muitos jogadores entrarem atrasados, isso pode causar efeito elástico para jogadores que entraram antes.
  • Otimizar o desempenho do servidor para ações comuns, como receber dano.
  • Identificar a fonte de atrelamentos limitados à primeira hora do lançamento de uma atualização.
  • Otimizar nosso servidor e código de rede para permitir o envio de estado de jogador para todas as 100 conexões por quadro. No momento, estamos atualizando 25 conexões por quadro no lobby e 50 durante o jogo. Isso significa que sua experiência de jogo não está onde gostaríamos até que restem 50 jogadores. Essa é uma grande mudança na qual estamos trabalhando paralelamente a outras otimizações.
  • Melhorar a forma como lidamos com casos extremos que podem resultar em momentos de desespero.
  • Melhorar o sistema de pareamento para encaminhar tráfego dinamicamente para centros de dados dentro de uma região baseada na localização. Basicamente, ter a habilidade de otimizar o ping sem atrapalhar a oportunidade de jogar com amigos.
  • Contratar mais pessoas inteligentes e apaixonadas por esses tipos de desafios técnicos.


Eis as coisas que você pode verificar e potencialmente abordar:

Verificar se os drivers da sua placa de vídeo estão atualizados e, se não estiverem, atualizá-los para a versão mais recente.

Atualmente, estamos operando nossos servidores em centros de dados AWS ao redor do mundo, e você pode visitar http://www.cloudping.info/ para verificar rapidamente o seu ping em relação a eles.
  • AN — Virgínia, Ohio
  • UE — Frankfurt, Londres
  • OCE — Sydney
  • BR — São Paulo
  • ÁSIA — Tóquio

A Riot Games está hospedando www.lagreport.com, que é uma ótima fonte de informações gerais sobre provedores de internet. A aplicabilidade para o Fortnite pode variar.

Se você estiver usando Wi-Fi e puder testar uma conexão com fio, talvez seja uma tentativa válida para melhorar a latência, reduzir perda de pacotes e reduzir estouro de pacote.

As configurações da sua TV também podem causar impacto na latência, e há vários guias disponíveis on-line sobre como ajustar suas configurações. Eis um exemplo.

No PC, você pode usar artigos como este para verificar se há algum processo inesperado em segundo plano que drena recursos.