Porque motivo alguns jogos vindos das consolas, no PC podem demorar largos minutos a arrancar?

O maior tempo de carga normalmente acontece na primeira vez que se arranca o jogo. Mas pode ocorrer de novo sempre que as drivers são atualizadas, ou há uma alteração no hardware.

Pagando em dois lançados no PC não há muito tempo, Forza Horizon 5 e Horizon: Zero Dawn, o que encontramos de comum em ambos?

Muitos poderiam ser tentados a dizer que é o termo Horizon mas na realidade há muito mais do que isso. O que estes dois jogos têm em comum é que eles derivam de consolas, estando altamente otimizados para elas, e é essa situação que traz esta sobrecarga na primeira carga ao PC.

Certamente já repararam que quando se arranca um Forza Horizon no PC pela primeira vez ele apresenta um ecrã que refere algo do género: “Aguarde, a otimizar para o seu PC”. Um processo que pode demorar largos minutos.



E esta situação ocorre igualmente com Horizon Zero Dawn uma vez que o jogo também tem tempos de espera para otimização que pode, por vezes, e dependendo do sistema, atingir os 15 ou mais minutos.

Apesar de está ser uma situação que, teoricamente só acontece uma vez e na primeira carga, na prática isso não é verdade. E o processo repete-se sempre que há ou uma alteração no hardware do PC ou uma alteração nas drivers do sistema, algo que obriga o PC a otimizar novamente e a perder de novo imenso tempo no processo.

O que se passa então que obriga a perder este tempo?

O que temos aqui é, como o texto indica, uma otimização do hardware. Algo que deriva da otimização extrema que o jogo possui nas consolas, e que, pela partilha do código, acaba transferido para o PC. Trata-se da realização de uma pré-compilação dos shaders que o jogo vai utilizar, uma situação que permite otimizar as performances dentro do jogo de forma a que a compilação não precise de ocorrer ao mesmo tempo que o jogo está a ser executado, permitindo assim libertar toda a potência do GPU para processamento do resto do jogo. Permite ainda compilar shaders de maior qualidade, que seriam muito pesados de serem calculados em tempo real.

Esta é basicamente uma otimização normal e comum nos jogos First Party para as consolas. No entanto as consolas não passam por este processo uma vez que, por possuírem hardware fixo (igual em todas), esta compilação pode ser realizada previamente e já vir incluída no código do jogo. No entanto com um PC e isso torna-se impossível de realizar da mesma forma pois a variedade de hardware e software é de tal forma gigante que, para uma compilação adequada, este tem que ser sempre analisada caso a caso, obrigando a que ela seja realizada no momento.



Mas pode então surgir a questão: Mas dado que as consolas também tem atualizações de drivers porque motivo é que quando há essa atualização tal afeta o PC, mas as consolas não?

A resposta está nas diferenças estruturais das drivers:  As drivers das consolas, mesmo que alteradas, nunca se alteram muito. E isso acontece porque elas são específicas para o hardware usado! Já no PC as drivers são genéricas e envolvem normalmente o suporte a uma gama alargada de modelos que podem não só ser de de gerações diversas, como podem suportar arquiteturas diversas, e características e suporte hardware completamente diferente.

Por esse motivo e não sendo possível saber se com o que se conta em cada máquina específica, sempre que há uma alteração às configurações iniciais, o PC tem que recomeçar basicamente do zero otimizando novamente todo o jogo.

A alternativa que poderia poupar este tempo de carga demorado na primeira utilização e/ou sempre que há alterações, seria recompilar os shaders durante o jogo. No entanto, como já se referiu, essa situação implica sempre algumas quebras de performance.

Resumidamente, esta é uma situação pouco comum de ser vista no PC, mas que ocorre aqui por estarmos perante em jogos devidamente otimizados para consola e posteriormente convertidos para PC. Por norma, jogos que sejam criados tendo igualmente o PC em mente desde o processo de conceção, não fazem esta otimização. Consequentemente, as performances, particularmente nas consolas, acabam por ser mais penalizadas.  Jogos consolas que usam motores genéricos, ou que são multiplataforma, por norma tratam a consola como um normal PC, dispensando esta otimização. Há, claro, excepções:



Black Ops – Cold War – PC

Mas nos dois jogos em questão, por serem First Party, a ideia presente na sua criação foi a utilização (otimização) plena do hardware das consolas, o que levou a que no jogo original para as consolas a compilação de shaders já viesse pré realizada e incluída no código do jogo.  Desta forma pode-se contar sempre com a performance máxima do GPU, permitindo que este se superasse, e dessa forma criar jogos com um nível de qualidade que seriam impossíveis de outra forma, nesse mesmo hardware.

