1994 und 1995 entwickelte der Naughty-Dog-Programmierer Andy Gavin Crash Bandicoot, das erste 3D-Plattformspiel des Studios, für Sonys brandneue PlayStation. Die Konsole bot nur spärliche 2 MB schnellen Systemspeicher und ein langsames, aber hochkapazitives CD-Laufwerk, und die Levels waren für die damalige Zeit riesig. In einem Videointerview der Reihe War Stories von Ars Technica erläuterte Gavin, wie er diese Diskrepanz überwand.
Der Kerntrick war eine fortgeschrittene Technik zum Auslagern von virtuellem Speicher: Jedes Level wurde in 64-KB-Blöcke unterteilt, die unabhängig voneinander nur dann von der CD geladen wurden, wenn sie für Crashs unmittelbare Umgebung auf dem Bildschirm benötigt wurden. Das Ergebnis, so Gavin, war ein 20- bis 30-facher Detailgrad im Vergleich zu einem zeitgenössischen Spiel wie Tomb Raider.
Ausdrucksstarke Animation im Warner-Bros.-Stil war die zweite Schlacht. Crash erhielt 600 der 1.500 Polygone, die die PlayStation pro Frame rendern konnte, doch die damals übliche skeletale 3D-Animation wirkte zu roboterhaft. Also backte das Team die Positionsanimationsdaten für alle 500 Vertices über jede Animation hinweg vor und speicherte sie, und schrieb einen eigenen Kompressionsalgorithmus, der Daten für Vertices verwarf, die sich kaum bewegten – nach Gavins Erinnerung eine Kompression von 50 oder 80 zu 1. Das Team hackte außerdem die in die PlayStation eingebauten Codebibliotheken, um auf der weitgehend unerprobten Hardware den verfügbaren Speicher und die Rechengeschwindigkeit zu maximieren.
Behandle den RAM als Cache: Teile Levels in 64-KB-Blöcke auf, die nur dann von der CD gestreamt werden, wenn sie auf dem Bildschirm sind, und backe die Vertex-Animation mit eigener Kompression von 50–80:1 vor.
Die PlayStation hatte nur 2 MB RAM, sodass niemals ein ganzes Level hineinpasste – das gestreamte Laden in Blöcken von der CD war der einzige Weg, den Detailgrad zu erreichen, den Rubins Artwork verlangte.
Das CD-Laufwerk war langsam, aber hochkapazitiv, was es als Auslagerungsgerät nutzbar machte, sobald die Daten in unabhängige 64-KB-Scheiben geformt waren.
Die skeletale Animation jener Zeit wirkte roboterhaft; das Vorbacken der Positionen pro Vertex erkaufte cartoonhaftes Squash-and-Stretch um den Preis riesiger Datenmengen, die nur eigene Kompression unterbringen konnte.
Das Hacken von Sonys eingebauten Codebibliotheken holte zusätzlichen Speicher und mathematische Geschwindigkeit aus Hardware heraus, auf der noch niemand zuvor ein Spiel veröffentlicht hatte.
Wenn die Plattform deine Welt nicht fassen kann, strukturiere die Daten so um, dass nur die sichtbare Scheibe resident sein muss – Block-Streaming von langsamem Speicher, heute Standard in Open-World-Spielen.
Crash Bandicoot erschien im September 1996 und wurde laut Ars Technica Sonys Antwort im Maskottchen-Maßstab auf Mario und Sonic. Ähnliche Techniken der dynamischen Speicherverwaltung sind heute in Open-World-Videospielen Standard, und das Medium bezeichnet Gavins Arbeit an Crash als deren Proof of Concept.
DEN BELEGEN FOLGEN
Die Quellen
- War Stories: How Crash Bandicoot hacked the original PlayStation Ars Technica · arstechnica.com ·