點燃你的遊戲開發魂:輕量化的 8BIT 遊戲夢幻主機—PICO-8 #WFHLog2

Wei-Fan Chen
8 min readJun 1, 2021

--

我花了一天時間用 PICO-8 做的《Asteroid Shooter》

還記得小時候玩紅白機或 Game Boy 的樂趣嗎?(好吧,可能你要有點年紀才有這個回憶。)八位元(8Bit)遊戲可能是很多人童年的回憶,前一陣子我迷上了找諸如《洛克人》、《耀西之島》和《地球冒險》等復古遊戲回來玩,把小時候沒機會玩、或玩過沒能力破關的老遊戲,找出來重溫童年的遊戲樂趣。

右圖這張威利博士對洛克人下跪的畫面,讓終於破關的玩家充滿療癒的心情,撫慰辛苦過關的靈魂。還有,乖乖看完左圖的 Credit Rolls 是對開發者的基本尊敬喔!圖為 Capcom® 於 1987 年發行於 FC 的《洛克人》,那年我才一歲。

跟現在許多單純追求視覺或劇情體驗的遊戲相比,老遊戲的難度還真的是滿高的。例如發行在紅白機(FC, Nintendo Famicom)的《洛克人》,第一次玩的時候每一關死個十次二十次都是正常的表現,恨不得讓你用力的摔下手把,然後再把手把撿起來默默玩下去。

在遊戲社群中參與討論的同時,發現了一個叫做 PICO-8 的「夢幻主機」,看起來既像是個遊戲平台,又像是個遊戲引擎,開發社群看起來也很蓬勃。認真研究一下發現,PICO-8 不只是一個懷舊遊戲機,他同時還是一個標榜透過刻意限制來發揮創造力的小巧遊戲引擎,讓你可以親手做出一些小巧可愛的復古風格遊戲。

先來看看這個所謂的「夢幻主機」PICO-8 裡面到底有什麼:

  • 檔案大小只能 32k
  • 解析度只有 128 x 128
  • 只有 16 個顏色

如果你是開發者,來看看 PICO-8 給了你什麼限制:

  • 只能使用 8192 個語法 Token 的程式碼
  • 只有 4 張 128x36 像素的 Sprites
  • 由 128x32 個 Sprites 的地圖
  • 64 個 32 個音符的音效
  • 64 個由音效組成,有 4 軌的音樂

對於都在追求 Play Station 5 的極致影音體驗或是 Nintendo Switch 體感享受的玩家們,也許難以想像這樣的限制能夠打造出來什麼作品。在這之前,可以先來看看我在過去一天用 PICO-8 做出了什麼遊戲。

《Asteroid Shooter》Made with ❤ by Wei-Fan Chen

這是一款經典又簡單的彈幕遊戲—玩家駕駛一艘太空船,躲過不停襲來的隕石雨,並盡可能用有限的子彈擊退他們來得到更高的分數。

在繼續閱讀以前,你可以先在這裡玩玩:《Asteroid Shooter》https://weifanchen.itch.io/asteroid-shooter

看起來是簡單到不行的遊戲,不過如果你仔細看畫面,也會看到許多有趣的細節—有粒子系統(Particle System)所呈現的太空船、隕石跟太空船的碰撞偵測(Collision Detection)、擊中隕石的物理效果跟得分介面—在PICO-8 裡,遊戲引擎通通沒有提供。你沒聽錯,在這個只有 16 色 128x128 像素,我們幾乎得自己搞定所有事情。

如同 Patrick Pale 在他介紹 PICO-8 的文章《限制中的創造力(Creativity Within Constraints)》所描述的,這些限制並不會減少我們開發遊戲的樂趣,相對的,這些限制反而更有意義的增加了創造力。只有 16 色的調色盤,讓我們在選顏色的時候不會過度在意細節;只有 128x128 的解析度,讓我們在繪製畫面的時候,會將注意力更加專注在遊戲性。

喔當然了!有時候想著怎麼在解析度這麼低的情況下表達一些想法,也是很有趣的發想過程。看看那艘閃爍著綠色尾翼的太空船,其實只用了三個顏色加上幾個像素,就可以表達出這麼帥氣的效果呀!這也是一種來自於限制的創造力展現吧!

PICO-8 的程式碼編輯器

PICO-8 的程式碼以 Lua 腳本語言編寫,對於原本就會寫程式的工程師來說,上手應該不是問題;對於想要寫遊戲的新手而言,我相信也不會太難入門。而且看看這個小巧可愛、字體顏色都像極玩具的編輯器,怎麼能讓人不愛不釋手呢?

PICO-8 的遊戲引擎本身是按照三個函式為骨幹運作的,相信對於有一點遊戲開發經驗的開發者而言,都不陌生:

  • _INIT:用來初始遊戲
  • _UPDATE:每秒更新 30 次遊戲資料
  • _DRAW:用來繪製遊戲畫面

