De onde vem a otimização dos consoles?

Entenda como os consoles rodam games com tão boa otimização e aprenda como potencializar seu PC para ficar equiparável a um console!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


Publicação refeita e ampliada!

1. Introdução

A briga dos gamers que jogam em consoles versus os usuários do PC “masterrace” vem de longa data. Sem defender qual o melhor pois todos possuem suas qualidades e defeitos, vou mostrar a vocês um pouco dos motivos que fazem o videogame ser um equipamento otimizado para executar games sem terem um hardware tão bom; e o porquê dos computadores exigirem mais hardware para executar os mesmos games sob qualidades semelhantes às do console, e mais:

Como otimizar seu computador para que ele funcione de modo parecido com o de um console!

2. Na teoria…

Vou utilizar o PlayStation 2 aqui como exemplo por ele ter sido um dos videogames mais populares da história. Ele tinha um hardware muito fraco se comparado a diversos computadores e outros consoles da época – como o principal concorrente o GameCube®.

  • CPU MIPS 3 com 1 núcleo executando a ~300Mhz. – Até 6 GFlops.
  • GPU com clock de ~150Mhz e 4 Mb de VRAM. – Podia usar parte dos 32Mb de RAM
    Saída de vídeo até 1080i – interlaced com upscaling – suportando 75 milhões de polígonos por segundo.
  • Memória RAM de 32 Mb com clock de 400 MHz

A nível de comparação, um Compaq Presario 8000z tinha um processador de 1,53 GHz e pelo menos 128 MB de memória RAM em sua configuração padrão.

Indo mais fundo, vocês devem se lembrar bem como o GTA San Andreas® rodava nos consoles e no computador. Ele era um dos games mais completos e complexos daquela geração e caberá aqui na explicação:

GTA San Andreas de Computador, em uma especificação contemporânea.

GTA San Andreas de PlayStation® 2 pelo PCSX2 – Render Original!

Sem considerar o fato de que a versão de PC desse jogo roda com um gráfico muito melhor e resolução de tela melhor também, você poderia dar downgrade e deixa-lo “tão feio” quanto o PS2; e é aqui que a mágica acontece: você ainda ia precisar de um computador bem mais potente que a configuração do PS2 para executar o jogo da mesma maneira.

Os requisitos Mínimos no lançamento eram:

  • Processador: Intel Pentium IV ou AMD Athlon equivalente.
  • Velocidade do processador: 1 GHz.
  • Memória RAM: 256 MB.
  • Memória de vídeo: 64 MB.
  • Direct3D: Sim.
  • Versão do DirectX: 9.0c.
  • Sistemas Operacionais: Windows 2000 ou Windows XP.

Isso que, um computador com este requerimento vai executar o jogo com um desempenho horrível, com grandes variações na taxa de frames!

O exemplo acima foi da sexta geração.

Mas a evolução exponencial dos computadores continuou e mesmo na sétima e oitava geração de consoles, tivemos o mesmo contraste: Máquinas “obsoletas” trazendo otimização de hardware, como o PlayStation 3, enquanto computadores que executam os mesmos games possuem maior exigência de hardware para atingir o mesmo nível de qualidade (ou superior).

Então fica o questionamento: Como diabos um hardware tão fraco possui tal desempenho e otimização?

3. Na Prática!

Quando falamos de hardware e execução de programas, tudo é levado em consideração. E no quesito consoles, eles tem aspectos de hardware e o software devidamente casados e dedicados. No caso do nosso exemplo PlayStation 2:

  • O hardware era dedicado e exclusivo, normalmente desenvolvido sob uma arquitetura diferente da dos PC’s. A arquitetura do PS2 era RISC com instruções MIPS, enquanto os computadores rodam sob amd64 e i386. A arquitetura RISC significa reduced instruction set computer, ou seja, instruções simples e reduzidas. Porém ele ainda permitia multi-processamento. – Em termos leigos, essa arquitetura foi a precursora do ARM contemporâneo.
  • Não possuía um sistema operacional, mas uma firmware que é basicamente uma BIOS com recursos extras, como um tradutor de códigos, mas ainda extremamente leve. Se comparado a um PC, uma firmware é como se apenas iniciasse o boot UEFI e imediatamente entrasse ingame. E esse sistema não teria um servidor de tela X.Org ou Wayland! Pra tornar a coisa ainda mais complicada, ele possuía um framebuffer, ou seja…
  • …Os games nessa época se comunicavam diretamente com a tela e eles basicamente geravam o servidor gráfico necessário. Essa comunicação acontecia de forma direta.

