Out of Memory?

Oletko koskaan miettinyt, kuinka menneisyyden hyvinkin näyttävät pelit saatiin mahtumaan teknisesti alkeellisille konsoleille ja kotitietokoneille? Erityisesti demoskenekulttuurissa on ohjelmien optimointi mahdollisimman pieneen tilaan muodostunut omaksi taiteenlajikseen.

Dave Baggett oli kuuluisan pelistudio Naughty Dogin ensimmäinen työntekijä ja toinen ensimmäistä Crash Bandicootia ohjelmoineista ihmisistä. Hänellä on muutama siivu pelinkehityksen historiasta kerrottavanaan.

Baggett on kirjoittanut Quora-kysymyspalstalle kiehtovan anekdootin siitä, kuinka Crash Bandicoot saatiin sisällytettyä ensimmäisen PlayStationin 2 Mt suuruiseen keskusmuistiin. Jos määrä tuntuu pieneltä, kerrottakon vertailuna, että Sonyn PlayStation 4 -konsolissa muistia on 8 Gt.

RAM was still a major issue even then. The PS1 had 2MB of RAM, and we had to do crazy things to get the game to fit. We had levels with over 10MB of data in them, and this had to be paged in and out dynamically, without any "hitches"—loading lags where the frame rate would drop below 30 Hz.

Kolmiulotteisessa ympäristössä tapahtuvat Crash Bandicootin seikkailut tuntuvat käytettävissä olevaan muistimäärään nähden perin riittämättömiltä, mutta hien ja sopivien tietokonealgoritmien avulla Baggett kumppaneineen onnistui vaikeassa haasteessa.

Hauskuutena kehitysprosessissa oli, että Baggettin kehittämällä algoritmilla toiset Crash Bandicootin kentät mahtuivat laitteen muistiin ja toiset eivät. Pienikin muutos esimerkiksi grafiikoissa saattoi johtaa siihen, että peli ei enää paketoitunut oikein.

Lopulta uutteran hiomisen jälkeen peli jäi vain neljää tavua vajaaksi muistirajoituksesta.

Ultimately Crash fit into the PS1's memory with 4 bytes to spare. Yes, 4 bytes out of 2097152. Good times.

Aiheesta virinneessä Hacker News -sivuston keskustelussa vinkataan myös Baggettin Gamasutrassa julkaistuun kolumniin, jossa Crash Bandicootin kehitystä avataan lisää. Kolumnista käy ilmi, että pelitilannetta tallennettaessa muistia avannut operaatio saattoi satunnaisesti keskeytyä, jos samaan aikaan käytti peliohjainta. Tämä puolestaan ikävästi johti kaiken muistikortille tallennetun tiedon korruptoitumiseen.

Joten seuraavan kerran kun käynnistätte Unityn tai muun modernin kehitysympäristön, muistakaa että menneisyydessä asiat eivät olleet sen helpompia.