一 動機
這是我獨立完整開發的第二個遊戲,距離上一次這麼開發遊戲過去了差不多一年。
之所以要做這個遊戲,原因之一是年初時朋友向我推薦了pico8並且慷慨地贈送了我正版的軟件,我在感激之餘決定用pico8做一款遊戲出來,但是從年初到七月份因為各種事情一拖就是半年,實在過意不去了;
pico-8官方文檔裡的參數
之二是朋友推薦時的其中一個理由是不同於其他更大型更全面的遊戲引擎,pico8的api比較有限,需要開發者從更底層來編寫遊戲,而且由於pico-8本身是一個虛擬戲主機,把遊戲開發的適配工作限制得更死,它的分辨率只有128x128,可用的色彩最多隻有32種,默認的精靈尺寸僅為8x8,音樂也只支持自帶的編碼,但這些限制讓遊戲的規模變得很小,工作量也就大大降低。總而言之,就是pico-8很適合單人或者微型團隊,快速地做出完整的遊戲原型。
所以我在上次使用了godot開發遊戲之後,打算這次試一試pico-8
二 立項
很多年前參加LD時製作的《bullet jam》
這次遊戲的玩法其實不是新點子,而是復刻了我和朋友很多年前參加LD時做的一款遊戲《bulletJam》,當時的主題是“running out of space”,我和朋友就做了一個子彈和敵人都如同果醬一樣,會堆積在遊戲場景中,最終讓玩家的活動空間越來越小的射擊遊戲。
因為這次的主要目的是學習pico-8,所以我沒有打算一開始就嘗試新的遊戲,而是重做以前的老項目。
不過因為當時的自己對於遊戲製作還完全沒有經驗,所以現在回頭看,感覺不僅模仿痕跡很重,而且堆積效果和遊戲流程都做得很倉促,屬於雖然好歹做完了,但依然有很多缺憾的項目。
而且我當時只是負責美術的部分,這次打算完全獨立開發。所以希望儘可能彌補一些當時的缺憾。
-
-
三 開發
於是在7月底我開始了開發,一邊看pico8的官方文檔,一邊測試各種api,讓我意外的是pico8的學習門檻格外得低,我幾乎在第一天就掌握了它的很多常用函數,現在回頭看時,倒是很多pico-8使用的lua語言的語法讓我花了不少時間來學習。
最開始的堆積效果測試
在學習了基礎的移動和按鍵反饋後,最先要實現的就是子彈的堆積效果了,這裡pico8的低分辨率限制就變成了優勢,我可以完全針對每一個像素做堆積效果,而不用太過擔心性能,因為總共也只需要處理128x128個像素點。雖然中途還是出現了一些需要優化的情況,但我確實第一次體會到了把腦子裡像素級別的算法實現在畫面中的開發。
其實關於這個堆積的算法,中間做過好幾個版本,目前在遊戲中實現的並不是“最擬真”的效果,而是會讓堆積的粒子呈現出中心放射狀的效果,我覺得這樣的畫面會讓遊戲在後期時呈現出一種很有趣的尖刺叢生的感覺。
然後是不同顏色的子彈效果,也做了一個測試。
在堆積效果攻克了之後,遊戲的開發變得很順利,敵人和遊戲主流程的開發幾乎只用了一週就做完了,很多代碼甚至只寫了不到一個小時就實現了,pico8的小規模開發的優勢在這個項目裡展現得淋漓盡致。
最終我完成了整個遊戲,並且打包上傳了itch.io和機核網的遊戲庫,相比LD版本,這次重做的版本把畫面換成了8位像素風,敵人和玩家全都簡化成了像素點和圓形,由於pico8的操作限制,原本的鼠標控制準星改成了鍵盤或手柄的按鍵控制方向,並且顯示準星線,同時增加了一個反色的場景,讓已經堆積的子彈重新射向主角,使得遊戲在規則上允許玩家無限玩下去。
遊戲最終畫面
遊戲最終畫面
-
-
-
-
-
-
-
-
-
四 總結
這次的開發讓我對pico8的好感度大增,雖然之前用Godot也能感受到它對個人開發者的友好,但pico8的小規模所體現出的快速成型,和像素級別的畫面控制,讓我可以最大程度地把注意力放在遊戲的玩法和流程設計上,我開始想要繼續用pico8製作更多的小規模的,側重玩法的遊戲,感覺對於積累玩法設計的經驗會很有幫助。