4. Consoles das Novas Gerações

Muita coisa mudou se considerarmos a atual geração de consoles, composta pelo Xbox Series X®, o PlayStation 5®, SteamDeck® e o Nintendo Switch®. Os consoles se tornaram verdadeiros computadores dedicados a rodar games de maneira otimizada.

Levando em consideração os computadores que temos na atualidade – e na época do lançamento do console -, nota-se que eles basicamente são lançados praticamente obsoletos e os games que nele executam, rodam de maneira a focar na otimização gráfica.

Modelo de personagem do game God of War Ragnarok lançado para PlayStation 5.

Se colocarmos um computador com hardware equivalente ao PlayStation 5 lado a lado, ele dificilmente conseguirá reproduzir gráficos semelhantes com o mesmo desempenho visto.

5. Características de Cada Um

Quando rodamos um game no PC, mais precisamente no Linux, ele passa por uma série do que chamamos de camadas de abstração (tradutores) de linguagem. Essas são as mais conhecidas:

Jogo > OpenGL > X.Org ou Wayland > OpenGL > GPU > Tela

O kernel Linux possui ainda um pass-through, ou seja, consegue passar o código pelo X.Org sem ter que voltar ao OpenGL, mandando ele direto pra GPU. Dependendo do game, dá pra tirar mais desempenho dessa maneira:

Jogo > OpenGL > X.Org > GPU > Tela

Já num sistema Windows, temos mais camadas de abstração, que são essas:

Game > Compilador DirectX > DirectX3D > HAL > 
Kernel NT > DirectX DRAW > GPU > Tela

Isso justifica o por quê um mesmo game rodará com melhor desempenho se otimizado no Linux, comparado com sua versão de Windows, como ocorre com games da Valve que rodam sob a Engine Source: Team Fortress 2, Portal, Half Life 2, Counter Strike e etc.

  • Mas e os consoles?

Eles rodam de forma tão direta que mal possuem um caminho para ser seguido. Como são programados para operarem diretamente com o firmware, eles seguem algo próximo disso:

Jogo > Tradutor/Interpretador > GPU > Tela

Sem tantas “burocracias”, um game terá muito mais otimização e desempenho mesmo que rodando sob um hardware mais simples. Claro que isso depende do desenvolvedor do game e o nível de liberdade que ele terá ao lidar com o hardware. No caso dos consoles isso é particularmente vantajoso, como o hardware é apenas 1, você segue um padrão e todos serão naquele nível.

Ou seja, num console o hardware é obsoleto e quem evolui é o game. A cada novo jogo desenvolvido, a produtora tira um pouco mais de desempenho e otimização daquele hardware. O ponto negativo disso é a obsolescência a médio prazo.

Num PC é o contrário, um game se mantém e quem evolui é o hardware. Como o hardware pode estar mais próximo dos kits de desenvolvimento dos games, a produtora pode liberar o jogo com uma exigência de hardware e qualidade final maiores, sem ter que se esforçar tanto em otimizá-lo para hardwares mais fracos. O ponto negativo disso é que o usuário final terá que desembolsar mais dinheiro (fazer upgrades com maior frequência) para manter a qualidade e acompanhar a evolução do game.

5.1 E o SteamDeck?

O SteamDeck é um computador portátil, portanto possui as otimizações que o Linux desktop possui.

