Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /home/dzencomb/dozebits/wp-content/plugins/wordpress-seo/src/conditionals/third-party/elementor-edit-conditional.php on line 22

Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/dzencomb/dozebits/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
Por quê o SSD é tão Importante para a Nova Geração
Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/wordpress-seo/src/generators/schema-generator.php on line 185

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/functions.compat.php on line 77

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/modules/photon-cdn.php on line 80

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/functions.compat.php on line 77

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/modules/photon-cdn.php on line 80

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/functions.compat.php on line 77

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /home/dzencomb/dozebits/wp-includes/formatting.php on line 1591

Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated in /home/dzencomb/dozebits/wp-includes/formatting.php on line 2235
Artigos Opinião PC Playstation Xbox

Por quê o SSD é tão Importante para a Nova Geração

Este artigo não é sobre qual console da próxima geração será o mais potente ou sequer qual tem o SSD mais rápido… mas sobre entender porque tantos desenvolvedores – em meio aos teraflops, evoluções de CPU (um dos principais calcanhares de Aquiles da geração passada, que foi lançada com processadores já defasados) e real time ray tracing – parecem tão empolgados com a presença de Solid State Drives nos consoles que chegarão ao mercado no final de ano.

E não… não se trata apenas do fim dos tempos de loading.

O Que é um SSD?

Talvez você já saiba e possa ir direto para a próxima seção, mas se não souber, vou explicar rapidamente e com o mínimo de tecnicalidades o que significa SSD (Solid State Drive) e sua diferença substancial para os bem conhecidos HDD (Hard Disk Drive).

Enquanto o HDDs são compostos por discos físicos, com uma cabeça de leitura móvel que se desloca para localizar e buscar dados, o SSD não possui partes móveis e tem acesso praticamente imediato a qualquer de seus dados.

SSD vs. HDD

Imagine-se fazendo um trabalho para um curso, escola ou faculdade. Usar um HDD é como se você tivesse acesso a uma biblioteca física e cada vez que for necessário acessar um determinado dado fosse necessário procurar a estante correta, pegar o livro certo, achar a página com a informação necessária para finalmente poder utilizá-la. Com um SSD, é como se você tivesse acesso imediato a toda a biblioteca, sem precisar sequer sair do lugar. Ainda é necessário se concentrar para obter e interpretar os dados, mas eles estão todos imediatamente acessíveis.

A diferença é substancial ao ponto de mudar a forma como você pode registrar a velocidade de um SSD. Enquanto em um HDD falamos em quantos segundos ele leva para transferir cada GB (além do tempo de busca), no SSD estamos falando de quantos GBs ele consegue transferir a cada segundo. A diferença é realmente muito grande.

Para ter uma noção desta diferença em números, a velocidade de transferência dos SSDs encontrados no Playstation 5 e no Xbox Series X é de, respectivamente, 5,5 GB/s e 2,4 GB/s (sem compressão). Em comparação, na atual geração contamos com HDDS com velocidade média de 50 a 100 MB por segundo (precisando de 10 a 20 segundos para transferir um GB sequer).

Então, Estamos Falando de Loading mais Rápido? Não?

Sim, tem isto, mas não apenas isto.

Há anos a velocidade de leitura de dados é um dos gargalos de desenvolvimento, ditando limites e impondo concessões no game e level design. O tamanho de um mapa e velocidade na qual você pode percorrê-lo é limitado pela velocidade em que seu sistema consegue acessar novos assets (qualquer recurso de jogo, seja um modelo, textura, som e etc) na memória e cada vez que você atravessa um longo corredor vazio ou pega um elevador demorado, o designer pode estar dando tempo para o sistema carregar os novos assets.

Quando pensamos em carregamento de dados (loading), acabamos considerando apenas aquela barra que surge no início de cada fase, mapa ou tela de transição. Mas a verdade é que jogos precisam acessar e descartar dados constantemente, mesmo enquanto você está jogando.

Se algo acontece na tela, um novo inimigo surge, um som precisa ser tocado, ou até mesmo algo simples como um novo elemento (um abajur) precisa surgir no cenário, este asset precisa ser acessado rapidamente. Estando na memória RAM do sistema, o acesso a este elemento é praticamente imediato, o problema é que memória RAM é um recurso limitado e altamente disputado no sistema (ainda mais se você estiver com o Google Chrome rodando no seu computador, risos), pois praticamente tudo que está sendo executado precisa estar por ali.

Caso o asset não esteja na memória RAM, então ele precisa ser buscado no armazenamento e como já falamos, isto significa que o HDD precisa ir até a estante certa, encontrar o livro certo e tudo mais. Com cada quadro sendo produzido a 33 milissegundos (16, se estivermos falando em 60 fps), nem sempre é possível esperar pelo HDD, forçando uma série de concessões e “truques” por parte dos desenvolvedores – como utilizar redundância e repetir o mesmo asset várias vezes no HDD, o que aumenta o tamanho que o jogo ocupa no disco, mas agiliza o acesso ao recurso (como colocar o mesmo livro em várias estantes, de modo que sempre tenha um razoavelmente perto de você).

Poucos jogos mostram isto tão bem quanto Days Gone (Playstation 4). Ainda que a velocidade de stream de assets (a velocidade na qual os recursos podem ser carregados) limite a velocidade da motocicleta do protagonista, ainda assim é possível se mover tão rapidamente pelo mapa ao ponto de quebrar os gráficos jogo, deslocando-se mais rápido do que o jogo consegue carregar os elementos que o formam o cenário – principalmente quando você chega a uma nova região, que utiliza recursos diferentes da anterior.