編輯器還提供分頁,來讓你有效管理自己的程式碼,讓你撰寫遊戲不同部分的邏輯能夠有效分開而不會亂糟糟。

繪圖部分,16 色的繪圖板真的就需要傷點腦筋了,看看我繪製的那艘可愛的太空船,只用了簡單不同深淺灰色、藍色和綠色,是就替整體氛圍帶來了一陣濃濃的科幻感。

為了要讓畫面更豐富,加上我想要武器擊中隕石後,大隕石可以分裂成更小的隕石,來創造一些回饋跟遊戲性。我繪製了大小不同的各種隕石,小型和中型隕石都佔用了 8x8 個像素、而大型隕石則佔用了 16x16 的像素。當然,太空船撞上隕石之後的爆炸效果也得畫出來。

我在整個遊戲完成後,還回來加上了遊戲《Asteroid Shooter》的標準字 LOGO,完成這個部分用了比較多的像素。不過,你是不是跟我一樣覺得 LOGO 上面那艘太空船從 Shooter 後面穿出來,很有動感呢?

太空船、隕石、子彈、爆炸和 LOGO,這 128x36 不到的像素就是我全部的素材了!

我覺得 PICO-8 的音效效果很豐富,基本上是一個很完整的合成器了。音源可以選擇方波、三角波、鋸齒波、雜訊等等常用的波形,音高也提供四個八度的範圍(基本跟鋼琴一樣寬了)、強弱也提供 8 個不同的音量、再加上各種合成效果,要做出豐富的音樂跟音效已經綽綽有餘了!

每個音效只有 16 個音符能用,如果用 4/4 拍來想的話,剛好可以放下 4 小節的 16 個四分音符。音效我總共做了遊戲開始、遊戲結束、發射子彈、子彈耗盡和命中目標這五個音效。

PICO-8 也提供了音樂混音器,讓你把不同音效放在音軌上堆疊跟序列播放。我的主題曲只簡單的兩軌,第一軌放主旋律,第二軌則用簡單的音效墊底座和聲,並用 Lydian 調式來呈現一點科幻感。

聽聽看用 PICO-8 簡單做出來的音樂,簡單、童趣,但卻充滿了宇宙探險的神秘味道。

《Asteroid Shooter》背景音樂
最左邊是音符編輯界面、中間的視覺化讓你更容易處理強弱、右邊則是混音器。

進入最後的修改階段,先把遊戲丟給別人玩,聽聽回饋跟意見,然後稍微修改到自己開心就好了。最後再幫我們帥氣的太空船加上簡單的粒子效果,你看看是不是看起來帥很多呢?

《Asteroid Shooter》Made with ❤ by Wei-Fan Chen

好啦!如果你在文章一開始還沒有玩過我的《Asteroid Shooter》,現在再給你一次機會挑戰看看我朋友群們玩到的最高分 4520:《Asteroid Shooter》https://weifanchen.itch.io/asteroid-shooter

p.s. 結果太多人抱怨太難,我在兩天後加上了「簡單」、「普通」跟「困難」模式。沒辦法玩到高分的人,試試看用簡單模式吧(笑)。

如果你對我的遊戲沒興趣,你也可以在 PICO-8 的官方網站上面找到一大堆開發者社群們做出來的「卡帶(Cartridges, Carts)」們,總會找到你自己喜歡的!

有從 PICO-8 模擬的 3D 星球、只用 16 色做出來的地城光影、居然還有《Doom》的移植作;更誇張的是,有從 PICO-8 小遊戲成功募資,最後上架 Steam 的科幻策略遊戲。

喔對了!雖然遊戲是免費的,但使用 PICO-8 開發則不是免費的,在他官網上可以以 14.99 美金購買到完整的軟體與程式碼。這裡還有精美到不行的遊戲開發指南,讓你可以一步一步地學會如何開發遊戲。

我還滿驚訝也蠻驚喜的,從小學做第一款桌遊到創辦 Fourdesire 明年要十週年了,我還可以廢寢忘食的玩 PICO-8,想要創作一款小巧可愛的小遊戲,還能從中獲得許多樂趣。

任天堂的已故前社長岩田聰說:「在我的名片上,我是任天堂的社長;在我的腦海中,我是一名遊戲開發人;但在我的心中,我是一名遊戲愛好者。」真是發人深省,作為一個公司 CEO,能夠重溫這種簡單的遊戲開發樂趣,實在是讓人在興奮不過了。

果然我內心深處的遊戲開發魂被熊熊點燃啊!

--

--

Wei-Fan Chen

CEO / Producer / Founder @ Fourdesire. Making games to bring impact to the contemporary society.