Porém pra se aproximar ao máximo de um console, a Valve fez modificações grandes no SteamOS 3.0 para que ele atue o mais semelhante possível a um firmware de console. De tal modo que em tese o SteamOS tire melhor proveito do hardware do que se fosse outro sistema Linux ou mesmo fosse Windows.

6. Otimizando seu Computador

Muito bem. Muito foi falado, pouco foi feito.

Depois de todo esse trabalho teórico, está na hora de mostrar de que maneiras seu computador pode se tornar um console no aspecto otimização e desempenho!

Mas atenção:

Importante ressaltar que o que for explicado tornará seu computador muito otimizado, porém não exatamente no mesmo nível de um console, isso é impossível por restrições técnicas – você teria que escrever um game em Assembly que se comunique diretamente com o hardware, por exemplo. Também poderá ficar tão limitado quanto um console, focando exclusivamente na execução de games e não de outros softwares. Ou seja, se fizer o que for explicado aqui, poderá ter problemas em navegar na internet ou mesmo editar documentos.

Recomendo que a dica abaixo seja feita em dual-boot caso seja seu computador de uso pessoal cotidiano. Nesse caso, o post é voltado a aqueles que desejam transformar seu computador em um console; ou que desejam ter mais otimização num hardware menos potente. Em ambos os casos o destaque é para quem joga no GNU/Linux!

6.1 ArchLinux

A essa altura, vou recomendar um sistema baseado em ArchLinux!

O usuário desavisado reagindo:

Chaves Latas GIF - Chaves Latas Vazias - Discover & Share GIFs

Primeiramente, o SteamDeck usa o SteamOS que é baseado em ArchLinux! Portanto é mais fácil atingir uma qualidade semelhante utilizando o mesmo sistema base.

Segundamente, a alguns dias eu publiquei aqui no site sobre minha mudança do Ubuntu para um sistema baseado em ArchLinux, mais especificamente o EndeavourOS. Não é bom, é ótimo. Estou amando <3

Pelos dados da Steam, o ArchLinux é o preferido da galera!

  1. “Arch Linux” 64 bit
  2.  Ubuntu 22.04.2 LTS 64 bit
  3. “Manjaro Linux” 64 bit

Tirando o Ubuntu, os top 1 e 3 são sistemas baseados em ArchLinux. E o motivo para isso é que o ArchLinux está absolutamente atualizado e ainda mantém um nível decente de estabilidade. Ou seja, saiu uma atualização para o driver MESA? OpenGL? AMD? Intel HD Graphics? Kernel novo? Tudo chega mais rápido!

E conforme já fiz testes diversos, com um kernel mais novo você tende a ter o melhor desempenho possível, porque o conjunto da obra está na melhor versão possível: Seja o kernel, os drivers, controladores, governador de CPU, gestor de energia, SystemD, XOrg ou Wayland, etc. E considerando o aspecto Linux, quanto mais moderno, mais atualizado, melhor para que o desempenho seja equiparável ao Windows. – Ou melhor.

Para terem uma ideia, o Ubuntu 22.04 LTS, o LTS mais atual, possui o kernel 5.15 com driver NVIDIA  525. Já o ArchLinux está no kernel 6.2.12 com NVIDIA 530 – sendo esse driver o mesmo do Windows 11. Para quem quer tirar o máximo proveito do hardware, ter um sistema rolling release como o ArchLinux é uma opção pertinente.

Infelizmente se o equipamento for muito antigo, +15 anos, é provável que tenha uma piora no desempenho já que vários drivers não possuem o suporte adequado e/ou foram removidos do kernel. Para esses casos um sistema LTS é o recomendado.

6.2 Instalação

A instalação recomendada por mim é do EndeavourOS, porque há um bom suporte da comunidade, bom suporte do sistema, poucos bugs/erros que podem ser observados, instalação amigável e o sistema também é amigável com diversas opções de interfaces de usuário. Instale como achar melhor.

