天天看點

為什麼魂鬥羅隻有 128 KB卻可以實作那麼長的劇情?

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

個人覺得fc最神奇的遊戲還屬超級瑪麗,32個關卡,每關都不同,各種隐藏要素,好像代碼區才10多k,資料區10多k。反彙編看完還是不敢相信這點東西能玩一個童年…現在helloworld的二進制都可能比這大多了。

首先128k并不小

主要消耗存儲空間的不是程式

當然對于128k來說程式大小自然也要考慮

鑒于fc是八位機 而且FC采用的是CISC處理器 一條指令就能完成很多事情

是以程式的大小也就現代64位RISC處理器的十幾到幾百分之一

資源才是大戶(包括圖像 音樂 地圖資料 關卡資料 等等)

就拿圖像和音樂來說

圖像在沒有壓縮之前 消耗存儲空間和 像素深度和大小有關

FC上的圖像 像素深度就2bit的索引而已 而現在廣泛使用的真彩色是24bit 包含alpha的需要32bit

這裡就差了12倍到16倍

圖像大小更是差距巨大

FC普遍一個角色也就是 寬高十幾個像素而已

與現在動辄寬高幾千像素圖像資源相比差了 數萬倍到數百萬倍

是以圖像資源消耗的存儲空間 至少差了5~7個數量級

音樂的話

FC采用的是8位midi音樂

而現在普遍用的是PCM音樂

類比到圖像中

就像矢量圖像和位圖的差別

總之PCM音樂的大小和采樣深度 采樣率 通道數 以及長度有關

midi僅僅和譜子的複雜度有關

是以FC實際上對空間的要求和現代遊戲相比至少差了5~7個數量級

你把128k放大10w倍到1000w倍 你就不覺得小了

一些人還提到了什麼64k 3d程式什麼的

這完全是兩碼事

FC程式小隻是因為需求的資源本來就很小而已

而那種64k 3d程式是因為采用Procedural generation方法

簡單的說就是通過數學來描述

而不是通過記錄結果的采樣

Procedural generation 不光需要的存儲空間極小

而且可以做到無限精度

缺點是難以描述複雜事物

并且對算力要求高

而不是用了什麼外星壓縮法

總結:

1.遊戲大量複用圖塊,圖塊還使用調色闆索引,好像每個像素才占用2bit。

2.程式員精心優化各種資料結構,每一bit存儲都不浪費。

3.聲音隻存儲發聲通道的調制參數序列,能複用就複用。

4.代碼全是彙編寫成,直接操作硬體,基本不存在浪費的指令。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-03-31

本文作者:網際網路架構師

本文來自:“

網際網路架構師 微信公衆号

”,了解相關資訊可以關注“

網際網路架構師

繼續閱讀