1994 與 1995 年,頑皮狗程式設計師 Andy Gavin 為 Sony 全新的 PlayStation 打造了《袋狼大進擊》,這是該工作室首款 3D 平台遊戲。這台主機只有區區 2MB 的快速系統 RAM,以及一台緩慢但容量龐大的 CD 光碟機,而關卡規模在當時堪稱巨大。在 Ars Technica 的 War Stories 影片訪談中,Gavin 詳細說明了他如何克服這種不匹配。

核心技巧是一套先進的虛擬記憶體交換技術:每個關卡被切成 64KB 區塊,只有在 Crash 眼前畫面環境需要時,才各自從 CD 載入。Gavin 說,結果是細節程度達到《古墓奇兵》這類同時期遊戲的 20 到 30 倍。

富有表現力的華納兄弟式動畫則是第二場戰役。Crash 分到 PlayStation 每幀渲染 1,500 個多邊形中的 600 個,但標準的骨骼 3D 動畫看起來太像機器人。因此團隊預先烘焙並儲存所有動畫中全部 500 個頂點的位置動畫資料,並寫了一套自訂壓縮演算法,捨棄移動幅度不大的頂點資料——依 Gavin 的回憶,壓縮比為 50 或 80 比 1。團隊還改寫了 PlayStation 內建的程式碼函式庫,以在這款大致未經測試的硬體上盡可能提高可用記憶體與數學運算速度。

把 RAM 當作快取:將關卡切成 64KB 區塊,只在畫面上出現時才從 CD 串流,並預先烘焙頂點動畫,搭配自訂的 50–80:1 壓縮。

PlayStation 只有 2MB 的 RAM,因此整個關卡永遠不可能完整放進去——從 CD 分塊串流是達到 Rubin 美術所要求細節的唯一方法。

CD 光碟機緩慢但容量龐大,一旦資料被整理成獨立的 64KB 切片,就使其適合作為交換裝置。

當時的骨骼動畫看起來像機器人;預先烘焙每個頂點的位置,以龐大資料量為代價換來卡通式的擠壓與伸展,而只有自訂壓縮才裝得下。

改寫 Sony 內建的程式碼函式庫,在這款前人從未出貨過的硬體上榨出額外的記憶體與數學運算速度。

當平台無法容納你的世界時,重新組織資料,讓只有可見的切片必須常駐——從緩慢儲存裝置分塊串流,這在今日的開放世界遊戲中已是標準做法。

據 Ars Technica 報導,《袋狼大進擊》於 1996 年 9 月推出,成為 Sony 足以與瑪利歐和音速小子抗衡的吉祥物級代表作。類似的動態記憶體管理技術如今已是開放世界電子遊戲的標準做法,該媒體並將 Gavin 在《袋狼大進擊》上的工作視為其概念驗證。

追溯依據

參考來源

  1. War Stories: How Crash Bandicoot hacked the original PlayStation Ars Technica · arstechnica.com ·