Se o hardware for limitado, como um Notebook com 2 Gb de RAM, recomendo a interface LXDE. É a mais estável e com bom equilíbrio de consumo de recursos e usabilidade. Mas se quiser algo ainda mais leve, o i3 ou mesmo o OpenBox são suportados.

6.3 Tweaks

Aqui entram os ajustes para fazer o “milagre” no sistema! A lista completa publiquei no meu github e estarei sempre atualizando-a para melhorar/otimizar. Mas o essencial recomendo abaixo:

6.3.1 Remova Serviços Desnecessários

Alguns serviços não essenciais podem ser suprimidos para melhorar o consumo geral do hardware:

Delete este atalhos:

/etc/xdg/autostart/at-spi-dbus-bus.desktop
/etc/xdg/autostart/firewall-applet.desktop
/etc/xdg/autostart/welcome.desktop

Esse atalho não desativará o Firewall mas apenas seu applet que consome RAM em segundo plano. AT-SPI é mais utilizado para assistência a deficientes, caso seja seu caso, não desative!

Você pode desativar totalmente o firewall. Se for uma máquina apenas gamer, dificilmente precisará de algo assim:

$ sudo systemctl disable --now firewalld

Se sua instalação foi básica não precisa do LVM:

$ sudo systemctl disable lvm2-monitor
$ sudo systemctl disable lvm2-lvmpolld

Remover todas as notificações:

$ sudo pacman -R notification-daemon

Caso queira economizar mais RAM, pode desativar o applet de internet do desktop. Para gerenciar cabos ou WiFi use o nmtui para isso!

$ sudo mv /usr/bin/nm-applet ~/

Mantenha seu sistema em dia!

$ yay

6.3.2 Mitigações

As falhas da Intel e AMD podem comprometer o desempenho. Desativar as mitigações pode aumentar os riscos na sua máquina mas vão tirar as amarras do maior desempenho de processador! Detalhei mais acerca disto aqui. Para desativar:

Edite o grub:

$ sudo nano /etc/default/grub

Na linha que começa com “GRUB_CMDLINE_LINUX_DEFAULT” adicione o parametro mitigations=off e deixe assim:

GRUB_CMDLINE_LINUX_DEFAULT=’nowatchdog nvme_load=YES loglevel=3 mitigations=off’

Salve e aplique:

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

Reinicie seu sistema.

6.3.3 Parâmetros do SteamDeck!

Quando fiz minha análise do SteamDeck também analisei como o sistema foi otimizado. Seguindo o que o CryoUtilies propôs, assim como o que o ArchLinux Gaming propõe, crie o seguinte arquivo:

$ sudo touch /etc/tmpfiles.d/gaming.conf

Adicione isto a ele:

# COMEÇO

# Path Mode UID GID Age Argument
w /proc/sys/vm/compaction_proactiveness – – – – 0
w /sys/kernel/mm/transparent_hugepage/khugepaged/defrag – – – – 0
w /sys/kernel/mm/transparent_hugepage/enabled – – – – aways
w /proc/sys/vm/page_lock_unfairness – – – – 1
w /sys/kernel/mm/transparent_hugepage/shmem_enabled – – – – advise
w /proc/sys/vm/swappiness – – – – 1

# More lines to test on (based on ArchLinux Wiki):

w /proc/sys/vm/min_free_kbytes – – – – 1048576
w /sys/kernel/mm/lru_gen/enabled – – – – 5
w /proc/sys/vm/zone_reclaim_mode – – – – 0
w /proc/sys/kernel/sched_child_runs_first – – – – 0
w /proc/sys/kernel/sched_autogroup_enabled – – – – 1
w /proc/sys/kernel/sched_cfs_bandwidth_slice_us – – – – 500
w /sys/kernel/debug/sched/latency_ns – – – – 1000000
w /sys/kernel/debug/sched/migration_cost_ns – – – – 500000
w /sys/kernel/debug/sched/min_granularity_ns – – – – 500000
w /sys/kernel/debug/sched/wakeup_granularity_ns – – – – 0
w /sys/kernel/debug/sched/nr_migrate – – – – 8

