Atualização na consistência das partidas do VALORANT – 2
Oi de novo! Somos a equipe de Tecnologia de Mecânica de Jogo do VALORANT e viemos aqui para continuar mostrando nossas descobertas e ações em relação à consistência da mecânica de jogo.
Se quiserem relembrar o que já foi dito, basta ler nossa publicação anterior, que foi feita no mês passado. Nela, falamos sobre temas gerais envolvendo os feedbacks da comunidade e quais áreas seriam investigadas (latência, exatidão e desempenho de jogadores com ping alto).
Como a publicação anterior já introduziu o assunto e explicou os motivos dos problemas, hoje queremos falar mais sobre duas das principais áreas que melhoramos: latência e buffering. Vamos falar sobre a importância desses tópicos no VALORANT e compartilhar algumas conclusões da nossa investigação, assim como as correções/melhorias realizadas e as ações que vamos tomar a longo prazo.
Aqui vai um resumo do que vamos implementar no lançamento da Atualização 4.10:
- Descobrimos e corrigimos alguns erros que ocorriam depois de surtos de instabilidade na rede, baixa taxa de quadros no cliente, apertar ALT + Tab ou longos períodos de oscilação de rede.
- Tudo isso fazia os jogadores afetados sentirem uma combinação de atrasos tanto no processamento dos comandos no servidor quanto nos movimentos dos inimigos na tela.
- Com a Atualização 4.10, as mudanças que aplicamos devem melhorar como o buffering de rede funciona em tais situações, além de disponibilizar dados para que os próprios jogadores saibam o que está acontecendo nos bastidores.
- Essas mudanças tratam da principal causa que encontramos para o problema de latência de rede e tempos de reação entre partidas, mas vamos continuar monitorando e fazendo melhorias na área futuramente.
- Se esses problemas continuarem acontecendo, os novos gráficos devem ajudar a medir o tamanho do problema.
- Se possível, continuem nos enviando feedback juntamente com vídeos das situações por meio do nosso canal de Suporte ao Jogador.
LATÊNCIA E BUFFERING
Na publicação passada, mencionamos que ainda estávamos investigando o desempenho da latência e do buffering de rede dentro do VALORANT. Essa investigação foi concluída, e as correções para alguns dos erros chegarão na Atualização 4.10.
Mas antes de falarmos a fundo sobre o assunto, precisamos aprender o que significa "buffering de rede" e "atraso de processamento". Vai ajudar muito!
Em jogos online como o VALORANT, o jogador envia seus comandos para o servidor para que sejam executados, já que o servidor tem a visão correta do jogo como um todo. Toda vez que o servidor atualiza a simulação do jogo (que acontece 128 vezes por segundo), os comandos inseridos no cliente precisam ser realizados pelo Agente. Se os comandos sofrerem um atraso durante o percurso pela internet, o servidor não vai esperar a chegada deles e vai precisar simular uma ação.
Essa ação simulada pelo servidor frequentemente não é a mesma do comando atrasado. Sendo assim, a discordância resulta em correções de movimento exibidas no cliente como pequenos teleportes para a localização correta. Quando muitas dessas correções acontecem, o jogo fica "travando", e pode até mesmo se tornar impossível de ser jogado.
Para evitar que isso aconteça, o servidor precisa armazenar algumas ações previsíveis e executá-las com um pequeno atraso. Essa estratégia é bem comum para qualquer transmissão de dados pela internet, já que ajuda a garantir que o servidor vai conseguir executar tudo de maneira suave para cada quadro do Agente. Porém, esse armazenamento temporário, ou buffering, adiciona um atraso antes mesmo de o servidor processar os movimentos, e, se for usado em excesso, pode parecer que o jogador está jogando com um ping muito mais alto do que o exibido pelo Tempo de Trajeto Completo da Rede (Network Round Trip Time).
Fornecer a quantidade correta de armazenamento é fundamental para o jogo. Afinal, com pouco armazenamento, o jogador receberá muitos movimentos criados pelo servidor e correções no cliente e, com o aumento do buffering, o ping também aumenta, e o jogador ficará mais suscetível a sofrer com a vantagem de ping do inimigo. Se equilibrarmos isso direitinho, o VALORANT terá uma jogabilidade mais fluida e ágil.
Da mesma forma que os servidores armazenam movimentos antes de aplicá-los, o cliente também precisa armazenar informações sobre os movimentos dos inimigos antes de serem exibidos na tela. Isso evita que os alvos pareçam estar se teleportando pelo mapa quando a conexão está ruim, facilitando o rastreamento dos outros participantes e trazendo mais fluidez à jogabilidade.
A investigação
Como parte da nossa investigação, era necessário ter uma perspectiva melhor dos desempenhos desses dois armazenamentos. Com esse fim, criamos uma ferramenta de debug para rastrear o tempo que os movimentos levavam para percorrer completamente cada um dos armazenamentos. Usando a ferramenta, realizamos testes para ver em quais situações isso não estava funcionando corretamente.
Um dos problemas investigados (e que foi apontado pela comunidade) foi o aumento do atraso do processamento de disparo ao apertar ALT + Tab. Colocar todo o jogo em segundo plano com a opção "Limitar FPS em segundo plano" acabava emulando um grande problema de desempenho do cliente causado por uma alteração na taxa de quadros. Após restaurar o jogo para o plano principal, o aumento repentino de taxa de quadros fazia o armazenamento do servidor aumentar muito. Já no cliente, a sensação era de jogar com o ping muito alto, situação que não era mostrada pelos gráficos de trajeto da rede.
Simular um pico de latência no cliente também gerava um efeito parecido. Um pico de valor alto para baixo aumentava o armazenamento do servidor para o cliente específico, e um pico de valor baixo para alto aumentava o armazenamento do cliente para outros jogadores. Em qualquer um dos casos, toda essa alteração causaria uma latência aparentemente alta até que as coisas voltassem ao normal.
O sistema atual eventualmente resolveria os problemas em ambos os casos, mas descobrimos que o processo poderia demorar mais tempo do que o esperado para se recuperar totalmente, resultando em um período maior de latência elevada.
Sendo assim, implementamos duas correções que devem atenuar mais rapidamente esses estados de armazenamento sobrecarregados, fazendo a latência alta ser vista apenas por pequenos períodos onde ainda é necessário suavizar a experiência de jogo.
Correções e melhorias
A primeira correção implementada ajusta a velocidade com que o armazenamento volta ao normal quando algum fator resulta em acúmulo de dados. Ajustamos a capacidade do sistema de processar movimentos, assim ele se ajustará mais agressivamente conforme o armazenamento aumenta.
Com isso, os acúmulos de movimentos armazenados serão processados muito mais rápido. Por exemplo, antes dessa mudança, com cinco movimentos extras armazenados, poderia levar até cinco segundos para tudo normalizar. Agora, com as novas melhorias, isso levará menos de um segundo. Isso significa que os jogadores que vivenciaram momentos impactantes, como engasgos e picos de rede, serão afetados pela latência do armazenamento extra durante um período bem menor.
Entretanto, em casos mais extremos, o acúmulo de movimentos armazenados pode crescer tanto que a espera pelo processamento ainda pode levar alguns segundos, mesmo com a correção acima. Agora, quando isso acontecer, vamos redefinir o armazenamento fazendo com que todos os movimentos, exceto pelo mais recente, sejam ignorados. A vantagem disso é fazer com que a remoção de latência aconteça imediatamente, garantindo uma correção de movimento.
Descobrimos que, em casos extremos, como grandes interrupções de taxa de quadros e picos de rede, obter uma correção de movimento é melhor do que esperar alguns segundos para o processamento ser reajustado. Normalmente, receber uma correção é menos prejudicial do que os longos períodos de latência alta encontrados pelos jogadores antes da correção. Essa alteração poderá ser notada ao restaurar o jogo depois de apertar ALT + Tab com a opção "Limitar FPS em segundo plano" em um valor baixo. Como isso resulta em uma alteração drástica da taxa de quadros e, consequentemente, um estado de armazenamento sobrecarregado, a correção agora resolverá o problema rapidamente.
Também encontramos outros problemas relacionados durante a investigação: jogadores com oscilações de rede constantes frequentemente alternam entre armazenamentos altos e baixos, já que o sistema tenta equilibrar a latência com o número de movimentos simulados pelo servidor. Mas já estamos trabalhando em uma solução para ajustar melhor o armazenamento levando em conta esse tipo de oscilação de rede constante.
Planos futuros
Juntamente com as mudanças mencionadas, concluímos que a comunidade não tem uma ferramenta adequada para visualizar os atrasos de processamento atual. Como os gráficos que criamos internamente foram muito úteis para identificar o problema, adicionamos um novo gráfico de desempenho chamado "Tempo de trajeto completo da rede + Atrasos de processamento", que captura as informações da rede juntamente com os atrasos do servidor e cliente.
O tempo exibido nele será equivalente ao atraso medido com o antigo "teste da faca". Quando as coisas estiverem funcionando bem, um valor razoável para o gráfico deve ser aproximadamente 20ms – 30ms maior que o tempo de trajeto completo da rede (Network RTT), embora o valor ideal varie de acordo com as condições exatas de rede e taxa de quadros.
Além disso, também adicionamos um gráfico chamado "Oscilação de tempo de trajeto completo da rede" que mostra as alterações de pacote no trajeto. Picos e oscilações de ping geralmente exigem armazenamento temporário extra, então adicionamos isso como um gráfico para ajudar no diagnóstico das condições de rede que normalmente não seriam exibidas no gráfico normal por conta da média do valor.
Também implementamos algumas telemetrias adicionais, assim poderemos coletar dados envolvendo os atrasos de processamento em cada partida. Revisaremos esses dados com frequência para monitorar a integridade do jogo e determinar se as correções implementadas surtiram o efeito desejado e se mais correções e melhorias são necessárias.
Por último, mesmo lendo publicações em várias redes sociais, queremos adaptar nossas pesquisas para receber feedbacks aprofundados a respeito da qualidade das partidas, envolvendo tanto a qualidade de conexão quanto a mecânica de tiro. Pensando nisso, adicionaremos e revisaremos algumas das perguntas para abordar essas áreas específicas.
PRÓXIMA ATUALIZAÇÃO
Esperamos que essas melhorias ajudem a reduzir um pouco da inconsistência quando o ping aparentemente está normal. Se problemas desse tipo ainda forem encontrados nas partidas, os novos gráficos de atraso de processamento e oscilação poderão ajudar a calcular o problema e diagnosticar possíveis causas. E, caso a partida esteja sendo gravada, os gráficos visíveis fornecerão um pouco mais de informação para detectar melhor onde o problema se encontra.
Finalizamos essa atualização com um grande agradecimento a todo mundo que publicou vídeos e análises dos problemas apontados. Apreciamos muito todo o amor pelo nosso jogo e todo o esforço para nos ajudar a melhorá-lo! E, como sempre, levamos muito a sério todos os feedbacks.
Fiquem de olho para mais uma atualização! Nela, falaremos sobre a seleção de servidor e como isso está relacionado à latência alta e ao desempenho individual de cada pessoa.