[Consoles] Relatório de Desenvolvimento Nº1

Sejam bem-vindos à primeira edição da nossa nova série, o Relatório de Desenvolvimento nos Consoles, que de agora em diante substitui as mensagens semanais da comunidade!

E aí, pessoal?

Sejam bem-vindos à primeira edição da nossa nova série, o Relatório de Desenvolvimento nos Consoles, que de agora em diante substitui as mensagens semanais da comunidade!

Planejamos publicar um relatório a cada duas semanas falando do desempenho do jogo, de erros e problemas e de como pretendemos consertá-los. Mas, claro, podemos publicar relatórios com mais ou menos frequência, depende de termos assuntos a tratar.

No relatório de hoje, vamos mergulhar na questão da taxa de quadros e de como pretendemos aumentá-la para proporcionar a vocês a melhor experiência possível.

Introdução

Ficamos sabendo de quedas na taxa de quadros, principalmente nos estágios finais do jogo, quando o combate próximo fica mais frequente. O PUBG calcula todos os elementos do jogo a um raio de 600m do seu personagem. Ou seja, não importa onde você estiver, o jogo vai calcular tudo a até 600m de distância. E, quando chegam as etapas finais do jogo e a zona branca diminui, os jogadores ficam todos concentrados em uma pequena área do mapa. Ou seja, o jogo precisa calcular a presença de mais jogadores no tal raio de 600m. É uma situação parecida com a do salto de todos no começo do jogo, com a diferença de que no final tudo exige ainda mais cálculos, pois os jogadores estão todos equipados. O jogo tem que calcular veículos, trajes, visuais de arma e efeitos de fumaça, entre muitos outros elementos.

Para melhorar o desempenho e reduzir as quedas da taxa de quadros nessas situações, precisamos reduzir os recursos a calcular. E, para contar como faremos isso, temos que explicar o funcionamento do “espectro de visão”. O espectro de visão basicamente significa “o ângulo de visão exibido na tela”. Ou seja, se um inimigo caminha à sua frente e aparece na sua tela, ele está no seu espectro de visão. Nem tudo que está dentro do espectro é exibido no monitor, o que importa mesmo é a direção e o ângulo de visão: se um jogador estiver atrás de uma parede para a qual você estiver olhando, ele estará no seu espectro de visão.

eTAkZcNEYwhd7nrS7macQTlFD1qUjl61qDwogATMok7d8yJ8Sd2WE6XPYULO9uNeJMOST3H-fJ6thIwdcf8UJGPX_Vje_pyaGsW3VfQ0sRPzlNGhQT1suqlsx1cz3LIaNPy9zoug

Dentro do espectro de visão

O que entra no espectro é sempre calculado. É por isso que você vê o movimento de aliados e inimigos. O servidor precisa fazer cálculos de previsão para ser o mais preciso possível na hora de exibir o movimento dos personagens.

Digamos por exemplo que um usuário A esteja correndo em certa direção. Quando o servidor capta a localização do personagem do cliente do usuário A e a envia para você, ele envia a localização em que o usuário A estaria caso tivesse continuado a correr na mesma direção a partir da localização antiga, enquanto o cliente do usuário A envia a localização para o servidor e o servidor envia a localização do usuário A para o seu cliente. Se a discrepância entre as duas localizações for grande demais, ocorrerá uma “falta de sincronia”. De modo a apontar com precisão a localização do personagem, o servidor prevê onde ele estará com base na direção e na velocidade do movimento. O servidor também confere a elevação do terreno e se há um obstáculo no caminho, como uma parede. O cálculo aprimorou o tempo de resposta para localizações de personagens, tornando o jogo mais preciso e corrigindo o erro de sincronia.

Prever o movimento com precisão exigia o cálculo de mais recursos, o que ocasionava a queda da taxa de quadros. Simplificamos o processo acima para eliminar cálculos desnecessários e melhorar o desempenho. Componentes desnecessários de movimento foram removidos. Deu certo, ocasionando menos quedas da taxa de quadros. O gráfico abaixo exibe o “Tempo de cálculo de volume físico por quadro”. Realizamos o teste usando 30 bots e comparando a versão atual do jogo com a versão aprimorada que lançaremos em uma atualização futura. A redução no tempo indica menos cálculos de recursos, ou seja, melhor desempenho.

IDTs1hxdHpNJYnvzDVKHvDAKWu42NUN6se25uioSjgQ0yrhex3NoE_K3eaoCfAHeatBLDNxa7I3GxQfDJm4kg44Y25urJYD6MaG0qJ2zcMF8oiy_oQ-xVZ45BuQMig2Wzrm_Q5al

Fora do espectro de visão

Fora do espectro de visão, também calculamos o movimento de cada personagem. Então, mesmo quando 25 personagens correm fora do seu espectro de visão, o servidor continua calculando todo o movimento de cada um, o que aumenta a quantidade de cálculos e reduz a taxa de quadros. Para alterar o cenário, reduzimos bastante os recursos que exigem cálculo de movimento de personagens fora do espectro.

Quando falamos de personagens, temos dois fatores a considerar: a malha poligonal e o corpo físico. A malha diz respeito ao modelo do personagem, ao som dos passos, dos disparos etc. Já o corpo físico diz respeito aos pontos onde cada personagem pode levar dano. Para personagens fora do espectro de visão, decidimos acompanhar só a parte de renderização da malha poligonal, de modo que a parte física permanece na localização em que o personagem esteve no seu espectro de visão pela última vez. A decisão de só calcular a renderização reduz a quantidade de recursos gastos em mais de 50%.

Quando o seu personagem volta a olhar para o personagem que estava fora do espectro de visão, o jogo reúne a localização física com a localização da renderização do personagem. Então em vez de calcular a todo momento a física desses personagens, agora o servidor só faz o cálculo quando ela entra no espectro de visão. O cálculo pode continuar ou não dependendo de onde estiver a malha do personagem. A localização física continua a mesma enquanto a localização da renderização continua ou não a se mover. Quando a renderização entra no seu espectro de visão, o corpo físico é transferido e unido à malha. Ou seja, se a renderização da malha não estiver no seu espectro de visão, a física continua parada no lugar até a renderização entrar no espectro, e nesse momento a física é transferida para junto da renderização.

O gráfico abaixo exibe as melhorias no “Tempo de cálculo de volume físico por quadro”. Também realizamos o teste usando 30 bots e comparando a versão atual do jogo com a versão aprimorada.

5LGMgkUd5H1cDTidkVk9o1HkFqzOuGgT6uyU8pyt4QrLDP4oMzA7sSz3Pj7RT3PYAxSgK21O0HmhU8JU5TiQMMZ3X_pSmiqQktIPirwz012rZjHOyB2ipiMJWPVNmSREYhU3jLGk

Em conclusão, nossas mudanças, tanto dentro quanto fora do espectro de visão, servem para diminuir o tempo necessário para calcular a localização do personagem, melhorando o desempenho do jogo. Reduzimos os cálculos necessários para que tudo possa correr mais rápido. Com a mudança, não veremos mais tantas quedas da taxa de quadros e teremos até um aumento da taxa média. Vamos continuar nossos esforços para melhorar a taxa de quadros cada vez mais e aprimorar a experiência dos jogadores. Fiquem ligados para nosso próximo comunicado daqui a duas semanas!

Discuta este artigo
Compartilhar este artigo