首頁(yè) > 產(chǎn)業(yè) > 觀察·投資
游戲容量128KB能實(shí)現(xiàn)這么多畫面、音樂(lè)、動(dòng)畫嗎?
我們經(jīng)??吹揭恍W(xué)生抱怨現(xiàn)在的游戲和應(yīng)用占用了很大的空間,基本上都是 10G 起步。
這讓我想起了初中時(shí)玩過(guò)的一款游戲魂斗羅,為什么它只是 128KB 但是能實(shí)現(xiàn)這么長(zhǎng)的劇情呢?

現(xiàn)代程序員 A 和 1980 年代游戲程序員 B 的對(duì)話:
- A:為什么你用 128KB 能實(shí)現(xiàn)這么多畫面、音樂(lè)、動(dòng)畫嗎?
- B:128KB 還不夠嗎?其實(shí)為了表現(xiàn)力已經(jīng)相當(dāng)奢侈了,加了很多不重要的細(xì)節(jié)。
- A:說(shuō)說(shuō)你的音樂(lè),這個(gè)音樂(lè),我壓到最低碼率 至少要得到mp3 1MB 吧。
- B:你是怎么壓的?背景音樂(lè)怎么能超越? 1KB。
- A:你用了多少顯存來(lái)實(shí)現(xiàn)全屏卷軸?
- B:一共就只有 2KB 顯存,太多也放不下啊。
- A:……
一、游戲容量128KB
首先,讓我們了解128KB游戲容量意味著什么。KB是計(jì)算機(jī)存儲(chǔ)容量的單位,1KB相當(dāng)于1024字節(jié)。現(xiàn)代游戲通常有幾個(gè)GB的容量,即數(shù)千萬(wàn)KB。換句話說(shuō),靈魂斗羅的游戲容量只有現(xiàn)代游戲容量的千分之一。
所以,《魂斗羅》是如何在如此小的容量下實(shí)現(xiàn)如此長(zhǎng)的情節(jié)的呢?這與游戲開發(fā)技術(shù)和游戲設(shè)計(jì)密切相關(guān)。
二、游戲開發(fā)技術(shù)
在20世紀(jì)80年代初,游戲開發(fā)技術(shù)仍處于起步階段,開發(fā)者需要在非常有限的存儲(chǔ)容量下實(shí)現(xiàn)完整的游戲體驗(yàn)。因此,他們需要使用一些特殊的技術(shù)來(lái)優(yōu)化游戲的存儲(chǔ)空間和性能。
1.壓縮技術(shù)
壓縮技術(shù)是游戲開發(fā)者在128KB存儲(chǔ)容量下實(shí)現(xiàn)完整游戲體驗(yàn)的關(guān)鍵。在《魂斗羅》中,開發(fā)者使用了一種叫做“運(yùn)行長(zhǎng)度編碼”的方法(Run-Length Encoding,RLE的壓縮技術(shù)可以減少游戲數(shù)據(jù)的存儲(chǔ)空間。
運(yùn)行長(zhǎng)度編碼是一種基于重復(fù)字符串的壓縮技術(shù)。在游戲中,開發(fā)人員壓縮一些重復(fù)數(shù)據(jù)(如地圖數(shù)據(jù)、敵人數(shù)據(jù)等),只保留其中一個(gè),然后使用RLE技術(shù)編碼這些重復(fù)數(shù)據(jù),以便在游戲運(yùn)行中快速減壓。
開發(fā)者通過(guò)運(yùn)行長(zhǎng)度編碼技術(shù),成功地將游戲數(shù)據(jù)的存儲(chǔ)空間壓縮到最小值,從而在128KB的存儲(chǔ)容量下實(shí)現(xiàn)完整的游戲體驗(yàn)。

2.匯編語(yǔ)言
除了壓縮技術(shù),開發(fā)人員還使用匯編語(yǔ)言來(lái)編寫游戲代碼。匯編語(yǔ)言是一種低級(jí)計(jì)算機(jī)語(yǔ)言,直接操作計(jì)算機(jī)的底部硬件,執(zhí)行效率高,但也很難編寫。
當(dāng)時(shí),高級(jí)編程語(yǔ)言的使用并不流行。游戲開發(fā)者需要手寫匯編語(yǔ)言代碼來(lái)控制游戲的運(yùn)行,以實(shí)現(xiàn)最優(yōu)化的游戲性能。雖然很難編寫匯編語(yǔ)言代碼,但開發(fā)者可以通過(guò)這種方式精細(xì)控制游戲的運(yùn)行,使游戲在有限的存儲(chǔ)容量下運(yùn)行得更快、更穩(wěn)定。

3.優(yōu)化技術(shù)
除了壓縮技術(shù)和匯編語(yǔ)言外,開發(fā)人員還使用其他一些優(yōu)化技術(shù)來(lái)減少游戲的存儲(chǔ)空間,提高游戲性能。例如,他們將游戲數(shù)據(jù)存儲(chǔ)在ROM芯片中,可以直接從中讀取數(shù)據(jù),而無(wú)需額外的讀寫操作。此外,開發(fā)人員還將游戲中的音效和音樂(lè)壓縮成最小的文件大小,并使用一些簡(jiǎn)單的算法來(lái)播放音效和音樂(lè)。
通過(guò)使用這些優(yōu)化技術(shù),開發(fā)者成功地將《魂斗羅》的游戲容量控制在128KB以內(nèi),從而實(shí)現(xiàn)了如此完整的游戲體驗(yàn)。
FC 《紐約時(shí)報(bào)》的游戲,沒(méi)有所謂的“引擎層”,或者引擎層是“硬件層”。任天堂的主機(jī)完全是為游戲設(shè)計(jì)的,提前考慮了瓷磚、調(diào)色板、音樂(lè)、音效等基本功能,節(jié)省了大量的底層代碼。
程序員應(yīng)仔細(xì)研究文檔,并在硬件框架下思考問(wèn)題,如如何顯示圖片、如何滾動(dòng)屏幕等;并非常熟悉硬件底部和匯編,不要浪費(fèi)代碼空間。 一來(lái)二去,代碼也可以寫得很小。
強(qiáng)推




