每日最新頭條.有趣資訊

《孫悟空大戰機器金剛》開發日誌:緣起篇

緣起

遊戲 1 月 20 日發售了!終於可以聊聊這個項目的緣起了。

聲明一下:本文所引用的一些插圖是從網絡上收集而來的,版權歸原作者所有,有什麽問題請直接與我聯繫。

這遊戲原來的目標平台竟是紅白機!

是的,《孫悟空大戰機器金剛》原本計劃是開發成一個 FC (NES/紅白機)遊戲的。沒錯,請先不要換台,後面真的有 ROM 下載。

很多人看了現在這個版本會覺得有 FC 遊戲的既視感,原因就是美術部分遵循了當時的 FC 硬體限制。

什麽是 FC?就是 Family Computer,歐美叫 NES 國內俗稱紅白機,玩家接觸較多的都是仿製機:

紅白機硬體機能限制

關於這部分複古遊戲技術的內容,可以參考:

How "oldschool" graphics worked

https://www.youtube.com/watch?v=Tfh0ytz8S0k

NES Sprite Rendering

https://www.kickstarter.com/projects/1101008925/lizard/posts/1582636

色板:56種顏色

FC 可使用的顏色共56色,但是每個 Tile (圖塊)(無論是 Sprite 還是背景的)都只能用 4 種顏色,其中一種作為透明色,也就是說能顯示的只有三種顏色。所以悟空的本體就是 3 種顏色:

說實話這個色板顏色數已經不少,因為是硬體決定的,所以很多顏色都不好搭配。不過就是這個色板創造了很多的經典。

有人說了,很多 FC 得角色好像不止 4 色啊?對的,有這樣的情況,那些是用多個圖塊疊加而成的,比如初代洛克人:

題外話:遊戲商店發布時,有些媒體轉發,下面有評論說這個遊戲是洛克人換皮。說真的,這啟發了我,有時間我還真能把初代洛克人給換皮成悟空。

圖塊限制 8x8 個點

FC 的圖形處理是通過 GPU (任天堂叫 PPU),基本上就只能使用若乾個 8x8 像素的圖塊來組成所有的畫面,這些圖塊按照今天的說法就是貼圖,繪製的過程不需要 CPU 進行處理,你需要做的就是告訴 PPU,在什麽地方畫哪個圖塊。孫悟空主要使用了 2x2 個圖塊,大小相當於瑪利歐沒有變大的時候(變大的瑪利歐是 2x3 個圖塊):

這是保留至今的三幀跑步動畫,可以看到如果處理得當,上面的兩個圖塊在每幀都是一樣的,這樣一來可以省去4個圖塊。之所以要省,那是因為卡帶容量有限。

容量限制

由於 FC 的總線是 16位,所以可尋址的空間為 64K,這地址進行了映射,部分映射到記憶體,部分映射到程序代碼,部分映射到硬體。初代的超級瑪利歐的容量為 40K,其中代碼容量 32K,圖像容量為 8K。而這些就是當時硬體一開始能訪問到的最大容量,後來新技術的加入才支持更大的容量的卡帶。

上圖就是紅白機卡帶拆開後看到的情況,這是最原始的 NROM 結構,右邊那塊是 PRG 芯片,用於存儲代碼,左邊這塊是 CHR 芯片,用於存儲圖像。可以看到每個芯片有單獨的引腳,這些分別由 CPU 和 PPU 直接進行訪問。

Anyway,8K 的圖像有多少?就是兩張 128x128大小的圖,一般一張用於 Sprite 一張用於背景:

就是這麽一張圖,組成了初代超級瑪利歐的世界,神不神奇?厲不厲害?

做成卡帶的可行性

那我當初的目標就是做一個遊戲,然後自製成一個卡帶,在實機運行(有人意識到紅白機才是中國人擁有數量最多的主機嗎?)。芯片可以使用 EPROM 進行燒錄,反正通過淘寶可以淘到相關的東西,甚至還能抄板電路版生產出來,所以做成卡帶完全是可行的。

複古文化

除了實體卡帶,我還想過要把盒子和說明書都做出來。

FC 卡帶封面和盒子

紅白機日版的卡帶封面和包裝以及說明書十分的精美,下圖是我曾經擁有過的柯納米世界1代的包裝:

