Pedi aos desenvolvedores que explicassem por que as portas do PC em 2023 funcionam como lixo
Ao olhar para o estado dos lançamentos de PC em 2023, é fácil começar a apontar o dedo. O jogo não está otimizado (o que quer que isso signifique), ou o editor o lançou muito rapidamente, ou as placas gráficas que a Nvidia tem nos vendido vêm com muito pouco VRAM . Mas essas acusações, na maioria dos casos, são incompletas e presunçosas e, embora insinuem a realidade, não contam a história completa.
Eu queria saber o que realmente estava acontecendo, então me sentei com alguns desenvolvedores para entender o estado dos jogos para PC e por que tantos lançamentos chegaram com problemas tão grandes. Mais importante, eu queria saber o que desenvolvedores e editores poderiam fazer para resolver esses problemas e, embora o caminho a seguir não esteja claro, está ficando óbvio que os desenvolvedores sabem que há um problema.
Qual é o problema?
Primeiro, precisamos identificar o problema central com o PC, especialmente quando os jogos são lançados em estados jogáveis (se não perfeitos) nos consoles, mas chegam terrivelmente quebrados no PC. Em alto nível, o problema com o PC como plataforma é exatamente o que o torna tão atraente em primeiro lugar: flexibilidade.
Marc Whitten, vice-presidente sênior e gerente geral da Unity Create, diz que “a grande diversidade e variabilidade das configurações de PC nas quais os jogos serão jogados … pode definitivamente expor problemas inesperados”. Whitten também aponta para “diferentes sistemas operacionais e novas atualizações de driver, calor e latência e personalização do usuário” como fatores que podem contribuir para o problema.
Essa é a resposta, tenho certeza, que a maioria das pessoas supõe ser a explicação.
Mas a questão, de acordo com Whitten, não é a falta de testes em si. Ele afirma que os jogos são “geralmente testados extensivamente durante o desenvolvimento”. O problema se resume à escala das diferentes configurações que os desenvolvedores precisam testar, bem como às variáveis que eles não podem considerar.
Como um experimento mental, digamos que um desenvolvedor definiu 100 configurações de PC diferentes para testar, variando a CPU, GPU, RAM e disco rígido entre eles. Para o registro, este é um número que estou apenas retirando, não algo que um desenvolvedor realmente referenciou como uma meta realista. Agora, pegue todas essas configurações e multiplique por dezenas de fatores adicionais: Qual sistema operacional você está usando? Qual versão desse SO? E a versão do driver? Quais configurações do BIOS estão habilitadas? Você tem algum software em execução em segundo plano, como Razer Synapse ou Corsair iCue?
O escopo das configurações possíveis vai muito além de apenas qual CPU e GPU você tem em seu sistema, e esses fatores podem facilmente se multiplicar em dezenas de milhares de cenários que os desenvolvedores simplesmente não conseguem explicar. Em um mundo ideal, os desenvolvedores podem corrigir os maiores problemas para as configurações de PC mais populares com as atualizações mais recentes de driver e sistema operacional, deixando apenas pequenos problemas específicos para resolver após o lançamento.
Whitten também não está sozinho nesse sentimento. John Johanas, diretor de jogo de Hi-Fi Rush e The Evil Within 2, diz que “é muito irreal pensar que você pode fazer um produto que funcionará perfeitamente no que parece ser uma configuração ilimitada de CPUs, GPUs, memória e muito mais. provavelmente, o que está sendo executado em segundo plano.”
Hideyuki Miyashita, programador de sistemas do Hi-Fi Rush, concordou, mas apontou especificamente para o custo de otimizar um jogo para todas as configurações possíveis: “Em termos de desempenho do PC, tornar cada recurso gráfico escalonável para diferentes configurações seria o ideal; no entanto, os custos de desenvolvimento colocam um teto superior no suporte de escalabilidade realista.”
Esta não é uma história nova. A grande variedade de configurações do PC é o culpado comum em tudo, desde a dificuldade de otimizar jogos no PC até o motivo pelo qual não vimos o Quick Resume do Xbox aparecer no Windows . A questão é o que os desenvolvedores podem fazer apesar do tempo e dinheiro limitados que possuem. Porque os PCs não estão ficando mais simples, e os jogos ainda chegam quebrados na plataforma.
O que você pode fazer certo
Temos muitos exemplos de jogos com suporte para PC errado este ano. Um excelente exemplo é Star Wars Jedi: Survivor , que atualmente está em um status de revisão “Misto” no Steam, apesar de ser um dos jogos mais aclamados do ano. A revisão principal diz: “Uma única falha corrompeu meu arquivo de salvamento de 99,8% NG + de 140 horas.” Caramba.
Entrei em contato com a equipe de desenvolvimento para ter uma ideia do que deu errado e, embora eles tenham sido inicialmente receptivos, a EA interveio e parou de retornar meus e-mails. Portanto, em vez de ver o que os jogos fazem de errado no PC, precisamos ver o que os desenvolvedores fazem certo.
Hi-Fi Rush é um excelente estudo de caso. É um novo jogo de um estúdio AAA e usa o infame Unreal Engine 4. Você pode pensar que é comparar maçãs com laranjas entre Hi-Fi Rush e um jogo como Star Wars Jedi: Survivor, mas eles têm mais em comum do que você imagina. suspeito. Como aponta Johanas, “… o fato de o jogo ter uma estética de desenho animado dará a alguns usuários a percepção de que o jogo não deve ser um problema para rodar no PC de ninguém. Realisticamente, o jogo faz muitas coisas para alcançar a aparência que buscamos e o mundo em constante movimento que é muito desgastante… Eu sabia disso e me certifiquei de que tentamos atingir essas expectativas.
Definir esse objetivo desde o início parecia importante para a estabilidade do Hi-Fi Rush . Os desenvolvedores observam que era um objetivo do projeto desde o início manter pelo menos 60 quadros por segundo (fps) devido ao fato de ser um jogo de ritmo e um jogo de ação, onde ficar abaixo dessa marca causaria “soluços [que ] pode resultar em uma dessincronização da música e uma experiência de jogo ruim percebida”, de acordo com Johanas.
Como a equipe da Tango Gameworks conseguiu? Ele se resume amplamente a três pontos principais: monitoramento cuidadoso de VRAM, operações assíncronas e armazenamento em cache PSO.
De acordo com Kosuke Tanaka, principal programador gráfico do Hi-Fi Rush, a equipe monitorou o uso de VRAM em todas as etapas do desenvolvimento. Isso inclui monitorar cada nível, é claro, mas também o uso de VRAM de cada seção de arte, pedindo aos artistas que reduzam o uso de textura ou memória de malha para caber no orçamento do jogo. Isso também não é incomum no desenvolvimento de jogos.
O que funciona a favor de Hi-Fi Rush é sua forte direção artística. Como aponta Tanaka: “Nosso estilo de arte nos ajudou um pouco porque não exigimos texturas PBR tradicionais, como mapas normais, mapas de rugosidade ou mapas metálicos”. É uma prova de como trabalhar com limitações criativas e como isso pode influenciar a estabilidade do produto final. Johanas diz que não era uma questão de escopo menor – era uma questão de “não precisar crescer muito sem motivo”.
Perguntei à equipe o que ela aprendeu com o Hi-Fi Rush que poderia levar a projetos maiores e mais amplos, mas não é exatamente assim que o Tango está tirando lições do jogo. Na verdade, a equipe de desenvolvimento me disse que aprendeu muito mais sobre otimização com Ghostwire: Tokyo, que se encaixa mais no molde AAA tradicional, e levou essas ideias para o Hi-Fi Rush, e não o contrário.
“Aprendemos muito do nosso conhecimento sobre como lidar com a gagueira no jogo no Hi-Fi Rush com a nossa experiência de otimização do Ghostwire: Tokyo ”, Miyashita me disse. Uma grande parte disso foi o cache do Pipeline State Object (PSO) . Este é um recurso disponível no Unreal Engine 4 que ajuda a reduzir a gagueira ao pré-compilar shaders antes de executar o jogo.
O principal problema é que o Unreal Engine 4 não faz isso automaticamente, levando a situações em que os shaders precisam compilar enquanto você joga, o que causa gagueira. Miyashita diz que “isso resultou em alguns pós-processos e VFX para causar gagueira”. O programador também diz que o cache do PSO é opcional, então precisa ser um foco específico para o desenvolvedor.
O armazenamento em cache não resolve todos os problemas, e é aí que entram as operações assíncronas. A equipe do Hi-Fi Rush usou compilação assíncrona – onde os shaders são compilados separadamente do thread do jogo – mas também foi um grande foco, considerando que o jogo rodava em Máquina irreal 4.
Como vimos em outros jogos do Unreal Engine 4, como Star Wars Jedi: Survivor e Redfall, o mecanismo não é muito bom em escalar para os muitos threads disponíveis nas CPUs modernas. Como explica Miyashita: “O quão difícil pode ser o suporte a multi-threading depende muito da arquitetura do mecanismo usado. Infelizmente, o UE4 fica um pouco aquém nesse aspecto.”
Em particular, o Unreal Engine 4, de acordo com o desenvolvedor, coloca a criação de atores (objetos/personagens) e widgets (UI e sobreposição) no mesmo thread de CPU do jogo. Isso significa que sempre que o jogo quiser, por exemplo, carregar um novo personagem, ele terá prioridade na thread. Miyashita diz que “isso pode resultar em uma criação complexa de atores e widgets, bloqueando o segmento do jogo por um longo tempo”. Isso é uma gagueira.
A solução são operações assíncronas. Miyashita diz que a equipe usa ferramentas de análise para identificar o que a CPU está fazendo quando os objetos são trazidos e que eles se esforçam para mover essas tarefas para diferentes threads para que o jogo não fique lento. Essa segmentação específica também pode ajudar no carregamento de recursos. Mover essas operações para uma estrutura paralela pode evitar as armadilhas da gagueira de streaming presentes em jogos como Dead Space.
O caminho a seguir para portas de PC
Os jogos que estão sendo lançados em estados desastrosos hoje começaram seu desenvolvimento anos atrás, então, embora eu tenha esperança de que os lançamentos para PC melhorem com o passar do ano, pode levar vários anos até vermos esses problemas centrais resolvidos.
Whitten diz que “os desenvolvedores estão tão preocupados com o desempenho quanto os jogadores”, e esse é um sentimento que ouvi várias vezes. Existem maneiras de otimizar versões de PC, desde sombreadores pré-armazenados em cache até operações assíncronas e validação em uma ampla variedade de hardware. Mas a realidade é que os desenvolvedores não podem dar conta de tudo, devido a tempo ou dinheiro, e geralmente ambos.
O caminho a seguir aqui é simples. Primeiro, deixe os editores desses jogos saberem que você prefere ver um atraso do que um jogo quebrado. Gritar com os desenvolvedores não adiantará muito — eles já conhecem o problema e provavelmente gostariam que ele fosse resolvido tanto quanto você. Em segundo lugar, seja cauteloso ao comprar um novo jogo para PC no dia do lançamento. É difícil ser paciente quando você está ansioso por algo (acredite, eu sei), mas esperar para comprar um jogo até que os problemas sejam corrigidos envia um forte sinal para os editores investirem mais tempo e recursos para garantir que os jogos sejam polidos. no PC.
É fácil esquecer que este ainda é um território desconhecido. Agora, mais do que nunca, os jogos chegam ao PC no mesmo dia em que chegam aos consoles, muito diferente de alguns anos atrás, quando as portas do PC chegavam meses (ou até anos) depois. Duas gerações de consoles atrás, a maioria dos jogos era enviada apenas no mesmo dia para uma plataforma; na geração anterior, eram dois. Agora, espera-se que os desenvolvedores enviem no mínimo três plataformas no mesmo dia e, às vezes, mais de cinco se tiverem uma versão de última geração.
Não é difícil ver por que há problemas no PC, dado esse contexto, mas espero que lançamentos mais sofisticados estejam a caminho.
Este artigo faz parte do ReSpec – uma coluna quinzenal contínua que inclui discussões, conselhos e relatórios detalhados sobre a tecnologia por trás dos jogos para PC.