Quem acaba posteriormente por sofrer com isso é o PC, que não pode ser otimizado de igual forma, tendo de levar depois com estes tempos de otimização a cada primeira execução, ou sempre que algo mais relevante for alterado no sistema.

 



12 Comentários
Antigos
Recentes
Inline Feedbacks
Ver todos os comentários
AlterX
8 de Janeiro de 2022 13:15

lol
Nunca tinha reparado nisso, e eu sou uso SSD sata.. por enquanto

Mário Armão Ferreira
Responder a  AlterX
8 de Janeiro de 2022 13:28

Pelos vistos então não jogaste nenhum destes jogos.
Porque os tempos são consideráveis, e mesmo o meu PC com um SSD de 4 GB/s demora minutos na primeira carga destes jogos.
É impossível não se notar.

Sparrow81
Sparrow81
Responder a  Mário Armão Ferreira
8 de Janeiro de 2022 13:41

.

Last edited 2 anos atrás by Sparrow81
AlterX
Responder a  Mário Armão Ferreira
8 de Janeiro de 2022 15:57

Nunca tinha notado que era isso
Passei tanto tempo jogando em HD que quando tem um loading mais lento, eu só penso que é por causa do navegador que eu deixo aberto e tal
Eu tenho dois monitores

tiohildo
tiohildo
8 de Janeiro de 2022 14:26

OFF:

Eu fiquei esperando análises mais profundas do demo do Matrix na mídia especializada. Achei que faltaram mais testes de performance em cenários particulares.
Gostaria da ajuda de vocês para confirmar ou não uma impressão que eu tive realizando o seguinte teste abaixo.

Ao que tudo indica ( pode não ser, pode ser também na GPU) a física da destruição dos carros é feita na CPU.
As vezes o FPS cai brutalmente ( eu não medi mas deve ficar na casa dos 10 ) quando você acelera um carro e bate numa fila de carros estacionados. ( é muito aleatório quando acontece).
Ao que tudo indica, o FPS cai por limitação de CPU em calcular tanta física de destruição.

Ok, mas nas opções é possível colocar a IA da densidade da multidão em 0% ( que em teoria ocuparia algum processamento da CPU).

Assim, nesse novo cenário eu tive a impressão que o FPS fica mais estável nas colisões ( só impressão, não fiz análise de frames e pela natureza aleatória do teste).

PS: Estou assumindo que ao colocar 0% de densidade da multidão os cálculos não estão sendo feitos, contudo eles podem estar sendo feitos mesmo assim, apenas não sendo exibidos na tela, o que eu não consigo comprovar ou não.
Estou assumindo também que o fato que o fato da multidão não estar sendo desenhada na tela não produz ganhos significativos de fps.
O jeito mais fácil de provocar essas colisões que abaixam o FPS é pegar aquele carro que parece um porsche, acelerar a mais de 60 mph e colidir com uma fila de carros estacionada fazendo um efeito que os carros começaram a deslizar por cima do seu carro. Também coloquei o transito de veículos em 0% para não atrapalhar.

PS2: As vezes você realiza as colisões mas sai da área onde os carros ficarão colidindo e a câmera não está os mostrando mais, contudo eles ainda sofrem deformação, e mesmo assim, o FPS continua baixo pois os cálculos continuam impactando a performance.

Daniel Torres
Daniel Torres
8 de Janeiro de 2022 15:21

E eu aqui lendo sobre o Nanite para o Direct, achei coisas bem interessantes e acredito saber o porque do xbox ter um desempenho inferior do que o Ps5, vai ser interessante conversar sobre isso.

Juca
Juca
8 de Janeiro de 2022 21:38

Interessante, não sabia que era esse processo que acontecia, pensei que fosse devido a algum processo pra gerar save na cloud ou a criação de algum cache em disco pra agilizar o game.
No PC só joguei FH 3 e 4, e esse processo também acontece, jogos de PS não tenho no PC, nem os pretendo comprar, a menos que a Sony enverede pela não exclusividade.

Deto
Deto
8 de Janeiro de 2022 21:49

será que os drivers não são mesmo alterados muito nos consoles?

pq simplesmente o console não pode ter vários drivers? o jogo é feito para a versão 1.2; mas sai update do console que adiciona outro driver, 1.3. Os jogos novos simplesmente usam o 1.3

Daniel Torres
Daniel Torres
8 de Janeiro de 2022 22:46

Mário, Carlos e Felipe eu achei esses artigos falando sobre o Ray-Tracing inclusive uma maneira de de ter um Skipp nas Bvh:

https://meistdan.github.io/publications/bvh_star/paper.pdf

https://arxiv.org/pdf/1910.01304.pdf

Carlos Eduardo
Carlos Eduardo
Responder a  Daniel Torres
9 de Janeiro de 2022 20:32

Obrigado Daniel. Quando puder irei ler.

error: Conteúdo protegido