自己關於這個遊戲的感觸很多,以後有機會可以聊聊。

而自己接觸的第一個原版卡帶其實是在朋友家看到的魂斗羅1代:

說明書

接觸過的人一定會有感觸。我再發些說明書的圖,你們自己感受一下:

不過卡帶也有用遊戲截圖的

雖然卡帶封面大部分都很有欺騙性,不過,也有另類的,說的是南夢宮,早期的卡帶封面用的都是遊戲截圖:

很實誠,但是不好意思不好看。

精美的封面和說明書為遊戲增加了很多額外的價值,玩不到遊戲時看著這些就很過癮(比如幾個小夥伴輪番上陣時,你可以在旁邊看說明書)。

全世界是有很多人懷念這種感覺的,直到現在還有很多人有收集實體的情結。

關於卡帶封面的延申閱讀

這裡再次推薦一個網站,上面都是一些虛構的紅白機卡帶,甚至還用這些卡帶封面舉辦了 Game Jam。

網站是:http://famicase.com

Game Jam 是:

https://itch.io/jam/a-game-by-its-cover-2017

https://itch.io/jam/a-game-by-its-cover-2018

孫悟空大戰機器金剛的海報

於是,我們就設計了這麽一張海報,大小完全按照的是 FC 紙盒的比例:

BITCA-02 是遊戲的編號。

所以,原來是計劃做一本小冊子的,上面有操作方法,還有手繪敵人和地圖的介紹。現在就暫時擱置吧。

為什麽會想做一個紅白機的遊戲?

隨著年齡的增長,人變得原來越懷舊。錯覺讓人認為以前的東西都是美好的。

一邊收集一些老玩意,我一邊產生了自製的想法。

同時自身對這種限制和創作之間的關係感悟越發強烈。

加上那時我的主業是動畫,遊戲製作還算是業餘時間做的事情。

所以這基本上是“吃飽了撐的”:一種比獨立遊戲更高的境界…

關於新時代做老遊戲的延申閱讀

當然如果你想探討為老主機做遊戲是不是真的有什麽現實的意義的話,可以看以下兩個視頻:

The Making of: ROM City Rampage (Retro City Rampage)

https://www.youtube.com/watch?v=Hvx4xXhZMrU

Porting Retro City Rampage to MS-DOS: From PS4 to 1.44MB Floppy

https://www.youtube.com/watch?v=kSKeWH4TY9Y

這個階段留下的遺產

FC 遊戲主要使用 6502 匯編語言編程,6502 的指令很少,FC 的硬體也不複雜,只不過適應了高級語言的話會感覺稍微不便。但是用 C 這樣的語言對於 FC 來說又過於臃腫。所以嘗試過各種奇技淫巧,比如創造一個節點式的界面來組織各種匯編代碼段:

後來用得最多的是:使用 javascript 進行“封裝”。也就是使用更易讀的腳本語言來生成匯編代碼,之後再進行編譯。然後在 javascript 的基礎我使用 coffeescript 來讓腳本更簡潔。大概的代碼是這樣的,左邊是 coffeescript 右邊是輸出的 asm,這裡都是截取部分,asm 的輸出會多很多:

測試 ROM

不要太興奮,這個 rom 運行起來大概就是這個樣子,就是簡單的動畫測試:

下圖就是這個測試 Rom 裡面用到的圖形部分,左邊是用於角色的,可以看到剩下的空間也不是很多,能多幾個敵人和 1 個 Boss 就不錯了。還得加上一些特效什麽的。總之活動的都放在左邊這個圖。 FC 的圖形存儲格式是比較特殊的,一個字節可以存4個點的信息,所以我還做了工具將像素繪圖軟體的輸出進行格式轉換,變成 CHR 二進製文件。

Rom 下載:https://bitca.cn/files/svr/svr-sprite-test.nes

過渡到 H5

那個時候用得比較順手的是 H5 的技術,用來做編輯器什麽的很方便。後來,感覺直接製作 ROM 的方式來做原型好像有點慢,也許可以先做個 H5 版本的原型,這樣還能讓別人隨時在手機上測試什麽的。所以後來也嘗試各種 H5 的遊戲引擎框架,比如 melonJS / Pixi / Phaser 什麽的,總之這個項目就是個實驗場。

