在擠海綿般的程序設計中,往往有著創意之美。
現在還有人為35年前發售的FC開發遊戲嗎?答案是“有”,並且還不少。這支名為Morphcat Games的二人獨立團隊也在開發一款全新的FC遊戲,並且他們在挑戰一個新的極限:將遊戲的容量控制在40KB以內。
僅有40KB的FC遊戲存在嗎?存在,初代《超級馬力歐兄弟》就是。但如果將它的畫面和Morphcat Games正在開發的《Micro Mages》相比,或許你會發現Morphcat Games到底是在挑戰什麼樣的極限。
《超級馬力歐兄弟》固然是經典中的經典,畫面也達到了當時的最高水準。雖然《超級馬力歐兄弟》的畫面和《Micro Mages》比起來有點不那麼生動,但是它同樣也在壓縮上付出了艱辛的努力。
和現在的遊戲不同,FC遊戲的畫面由背景和活動塊構成,背景是固定的,頂多能以卷軸形式活動,活動塊的位置可以變化,但如果想讓它們做出“動作”,就要像動畫片一樣,輪流播放不同的圖案。遊戲中用到的所有圖案,包括角色動作的每一幀形象,都保存在ROM裡。
但這就是馬力歐在遊戲裡保存的活動塊嗎?其實並不是
FC前期的卡帶上有2個記憶晶片,其中一個是跟CPU關聯的PRG,它儲存了遊戲程序和聲效,另一個是CHR,它跟FC的圖形處理器(Picture Processing Unit)關聯,裡面保存著遊戲用到的所有圖形素材。在一張40KB的卡帶上,CHR的大小隻有8KB,並且其中一部分只能用於活動塊,另一部分只能用於背景——這麼做的目的是讓開發者儘可能多地利用這些空間。
背景和活動塊的每個單位,都是8x8像素大小的圖案。FC呈現的畫面本質上是一個32x28的網格,因此分辨率是256×224。每個活動塊只能包含三種顏色,所以想用單個活動塊去表現角色是非常難的。在《超級馬力歐兄弟》裡,吃了紅蘑菇的長大馬力歐就包含8個活動塊。
那麼,在一個8KB大的CHR裡,留給活動塊的空間是多少呢?答案是隻能擺256個。栗子小子的走路動作,其實是一副形象不停地鏡像切換,這也是為了節省空間。
而由於角色的形象都是活動塊拼接而成的,所以保存在CHR裡的數據,其實長這樣:
而在這麼多的限制下,《Micro Mages》還要做到以下幾點:
-
主角除了移動和攻擊之外,還有踩牆跳、攀爬等等動作
-
支持1-4人同屏遊戲
-
8個大關,26個小關
-
隱藏要素和高難度模式
最後,這款遊戲要被製作成卡帶,並能夠真實地在FC上運行。
Morphcat Games準備製作的實體版遊戲
你可能會問,不管是日版的FC還是歐美的NES,不都只能插兩個手柄嗎?其實在1990年,任天堂為NES發售了一款名為“NES Four Score”的手柄分插器,當時有20多款遊戲支持四人對戰,日本市場則是由外設大廠HORI推出了同等功能的設備。
當然,可能大部分玩家都不曾知道FC/NES有四人對戰的遊戲,因此《Micro Mages》支持這個玩法,算是強行提高難度。FC遊戲的另一項限制,是畫面每行只能顯示8個活動塊。你可能會發現一些FC遊戲有時候會出現角色身體的某塊部位消失的情況,這就是同一行超過8個活動塊導致的。
而四人對戰,毫無疑問地增加了出現這種bug的可能。
Morphcat Games原本設計的主角是一個戴著帽子的小男孩,但這個形象需要佔用4個活動塊,如果4個玩家一起玩,那麼同一行的活動塊數量就會達到8個,這時候再出現一個敵人,角色們就會出現角色閃爍、消失的問題。
如果主角形象需要佔用4個活動塊,同一行的活動塊數量就很可能超過8個
主角的形象也因此被改成了戴著帽子、黑著臉的1.5頭身小法師,這個形象只佔用1個活動塊,因此在遊戲畫面上,它看起來比我們熟知的任何FC遊戲主角個頭都要小,而這也可能是開發組把遊戲名定為“Micro Mages”的原因。
開發組為小法師設計了多達23種動作狀態,這使得它看起來比其他任何FC遊戲主角都要活潑,而這些動作也只佔用了23個活動塊,因此CHR裡還可以放下很多敵人和NPC。
遊戲中還存在著一些體型較大的敵人,開發組也想為它們設計出不同的動作和表情,這時候的壓縮大法,自然是將對稱的地方整合複用了。
這是第一關BOSS的所有表情,每個的大小為4x4個活動塊
把BOSS切開,將一些可以複用的部位整合成一個
在場景上,FC運作的方式,就像是從背景CHR裡選出指定的方塊圖案,放到指定的位置上,因此每個場景都需要花費一定的容量去記錄方塊的擺放方法。如果按照32x28的規格去記錄,那麼一屏場景的數據就要佔用960字節的空間,很奢侈。
Morphcat Games的做法,是在原有的背景庫之外,額外設置兩個庫,將4個方塊組合在一起,稱之為“大方塊(meta-tile)”,並且把組合而成的各種大方塊放在“大方塊庫”裡。
這是最基礎的素材庫
這是大方塊庫,其中的每一個方塊都有4個基礎方塊構成
這還沒完。他們又把4個大方塊組合在一起,稱之為“大大方塊(meta-meta-tile)”,然後再把它們放在“大大方塊庫”裡。
這是大大方塊庫,每一個方塊都由4個大方塊構成。另一個需要注意的是這個庫裡格子的數量
這樣做的話,在記錄場景數據時,畫面的密度就相當於從32x28變成了8x7,只佔用60字節的空間。但Morphcat Games發現,這樣做還是沒法把遊戲壓縮到40KB大小。
《Micro Mages》是一款豎卷軸、玩家需要不斷向上爬的平臺動作遊戲,這也給開發組提供了縮減容量的思路:如果把一幅場景對半劈開只保留一半,再把留下的這一半鏡像對稱填充到另一邊,就能將容量縮減一半。
但是,如果很多場景都是這種對稱式的結構,遊戲就太無聊了。Morphcat Games當然還有其他的魔術,不過在揭曉之前,我們先來做一個小算術。
首先,一個大大方塊佔用的大小是1字節,即8比特,8比特代表的是一堆由8個數字構成的二進制數,即從“00000000”到“11111111”,共256個,也代表著大大方塊可以有256種形態。
但是,開發組只設計了96種大大方塊,計數通常從0開始,因此這96個大方塊編號分別為0到95,而95換算成二進制是1100000,只有7位。這意味著開發組可以把沒有用到的一位拿出來,去耍一些別的花樣。
在經過對稱處理之後,場景的一行相當於有4個8比特,每個比特的空餘位拿出來,就成了一個4比特,即“0000”到“1111”,共16個。開發組將對稱的圖案進行平移,並將平移的結果記錄在這4比特中,創造出了不對稱的場景。
而在高難度模式下,場景則只需要改變色盤和挑選一些不同的大大方塊,就能創造出遊戲體驗截然不同的關卡。
下面這些,都是Morphcat Games在極力壓縮容量之後創造出來的驚人畫面:
就像一開始我們說的,現在還在為FC開發遊戲的人還有不少,而比《Micro Mages》畫面好的FC遊戲也是有的。去年有一款全新的FC遊戲,叫《閃亮星星之夜DX》,畫面是這樣的:
但這款遊戲的容量高達512KB,內容也很少。FC上單遊戲容量最大的記錄保持者是《大航海時代》和民間自制遊戲《9人街霸》,它們的容量都是640KB。
看到這裡,或許你可以理解,為什麼直到現在都有人熱衷於為FC開發遊戲了。這臺誕生於35年前的玩具依然有著不小的可能性。以前遊戲開發者所面臨的侷限性不僅僅是性能,開發環境、美術製作環境以及測試環境都能成為掣肘,對於一些資金壓力較大的小公司來說更是如此。
《Magic Mages》在9月初上線Kickstarter開始眾籌,可點擊這裡前去支持。他們在一天之內就達到了17676美元的目標金額,並且籌款額依然在持續上升,目前已經接近10萬。這個結果也代表了眾多復古遊戲愛好者們對他們的肯定。
與遊戲的玩法創意相比,開發者在程序層面上的設計並不能被大多數人看到,但程序的設計、擠海綿的過程,往往也有創意之美。對於普通玩家來說,遊戲如何去壓縮容量並不重要,他們甚至可能覺得容量小的遊戲缺乏誠意。而願意關心遊戲設計和程序裡的各種細節,也算是真正愛遊戲的人們獨有的特質了吧。