為什麼魂鬥羅只有128KB卻可以實現那麼長的劇情?
大資料文摘授權轉載自知乎
作者:皮皮關
現代程式設計師A和1980年代遊戲程式設計師B的對話:
A:為什麼你用128KB能實現這麼多畫面、音樂、動畫?
B:128KB還不夠麼?其實為了表現力已經相當奢侈了,加了很多不重要的細節。
A:就說你們的音樂,這個音樂,我壓到最低位元速率的mp3,也得至少1MB吧。
B:你怎麼壓的?一首背景音樂怎麼可能超過1KB。
A:那你實現全屏卷軸,用了多少視訊記憶體?
B:一共就只有2KB視訊記憶體,多了也放不下啊。
A:……
我們對“資料量”無法直觀認識
除非是專家,一般人根本無法估算到底多大算大,多小算小。
一般人對“資料量”並沒什麼概念。一篇800字的作文有多少資料量?按照GBK編碼,約1.6KB,按照UTF-8編碼,則是2.4KB。
只寫了1個字的作文,按理來說1位元組~3位元組就夠了。但只寫1個字的word文件,有10956位元組【汗】。而由於硬碟格式化要求,再多佔用1332位元組【再汗】。
現實中常見的產品、流行的技術,實際上和時代背景密切相關。
當你抱著15寸筆記本還嫌小的時候,1990年代初的家庭,可是一家人圍著14~18寸的球面電視看的。把雪碧拿給古代人喝一口,估計他會齁得要死,必須喝點水壓壓驚。
當物質基礎變得十分豐富的時候,一定會產生無法避免的“浪費”,這種“浪費”會進一步改變人感受的閾值,對度量的估計都變得紊亂了。
FC時代的圖形技術
由於早期的記憶晶片(ROM)非常貴,而且大容量磁碟的技術也不成熟,所以暫且不論硬體計算能力,僅僅是想增加遊戲的總容量也非常困難。所以自然會使用符合當時水平的資料結構。
以紅白機FC為例,它的解析度為256x240。解析度不算低,但卻只有2KB視訊記憶體,而且還要實現全屏卷軸效果。所以在FC設計之初,從硬體上就提供了充分利用視訊記憶體的方法——使用Tile(瓦片)。
對每一個場景來說,使用若干數量的瓦片,場景用有限的瓦片拼接即可。這種“二級”表示方法能極大節約儲存量。具體一些原理講解可以看一些科普,比如這個:
B站指路:
音訊容量和程式碼容量
下:理光2A03
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562039/viewspace-2687107/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微軟那麼多牛人 為什麼卻做不好IE瀏覽器?微軟瀏覽器
- 為什麼說《對馬島之魂》的引導系統做得那麼棒?
- WebSocket 是什麼原理?為什麼可以實現持久連線?Web
- WebSocket 是什麼原理?為什麼可以實現持久連線Web
- Python魂鬥羅小遊戲原始碼Python遊戲原始碼
- Redis為什麼那麼快?Redis
- 橋本和久 魂鬥羅祕籍之外的故事
- “魂鬥羅”值得現代遊戲開發者學習的上古神作遊戲開發
- Kafka為什麼速度那麼快?Kafka
- 程式設計師收入那麼高,為什麼卻從不見他們炫富?程式設計師
- 遊戲的留存為什麼那麼難調?遊戲
- 為什麼遊戲DLC的精品那麼少?遊戲
- WebSocket 是什麼原理?為什麼可以實現持久連線?有點懵!!!Web
- 李理:為什麼說人工智慧可以實現?人工智慧
- 能通話的Apple Watch,為什麼只有聯通可以首發?APP
- 為什麼 python 那麼熱門Python
- 為什麼SSL證書那麼貴?
- 破玩意 | Redis 為什麼那麼快Redis
- 為什麼企業CIO普遍不看好Oracle,卻鍾情於微軟?Oracle微軟
- 為什麼程式設計師的工資那麼多!憑什麼?程式設計師
- 為什麼資料備份那麼重要?
- 京東二面,Redis為什麼那麼快?Redis
- 物聯網路卡為什麼那麼火
- 為什麼那麼多的遊戲主角都是“啞巴”?遊戲
- 《魂鬥羅歸來》之代理模式VS裝飾模式模式
- 《魂鬥羅歸來》之狀態模式VS策略模式模式
- 個人站長未來那麼不看好,為什麼還要學習SEO?
- Linux 3389是什麼?其可以實現什麼功能?Linux
- 為什麼Web前端語言只有JavaScript?Web前端JavaScript
- 關於程式碼重構的靈魂三問:是什麼?為什麼?怎麼做?
- 在遊戲裡“翻盤”為什麼那麼難?遊戲
- iOS應用加固為什麼也那麼重要?iOS
- Python 編碼為什麼那麼蛋疼?Python
- 為什麼那麼多人都想進入IT行業?行業
- 為什麼bootstrap不再那麼受歡迎了?boot
- 【BERT】你儲存的BERT模型為什麼那麼大?模型
- 深度學習為什麼需要那麼多的資料?深度學習
- 為什麼我做的Android app會那麼卡?AndroidAPP