melonJS 版本,特點是可以直接讀取 Tiled 文件作為關卡設計:

下面這個是 phaser 的版本,那個時候已經背景圖塊風格基本確定並沿用到現在,當時是打算整個螢幕不帶卷軸的,一個螢幕一個房間:

而現在的這個項目就是基於當時用 Construct 2 做的一個簡單原型:

目標的變更

這些事情都是 2017 年的業餘時間裡做的了。2017 年底我開始全職做獨立遊戲,這期間有各種嘗試,到了 2018 年 6 月左右,我打算製作一個收費遊戲,當時就想著應該是做一個能夠快速實現/體量不大的東西,所以為什麽不把這個東西拿出來做呢。用現在的說法結果是挖了個坑。

不再把 FC 作為目標平台後,限制也放寬了很多。

在我開始發製作日誌之後,當然會受到讀者反饋的影響。比如有人開始建議手感,還有一些前搖後搖之類的我沒聽過的名詞,還有關卡設計的重要性等等。雖然離原來的目標遠了,但是也未必是什麽壞事,畢竟 Paper Please 就是這麽來的。

關於這個奇葩的名字

最後說說關於這個奇葩的名字。 這遊戲的想法基於一個 What if:如果在 FC 時代,我會做一個怎樣的遊戲。 我覺得以前好像有那麽一段時間市面上有很多孫悟空大戰 XXX 的書,所以相應的也會推出相同題材的遊戲吧(當然這個時間點我也不想做準確的考證)。

童年的強烈印記

另外,孫悟空在我們那個年代是個很強的 IP,我很小就可以憑空畫出兩個卡通頭像,一個是米老鼠,另一個就是大鬧天宮動畫版的孫悟空,直到現在這個還是我印象最深的孫悟空形象。

兩個有意思的作品

而以孫悟空為主角的作品,除了比較常見的劇場動畫之外,還有兩個我得提一下:

《西遊怪記》

一個是柏楊的小說《西遊怪記》:

豆瓣讀書鏈接:https://book.douban.com/subject/2037994/

《超時空猴王》

一個是梁挺博士的港式漫畫《超時空猴王》:

大戰系列漫畫

以上兩者,可以看出都是有水準的作品,不過並不是靈感的出處。在我少年時期(或者青年?),大量歐美日本 ACG 產品湧入,國產 IP 式微,各種“孫悟空大戰”系列只能說是一種無力的抵抗了:

雖然有些繪圖作者還是有點功底的,但大多數都是充滿了中國式的審美,而現在的兒童市場上這種中國式的審美還在延續。不過不管你喜不喜歡,很多人的童年精神世界會被這類產品所覆蓋。所幸我經歷過小人書和海南美術攝影出版社的時代,已經能分辨出作品的質量。這些漫畫無論如何終歸也是一個時代的印記。

關公戰秦瓊

另外我想說的是,類似關公戰秦瓊的想法本來就是一種原始而樸素的創作手法,比如:

反正我是抱著這種樸素的想法認真的把這部遊戲做完了…

也許只有少數人能感受那個點

很多人直接的說,看到這個名字我就直接關掉網頁了。 這很正常,我只是相信有人看到這個名字能夠會心一笑。 然後這裡面能有部分的人會進行下一步的嘗試。

我不大想改這個名字,幸好我做的是獨立遊戲。

當然,我還是希望:

相聲不該失去諷刺與自嘲,

幽默不只限於彈幕和段子,

多樣性的創作嘗試能夠得到更多的包容。

下回再見

懷舊完畢,以上這些就是促使這遊戲誕生的最初想法。現在遊戲發售了,因為是自己發行的,所以宣傳需要自己來弄。想到現在好多遊戲發售都流行寫軟文和造話題,所以乾脆寫個日誌。這個“前傳”裡的內容原來也是想過的,要在遊戲做完後寫一寫。原本打算和總結放在一起,但是篇幅也夠長了,於是就把總結放到下回的歷程篇裡吧~

遊戲信息

Steam 商店頁面:https://store.steampowered.com/app/1008830/

Itch.io 試玩:https://bitca.itch.io/svr

TapTap:https://www.taptap.com/app/156137

獲得更多的PTT最新消息
按讚加入粉絲團