O diretor técnico da Croteam, Alain Ladawach, que participou do desenvolvimento do Serious Sam e do Princípio Talos, conta como conseguiu encontrar o motivo da desaceleração dos gráficos, mesmo nas máquinas mais poderosas.Por fim, surgiu uma explicação do motivo pelo qual alguns jogos estão diminuindo a velocidade do seu PC (e um raio de esperança de que eles parem de diminuir no futuro próximo).
Freios TT
Você estava ansioso pela próxima parte da sua série favorita de videogame para PC e ela finalmente foi lançada. Desta vez, você deseja desfrutá-lo por completo, gastando tempo e dinheiro em uma preparação completa. Você substituiu o processador, instalou uma placa gráfica ultramoderna, adicionou mais RAM - diabos, você comprou RAID em um SSD. O jogo deve ser suave a partir do próprio protetor de tela.
A pré-encomenda finalmente está desbloqueada e você acabou de concluir a instalação. Em antecipação nervosa, você inicia o jogo pela primeira vez. Até aí tudo bem - ele roda a 60 quadros por segundo. Ou pelo menos é o que o contador de quadros do sintonizador de GPU diz. Mas algo está errado. Você faz movimentos agudos e caóticos com o mouse. Correia esquerda e direita, e então o jogo ... começa a desacelerar! Porra, como isso é possível? Como pode diminuir a velocidade de 60 quadros por segundo?
Se isso nunca aconteceu com você, isso pode parecer ridículo. Mas se você os tiver experimentado, provavelmente odiará os freios de todo o coração. Freios em jogos. Este não é um bom e velho "atraso". Não é uma taxa de quadros baixa. Esses são apenas “freios” que ocorrem com altas taxas de quadros em máquinas ideais e super-rápidas. O que é, de onde eles vieram e como se livrar deles? Deixe-me contar uma história ...
Freios, suavidade, velocidade ... eles são a mesma coisa?
Os videogames estão rodando a 60 fps desde a época das
primeiras máquinas de fliperama nos anos 70. Geralmente, espera-se que o jogo seja executado na mesma frequência que o monitor usa. Isso foi antes da popularização dos jogos em 3D, nos quais pela primeira vez uma taxa de quadros reduzida se tornou aceitável. Nos anos 90, quando as "
placas 3D " (como as chamamos antes de se tornarem "
GPUs ") começaram a substituir a renderização de software, as pessoas jogavam jogos a 20 fps e 35 fps era considerado um valor decente para batalhas sérias na rede.
Eu não estou brincando .
Hoje temos carros super rápidos e "é
claro, eles podem trabalhar a 60 fps ". No entanto, o número de usuários decepcionados com a velocidade dos jogos dos usuários nunca é maior. Como isso é possível? O problema não é que os jogos não possam rodar rápido o suficiente, mas que eles diminuem a velocidade
mesmo quando podem rodar rápido !
Se você ler diferentes fóruns de jogos, certamente encontrará mensagens semelhantes:
Você pode pensar que estes são problemas únicos, mas observe as estatísticas das consultas de pesquisa do Google:
Nos últimos cinco anos, os freios (gagueiras) tornaram-se um problema (relativamente) mais sério que a velocidade!(Observe que esses são valores relativos. Eles não significam que, em geral, as pessoas perguntam mais sobre a frenagem do que sobre a taxa de quadros. Elas significam que as solicitações de taxa de quadros permanecem no mesmo nível e o número de solicitações de freios aumenta. , especialmente recentemente.)
Uma década em busca da causa dos freios inexplicáveis
É provável que o paciente esteja vivo ou morto, apenas diminua um pouco mais do que o necessário.Encontrei esse problema pela primeira vez em 2003. Trabalhamos no
Serious Sam 2 , e os usuários começaram a nos enviar relatórios de que testavam algo em um nível vazio e que, ao mover o mouse, os movimentos não eram suaves. Isso foi acompanhado por um padrão muito característico no gráfico da taxa de quadros, que chamamos de “cardiograma”.
Pensamos que em algum lugar do código havia um erro, mas não conseguimos encontrá-lo. Parecia que o problema aparece e desaparece aleatoriamente - após reiniciar o aplicativo, reiniciar a máquina ... e então o player mudou alguma opção de velocidade e ela desapareceu. Em seguida, o player ativou essa opção novamente, mas o problema não retornou. Ela parecia um fantasma.
Obviamente, esse problema surgiu não apenas conosco. Observando os mesmos problemas em outros jogos, começamos a pensar que os drivers eram os culpados. Mas isso aconteceu em placas de vídeo de diferentes fabricantes. Mesmo em APIs diferentes (OpenGL, DirectX 9, DirectX 11 ...) - a única coisa que eles tinham em comum era que apareciam em máquinas diferentes, em algumas cenas ... às vezes.
Nessie, pé grande ... quase tão esquivo quanto o problema com o "cardiograma".Lançamos mais alguns jogos, mas esse comportamento estranho ainda apareceu e desapareceu. Irritou alguns usuários e recomendamos que eles alterem as opções de velocidade - às vezes isso ajuda, outras não. Isso é vida, não é?
Mas um dia, em um grande dia de inverno no início de 2013, meu colega Dean me chamou para ver outro exemplo desse problema, que ele poderia reproduzir de forma relativamente estável na época. Desta vez, o problema surgiu no nível de
Sam Sério 3 . Experimentamos opções nesta cena até que de repente me ocorreu. Eu entendi qual era o motivo! E ela era muito simples - não admira que tenha escapado de todos por uma dúzia de anos.
Ao alterar apenas
uma opção muito simples do mecanismo do jogo, conseguimos fazer com que esse problema aparecesse e desaparecesse nessa cena específica. Mas imediatamente ficou óbvio para nós que seria necessário muito esforço para sua solução de alta qualidade. Esforços não apenas de nossa parte, mas também de todo o ecossistema de jogos para PC - programadores de drivers de GPU, desenvolvedores de API, fornecedores de SO - todos.
Deixe-me explicar.
Qual foi o motivo todo esse tempo
Gostaria de mostrar um exemplo de uma cena de Serious Sam 3, que Dean e eu exploramos há cinco anos. Ou melhor ainda - usando a cena de teste do Serious Sam 2 como exemplo, na qual a vimos pela primeira vez. Mas, infelizmente, depois de substituir o “ferro”, esse animal indescritível pode passar para outra cena. Tenho uma cena de
The Talos Principle na qual consegui reproduzir esse problema recentemente e gravei alguns vídeos que me permitiram analisá-lo com mais detalhes.
Mas antes de começarmos, assista ao vídeo a 60 qps. Para visualizar os exemplos abaixo, mude para 1080p60, como mostra a figura:
Para assistir a vídeos a 60 qps, mude para o YouTube em 1080p60.Se você fizer tudo certo, e o computador e o navegador da web puderem exibir vídeo a 60 qps, o vídeo abaixo deve ser reproduzido sem problemas e sem freios. Se não é assim, é por isso que estamos falando sobre isso - muitas outras aplicações também demonstram esse comportamento, não apenas jogos. Por enquanto, só posso recomendar que você tente assistir ao vídeo em outra máquina ou apenas leia o texto.
Verifique, verifique, um, dois, três ... Você deve ver este vídeo em 60 fps.Agora vamos ao que interessa. Se você encontrar freios, provavelmente será algo como isto:
« 60 fps». «»., «», 60 fps. - , , « ». , ( , - «» ). « », , - , . 60 fps, « ». ( , , .)
(«»), YouTube
.
(), . , . , , …
, ? ? , ?..
, , , !
?
.
«», 1/20 , :
60 fps, «». 20 .: -, — , . -, - - — «» , , .
: — — — «»… «» . , ?
(, ( 1/10 000 ), : , …
. — , — «».… , «»
( ). , , , ( ).
… «», « », ?
, , . ( , , , .)
-, - … , , . NTSC, 60 , 60 fps, PAL/SECAM, 50 , 50 fps. - « ».
, — , "
",
ZX Spectrum,
C64,
Atari ST,
Amstrad CPC 464,
Amiga .. , , , 100% , .
«». ,
,
. ,
Sonic The Hedgehog Sega Genesis , ,
16 . PAL NTSC, 50 fps 60 fps. , .
— , PC «» — , . , . 3D-, , . , — , … . , .
, . ( , «» - , .)
, , . 1/60 (16,67 ), 10 /, 1/6 . 1/60 , 1/30 (33,33 ), 1/3 ( «») , .
? , . , . ,
. 90- ( «35 fps » ), .
( ,
GPU) «» «», . 3D-, . , .
GPU, "
". , GPU - , GPU , , GPU . , GPU, « », GPU . - . — - . , , .
, , , … . . , :
. — , — «»., . 16,67 ( 1/60 ), , , . () , 24,8 ( 1/60 ), , … , , 10,7 , , - . ( .)
: ,
, , , PC.
, 60 fps,
- , . - GPU
60 fps
.
— , («») .
, , —
, .
. ( , — , ?), :
«», , .«». «» , !
?
Serious Engine sim_fSyncRate=60
. , « , 60 fps». — ,
! , — , .
? ?
?
— . . , 60,
60 — PC
: - , GPU/… — .
, , , — - . ?
, / , .
, ? , — !
, . , API. , , , . , , API , : ,
. , , .
?
, .
API.
Vulkan API VK_GOOGLE_display_timing
,
proof of concept. , Android Linux.
API. ? , .
, Croteam , , .
, , The Talos Principle .
. « », . , , , , .
«»
? , . - , ?« »,
. , , , , , Skype .. 3D. , , . .
. , — ?
, GPU , , . , GPU . , , . , .
…
. :) GPU . , GPU . , .