# FIM

São parâmetros que otimizam o uso de processamento objetivando as jogatinas!

Reinicie o sistema.

6.3.4 WINE

Para games que dependem do WINE, também há uns parâmetros interessantes para passar dentro do arquivo .profile:

$ nano ~/.profile

Adicione o conteúdo ao final:

STAGING_RT_PRIORITY_SERVER=90
STAGING_RT_PRIORITY_BASE=90
WINE_RT=15
WINE_SRV_RT=10
STAGING_WRITECOPY=1
STAGING_SHARED_MEMORY=1
WINE_ENABLE_PIPE_SYNC_FOR_APP=1
export __GL_MaxFramesAllowed=1

Faça logout e login para validar ou reinicie o computador.

7. Conclusão

Uma vez que tudo que foi proposto aqui foi feito, seu sistema deverá ter o melhor desempenho possível sem necessidade de overclock ou outra intervenção mais agressiva! Após isso, poderá instalar a Steam ou mesmo o RetroPie normalmente para ter diversos games à seu dispor.

Existem diversas maneiras de otimizar seu computador para ele ter o desempenho semelhante ao dos consoles. Infelizmente jamais teremos modos de dar o EXATO mesmo desempenho, já que um computador pessoal (PC) possui sua fabricação voltada a propósito geral e não dedicado a games.

Mas seguindo as dicas acima, você chegará bem perto de ter o desempenho dos consoles usando um computador, ideal para quem quer ressuscitar uma máquina antiga/obsoleta e deseja tirar mais desempenho dela, seja rodando games nativos no Linux, seja usando o WINE para isso. Ou se quiser transformar seu computador novo em um videogame de geração mais nova com o que o Linux tem de melhor a oferecer e com o melhor desempenho possível.

#UrbanCompassPony

Fontes:
O fato do PlayStation 4 rodar sob Kernel BSD: Tecmundo
O fato do Nintendo Switch rodar sob Kernel BSD: MaxConsole
Imagem de Nathan Drake do game Uncharted 4: EveryEye
Dados dos games que executavam no MS-DOS sem servidor gráfico:
Graphics Programming Black Book – Michael Abrash (Free!)
Informações adicionais a respeito da comunicação software/hardware:
Vilson Heuer de Oliveira – Programador e ex-desenvolvedor de jogos.
Dados sobre os computadores de 2001: TechTudo
Dados sobre o PlayStation 2: EnWikipedia PtWikipedia
Dados sobre o Vulkan: ptWikipedia
Fonte da imagem: Avegainteractive
Configurando o OpenBox: LifeWire

8 comentários em “De onde vem a otimização dos consoles?”

  1. No meu caso gostaria de uma forma eficiente de rodar Ace Combat Zero no Batocera em um computador mediano usando um LiveUSB ou LiveCD, seria possível?

    Responder
    • O Ace Combat Zero foi lançado somente para PS2. Ponto, nesse caso o console infelizmente exige mais do hardware pra ser emulado. Curioso que você está usando o batocera mas aparenta ter tido problemas. Uma recomendação que eu faria, no seu caso, é que você siga a parte onde falei do Ubuntu Minimal + OpenBox, configura o PSCX2 que é um emulador de PS2 nativo do repositório e configura ele seguindo dicas na internet, pra otimiza-lo somente pro Ace Combat (cada game de PS2 tem uma otimização diferente, se fosse outro game, seria outra config). Uma dica pra facilitar, use o CrunchBangPlusPlus Linux, ele é um sistema feito sob Debian com OpenBox, extremamente leve e minimalista porém atualizado com os drivers mais atuais. Pode ajudar na otimização do seu PC. Aqui o link: https://crunchbangplusplus.org/download/

      Responder

Deixe um comentário