Em 1994 e 1995, o programador da Naughty Dog Andy Gavin desenvolveu Crash Bandicoot, o primeiro jogo de plataforma 3D do estúdio, para o recém-lançado PlayStation da Sony. O console oferecia apenas 2MB de RAM de sistema rápida e uma unidade de CD lenta, mas de alta capacidade, e os níveis eram enormes para a época. Em uma entrevista em vídeo da série War Stories, da Ars Technica, Gavin explicou como superou essa incompatibilidade.
O truque central era uma técnica avançada de troca de memória virtual: cada nível era dividido em blocos de 64KB que eram carregados independentemente do CD apenas quando necessários para o ambiente imediato de Crash na tela. O resultado, segundo Gavin, foi um nível de detalhe de 20 a 30 vezes superior ao de um jogo contemporâneo como Tomb Raider.
A animação expressiva no estilo Warner Bros. foi a segunda batalha. Crash recebeu 600 dos 1.500 polígonos que o PlayStation renderizava por quadro, mas a animação esquelética 3D padrão parecia robótica demais. Então a equipe pré-processou e armazenou dados de animação posicional para todos os 500 vértices em cada animação, e escreveu um algoritmo de compressão personalizado que descartava dados de vértices que não se moviam muito — uma compressão de 50 ou 80 para 1, segundo a lembrança de Gavin. A equipe também modificou as bibliotecas de código integradas do PlayStation para maximizar a memória disponível e a velocidade matemática no hardware em grande parte não testado.
Trate a RAM como um cache: divida os níveis em blocos de 64KB que são transmitidos do CD apenas quando estão na tela, e pré-processe a animação de vértices com compressão personalizada de 50–80:1.
O PlayStation tinha apenas 2MB de RAM, então nenhum nível inteiro poderia caber — a transmissão em blocos a partir do CD era a única maneira de obter o detalhe que a arte de Rubin exigia.
A unidade de CD era lenta, mas de alta capacidade, o que a tornava viável como dispositivo de troca depois que os dados eram moldados em fatias independentes de 64KB.
A animação esquelética da época parecia robótica; o pré-processamento das posições por vértice proporcionava o squash-and-stretch cartunesco ao custo de dados enormes, que só a compressão personalizada conseguia acomodar.
Modificar as bibliotecas de código integradas da Sony extraía memória adicional e velocidade matemática em um hardware no qual ninguém havia lançado nada antes.
Quando a plataforma não consegue conter seu mundo, reestruture os dados para que apenas a fatia visível precise estar residente — transmissão em blocos a partir de armazenamento lento, agora padrão em jogos de mundo aberto.
Crash Bandicoot foi lançado em setembro de 1996 e se tornou a resposta da Sony em escala de mascote para Mario e Sonic, segundo a Ars Technica. Técnicas semelhantes de gerenciamento dinâmico de memória são hoje padrão em videogames de mundo aberto, e o veículo credita o trabalho de Gavin em Crash como sua prova de conceito.
CONFIRA AS EVIDÊNCIAS
As fontes
- War Stories: How Crash Bandicoot hacked the original PlayStation Ars Technica · arstechnica.com ·