Relatório do Desenvolvimento Consolas #1

Bem-vindos à primeira edição do novo Relatório do Desenvolvimento Consolas!

Olá a todos e bem-vindos à primeira edição do novo Relatório do Desenvolvimento Consolas, que irá substituir as publicações semanais de comunidade! Como referimos anteriormente, este relatório será publicado de duas em duas semanas e abordará questões de performance e desenvolvimento, bem como a sua resolução. No entanto, esta calendarização poderá ser alterada consoante a quantidade de conteúdos a divulgar.

Na publicação de hoje, vamos analisar mais a fundo os FPS (frames por segundo) e como planeamos aumentá-los para satisfazer as expectativas de todos os jogadores do PUBG.

Introdução

Os jogadores têm denunciado situações de abrandamento de frames por segundo, especialmente nas fases finais que envolvem mais combate corpo a corpo. O PUBG calcula os recursos numa área de 600 m em redor da personagem. Isto quer dizer que onde quer que a tua personagem esteja, tudo o que a rodeia num raio de 600 m será calculado. Nas fases avançadas do jogo, quando a zona branca encolhe, os jogadores concentram-se num círculo mais pequeno. Ou seja, há mais jogadores dentro do pequeno círculo no qual os recursos são calculados. É semelhante ao que acontece com os hot drops, mas em jogos mais avançados normalmente há mais recursos a calcular, pois muitos dos jogadores que chegam a esta fase estão totalmente equipados. Há uma grande quantidade de recursos a calcular, tais como veículos, roupas, skins de armas e fumo.

Melhorar a performance e reduzir a taxa de abrandamento de FPS nestas situações implica reduzir esses recursos calculados. Para explicar como o conseguimos, primeiro temos de explicar o que é o “Espectro de Visão“. O espectro de visão é, essencialmente, “o ângulo de visão mostrado no monitor”. Assim, se um inimigo passar à tua frente e for visualizado no ecrã, esse inimigo está dentro do espectro de visão. No entanto, nem sempre o que está dentro do espectro de visão surge no ecrã. O que conta é a direção e o ângulo de visão – um jogador que esteja atrás de uma parede para onde estejas a olhar está dentro do teu espectro de visão.

image1.png.76060b8d6297821d942557dcb9784a6c.png

Dentro do Espectro de Visão

Quando algo está dentro do espectro de visão, esse algo é sempre calculado. Assim, os movimentos das personagens dos teus aliados ou inimigos são sempre mostrados. Para mostrar os movimentos das personagens com a maior precisão possível, o servidor faz alguns cálculos base.

Digamos que o jogador A se move numa dada direção. Quando o servidor recebe a localização da personagem do cliente do jogador A e a envia de volta, a localização que é enviada é a antiga, pois a personagem continua a mover-se enquanto o cliente do jogador A envia a localização ao servidor e o servidor a envia ao teu cliente. Quando o erro entre ambos é demasiado grande, isso cria uma dessincronização. Para dar uma localização mais precisa, o servidor prevê a direção e velocidade do movimento do jogador para calcular a localização futura. Para fazer esta previsão, o servidor verifica a elevação do terreno nessa direção e quaisquer obstáculos que possam bloquear o jogador, como por exemplo um muro. Isto melhora significativamente o tempo de resposta da localização da personagem, aumentando a precisão e resolvendo os problemas de dessincronização.

Seria necessário calcular muitos recursos para prever exatamente o movimento da personagem e isso era uma das causas do abrandamento de FPS. Para melhorar a performance, reduzimos o processo e removemos os cálculos desnecessários. Componentes da animação desnecessários foram também removidos. Isso reduziu o abrandamento de FPS e melhorou a performance. O gráfico abaixo mostra o “tempo de cálculo da física por frame”. O processo foi testado com 30 bots e compara a versão atual com a versão melhorada que irá ser incluída no patch a lançar num futuro próximo. O tempo foi reduzido por haver menos recursos a calcular, o que melhora a performance.

image2.png.4281a336dd240efd69c3f9d3c5bc0076.png

Fora do Espectro de Visão

Também calculamos o movimento de cada personagem fora do espectro de visão. Quando havia 25 personagens fora do teu espectro de visão, o seu movimento era totalmente calculado, o que causava abrandamento de FPS devido ao elevado número de cálculos a efetuar. Para resolver isso, reduzimos significativamente os recursos calculados nos movimentos das personagens fora do espectro de visão.

Há dois fatores a ter em conta numa personagem. Há a componente de renderização e a componente da física. A renderização relaciona-se principalmente com o modelo da personagem, o som dos passos, dos tiros, etc. A física relaciona-se principalmente com os pontos de vida da personagem. Fora do espectro de visão, decidimos atualizar apenas a componente de renderização da localização da personagem, mantendo a componente da física na última localização da personagem no espectro de visão exterior. Calculando apenas a renderização, conseguimos reduzir os recursos calculados para menos de metade.

Quando a tua personagem olha novamente para a personagem fora do espectro de visão, a localização física é atualizada para a localização de renderização da personagem. Agora, em vez de calcular constantemente a localização da física, esta apenas é calculada quando surge no espectro de visão. Se a localização da física é calculada ou não vai depender da localização de renderização da personagem. Como a localização da física se mantém e a localização de renderização continua a mover-se (ou não), quando a localização da física entra no teu espectro de visão, ela é transferida para a localização de renderização. Se nesse momento a localização de renderização não estiver no teu espectro de visão, a localização da física fica naquele ponto até que entre novamente no teu espectro de visão, sendo então transferida para a localização de renderização da personagem.

O gráfico abaixo mostra o “tempo de cálculo da física por frame” melhorado. Este processo também foi testado com 30 bots e compara a versão atual com a versão melhorada.

image3.png.6d080c6dc89ea54bcd1b71b0cb283114.png

Em suma, as alterações dentro e fora do espectro de visão vão reduzir o tempo necessário para calcular a localização dos jogadores e assim melhorar a performance. Ao reduzir os recursos a calcular, reduzimos também o tempo de cálculo. Esta alteração levará a que haja menos abrandamento de frames e também irá aumentar a média de FPS. O nosso objetivo será sempre aumentar os frames para melhorar a experiência dos jogadores. Dentro de duas semanas publicaremos um novo relatório com mais atualizações!

Obrigado

Equipa PUBG

Discuss this article
Share this article