差評君這兩天逛知乎的時候看到一個問題:為什麼魂鬥羅隻有 128 KB 卻可以實現那麼長的劇情?
其實以現在的标準來看,1987 年發布的《 魂鬥羅 》劇情并不是很長,一共也就 8 個場景線性布置關卡,我拿出一晚上花在動森上的時間沒準就能通關。。。
但魂鬥羅的 8 個關卡在當時看來也算得上是精心制作了,可它真的隻有 128 KB 。
128 KB 是什麼概念?這篇花幾分鐘就能看完的文章所需的流量,都是它的 10 倍以上。
而在 90 年代前後,遊戲開發人員可以用這 128 KB 讓人快樂一整晚,這是咋做到的呢?
巧了。。。差評君自己是個遊戲狂 開發者,而且每年都會參加 48 小時極限遊戲開發活動。
因此這種關于遊戲開發的小問題,俺還真插得上話。。。所以今天來和大家聊聊以前那些能玩挺久的老遊戲是咋做得這麼小的。
和現在動辄幾十 G 的單機遊戲相比,由于早些年電子産品技術落後,家用機磁盤空間、顯存以及内存捉襟見肘,開發一個效果不錯的遊戲就像是在電線杆上跳舞。
因此,和現在的遊戲開發者們相比,當時人們在空間利用率上可謂是登峰造極。
一般認知來說,遊戲 = 藝術 技術。從技術角度上來看,「 藝術 」通過素材展現,「 技術 」通過代碼實現。
翻譯成人話,古早的 2D 遊戲由貼圖 代碼 音效組成。
代碼其實一點都不占地兒,說白了就是一堆英文 數字 标點符号的文本文件。
差評君打開記事本,用臉滾鍵盤瞎敲 1000 個英文數字保存起來,這個 txt 文件也就 4KB 。
與之相比,貼圖和音效這些美術素材是當時開發者要頭疼的玩意兒。
先說說貼圖吧,在計算機裡任何東西本質上都是一堆信息,一張圖要包含每個像素的顔色信息 像素所在的位置信息。
比如說我前一張拿來說明 1000 個字符占地 4KB 大小的示意圖,它本身其實占用了 44 KB 。
雖然 FC 時代的主流遊戲素材存儲格式上和現在有所差别,但大緻是這麼個意思。
那張 44 KB 的圖尺寸是 788 * 388,而 FC 經典遊戲《 超級馬裡奧兄弟 》第一關地圖所有場景尺寸加起來起碼得是那張圖尺寸的 N 倍。
而且它還有 8 個場景,每個場景又有 4 小關。
可《 超級馬裡奧兄弟 》的大小隻有 64 KB,比魂鬥羅還小。
這時候得介紹個方法:Tile Map 。
這是個類似調色闆的東西,遊戲開發者把遊戲裡會出現的素材提前準備好,然後運行遊戲的時候把素材拼接起來就行,這一個個素材叫 Tile ,整個素材包叫做 Tile Map 。
這樣一來,上面展示的那長長的第一關場景就不用提前搭建好再存儲了,而是你在玩的時候重複利用提前準備好的東西。
FC 版本的《 超級馬裡奧兄弟 》看似有這麼多關卡,其實出現過的東西就這麼多⬇️
其實這一點隻要大家仔細觀察就能發現,當時的老遊戲重複素材特别多,例如一開始提到的《 魂鬥羅 》也不例外。
在紅白機時代的遊戲,隻要素材讀取好了,運行的時候用代碼告訴計算機這塊素材應該出現在哪個位置就行了。。。代碼占地兒小啊,寫起來不心疼!
也就是說,你小時候在電視裡浴血奮戰的地方其實是 「 趕工 」趕出來的,隻不過這個趕工運算量并不大,當時遊戲幀率要求也不高,所以完全不影響體驗。
差評君甚至見過一個極端例子:整關的 Tile 加起來才 10 個,然後剩下的都是代碼。。。
然而,用重複素材搭場景還是不能滿足貪心的老開發者,他們還有些騷操作。
咱們再看看這張熟悉得不能再熟悉的場景吧。
這個場景裡的雲朵和草垛其實是一個玩意兒,差評君當年剛聽說這個冷知識的時候,感覺童年被敲碎了。。。你不信再仔細瞅瞅形狀和紋理,它倆除了顔色一模一樣。
如此一來隻需要在生成草垛的時候借雲朵過來,加一個顔色的信息,就行了。
這讓我想起大學時代月底零花錢瀕臨透支時,隻買一個菜然後問阿姨多打點湯汁澆在飯上的感覺一樣,人在資源缺少的時候能做到多摳,你永遠想像不到。
這個手法其實也挺常見。。。魂鬥羅雙人模式下的獎牌,兩個兄貴的模型,也是這麼幹的。
一個遊戲除了畫面,還要有音效,聲色俱佳才能成為經典,但音效這種多媒體素材也是個占地方的玩意兒。
去任天堂官方網站下載了《 超級馬裡奧兄弟 》用 MP3 格式存儲的背景音樂,短短 1 分 21 秒你猜猜占地多少?
Super Mario Bros. medley來自差評00:0001:21
3.13 MB 。。。而 FC 版本整個遊戲的大小前面也說了 —— 64 KB 。
其實在 FC 時代的遊戲裡,音效存儲和現在很不一樣。
現在的主流音樂格式其實是音頻文件,這類文件裡存儲的信息要描述整個聲音的構成。
但在 FC 時代,遊戲音效的處理思路可以參考 MIDI 文件,隻存儲排列好的音符當中的音色、頻率和音高等。
這兩類文件,哪個信息量大,一看就明白了吧。
說白了,用類似 MIDI 文件存儲的是一本樂譜,而音頻存儲的是整個演奏出來的音樂。
現在咱們對幾 M 的空間一點都不心疼,所以就直接存下整個音頻了。但在當時。。。想想差評君那個食堂裡打飯的例子吧。
那麼問題來了,隻存儲樂譜确實省下很多空間,但得有人演奏才能出聲啊。
因此老遊戲機裡往往會用一塊專用的音樂合成芯片,專門用來處理這些「 樂譜 」,實時合成音樂。
隻不過這些芯片能合成的音色種類有限,往往聽上去都大同小異,但也頗有風味,被稱作 Chiptune —— 芯片音樂或者是 8-bit 音樂,現在還有些音樂人在玩兒這個風格。
除了小格式 專用芯片,FC 時代的老遊戲音樂往往不長,就是幾個旋律來回循環,這麼一來遊戲音效占地也就不大了。
再加上當時沒有遊戲引擎的概念,代碼直接用硬件跑,這又省了很多不必要的文件。
于是,我們看到了一個僅僅占用 128 KB 卻包含 8 個關卡的《 魂鬥羅 》,或者是占用 64 KB 卻包含 32 個關卡的 《 超級馬裡奧兄弟 》。
在當年的極限開發環境下,一個遊戲程序員不光要知道怎麼實現功能,還要知道怎麼省資源,想騷點子壓縮素材。。。放現在的遊戲公司裡,那些人個個都是特種兵。
存儲和傳輸技術都比較落後導緻的這一情況,其實持續得挺久。
哪怕 2000 年之後開發者已經能稍微放開手動作大一點了,人們對空間大小依舊很敏感:遊戲下載要吃網速,安裝要占硬盤。
在網絡遊戲時代,差評君還聽說過有産品經理因為安裝包太大會考慮砍功能的坊間傳說,就怕用戶嫌下載時間久,不嘗試了。
不知道各位還記不記得,小時候和同學在課間讨論遊戲時,假設有人吃下了某人的推薦,一定會問一句:這遊戲多大?
随着網絡基礎建設突飛猛進導緻網速變快,存儲技術提升導緻存儲成本下降,開發環境沒那麼極限了,人們沒這麼敏感了,「 這遊戲多大 」這句話也很少聽到了。
回到當時音頻和 MIDI 的例子,現在存下大音頻文件花的成本,可能比加一塊音樂合成芯片低很多。
放開了手腳的遊戲業界,把 3D 遊戲做出了新高度,用大量逼真建模和素材堆出極度真實畫面的同時。。。
在占用空間上也開始放飛自我:在 2011 年 id Software 發售了一款遊戲《 狂怒 》,需要占用 25G 硬盤空間,這大膽動作在當時被各大玩家論壇吐槽,但也就這麼賣了出去。
2018 年 R 星發售的 《 荒野大镖客:救贖2 》占用了 100 多 G,差評君買的 PS4 版本到手是兩張藍光碟的罕見情況,周圍盡管有吐槽,但似乎沒有 7 年前吐槽 《 狂怒 》那麼狠。
技術發展,對一切事物的改變是很大的:當時的人們理所當然為了幾十 KB 絞盡腦汁做優化,現在的我們理所當然覺得一個 3A 大作占用幾十個 G 非常合理,這兩者差了好幾個數量級。
科技發展改變的不光是我們的生活,也能極大改變我們的認知。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!