Viaje rápido demais e o Playstation 4 não consegue ler os assets de Days Gone rápido o suficiente, fazendo com que o cenário fique incompleto.

Estamos falando de carregamento, obviamente… mas vai muito além daquele loading no início da fase. A velocidade de stream de assets (combinada com a memória RAM disponível) dita limites para os tipos de inimigos presentes ao mesmo tempo em um determinado momento, a quantidade e qualidade de texturas em uma determinada área e – como já dito – o tamanho de um mapa sem que seja necessário recorrer aos bons e velhos corredores e elevadores.

Um bom exemplo é o trecho do recém divulgado Ratchet & Clank: A Rift Apart, no qual os protagonistas viajam rapidamente de um mapa para o outro, com coleções de assets completamente diferentes formando o cenário. Isto seria possível com um HDD? De certo modo, sim… porém ter um trecho de 40 segundos de jogo divido por 5 ou 6 loading de quase um minuto cada fariam os desenvolvedores simplesmente descartarem a ideia (ou substituírem o trecho por um vídeo não interativo – caso fosse indispensável para a narrativa). O SSD permite que a transição seja basicamente imperceptível quando executada em tempo real.

Se quiser ir direto para a parte mencionada, vá para 1 minuto de vídeo.
Seria possível sem um SSD? Na teoria, sim. Seria viável? Certamente não.

Mas os PCs Contam com SSD Há Anos. O Que Há de Novo?

A novidade é que pela primeira vez os SSDs estarão disponíveis dentro do cenário menos fragmentado e mais consistente dos consoles, onde os desenvolvedores poderão contar com recurso como disponível para todos os usuários.

Desde que Crysis (…mas roda Crysis?) ensinou ao mundo que se você criar um jogo que só rode “corretamente” um PC topo de linha, ele só será comprado por jogadores com um PC topo de linha (um percentual pequenos dos universo de jogadores), jogos para computador são desenvolvidos com o maior público em mente, o que hoje, segundo as estatísticas do Steam, significa placas de vídeo GTX 1060 ou menos potentes, rodando com resolução Full HD ou menor (placas RTX e resoluções QHD ou 4K representam menos de 10% do público). Não é à toa que um dos maiores sucessos da atualidade nos computadores seja Fortnite, com seus gráficos simples que rodam bem até em máquinas não tão poderosas.

Nem todo PC Gamer por aí é topo de linha. A vasta maioria possui hardware considerado mediano para jogos.

Quando falamos em armazenamento, nem todo PC conta com um SSD, e mesmo aqueles que têm um, muitas vezes é uma unidade de tamanho menor (120 ou 240 GB) onde apenas o sistema operacional e alguns programas principais estão instalados, com os jogos ainda exigindo um HDD. Somado ao fato de que diversos destes jogos ainda precisam rodar nos consoles da geração atual (ainda equipados com SSD), isto faz com que nenhum desenvolvedor trabalhe considerando a velocidade de stream de assets possível em um SSD, mas sim de um HDD, com todas aquelas limitações e concessões que já mencionamos.

Um dos poucos jogos para PC que hoje conta com a velocidade de um SSD para fazer o stream de assets é Star Citizen (o seu idealizador, Chris Roberts, chegou a mencionar que não desenvolveria o título considerando o Playstation 4 e Xbox One, por não estar disposto a fazer concessões para que o jogo fosse possível em máquinas mais limitadas – citando, inclusive, as concessões feitas entre Crysis e Crysis 2). Rodando em um HDD, ele sofre engasgos e pausas constantes, para que o jogo possa buscar texturas e outros elementos no disco rígido. Uma busca rápida nos fóruns do jogo sobre rodá-lo sem um SSD resulta em uma resposta clara – não vale a pena tentar. Esta limitação simplesmente reduz o público do jogo, diminuindo em muito seu lucro potencial. De um ponto de vista comercial, isto quase sempre é um grande NÃO.

Comparativo de Star Citizen rodando com e sem SSD.

O Que a Nova Geração Coloca na Mesa

Com o Xbox One Series X (e certamente o Lockhart, caso se comprovem os rumores) e o Playstation 5 contando com um SSD, é a primeira vez em que desenvolvedores podem contar com um universo potencial de centenas de milhões de jogadores com uma unidade de armazenamento de alta velocidade ditando os limites de design.

Como coloquei no início do texto, é mais do que sobre quem tem o SSD mais rápido ou maior potência de renderização e processamento. Trata-se das duas principais plataformas da próxima geração contarem com armazenamentos super velozes e com grande capacidade, permitindo que este recurso seja contabilizado no desenvolvimento, sem que seja necessário se preocupar com dispositivos com leitura mais lenta.

No futuro próximo, isto pode – inclusive – acelerar a adoção de SSDs de maior capacidade nos PCs (afinal, jogadores de PC não gostam de ficar para trás, risos), na medida em que cada vez mais jogos comecem a exigi-los para rodar a contento.

É uma situação em que todos ganham, principalmente os desenvolvedores que há anos limitam o tamanho de seus cenários, colocam corredores e elevadores, reduzem a quantidade de inimigos disponíveis na tela ou gerenciam cuidadosamente a disposição e redundância de recursos no disco. Trata-se de um limite a menos na criação.

Parafraseando Sam Sterklar, do Programador de Gameplay do Santa Monica Studios: “As regras sobre as quais construímos jogos mudaram fundamentalmente para sempre“.

Não é a toa que os desenvolvedores parecem tão empolgados.


Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/functions.compat.php on line 77

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/modules/photon-cdn.php on line 80

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/dzencomb/dozebits/wp-content/plugins/jetpack/functions.compat.php on line 77