今天是我們 30 天旅程的最後一天,在開始感性之前,我們先來看看如何在 Code.Gamelet 上發布與分享你的遊戲。
其實我 2023 年的時候也參加過一次鐵人賽,那時的主題是「什麼!在網頁上也可以寫遊戲?」,其中我特別花了兩天來介紹怎麼在 CG 上發布遊戲。
詳細的流程,各位可以參考上面兩篇文章來了解,我就不讓同樣的內容佔據文章的篇幅了,這邊就只稍微簡述一下:
README.md
檔案,在這裡可以寫一些關於遊戲的介紹、操作說明等。完成以上步驟後,遊戲就成功發布到 Code.Gamelet 上了!接下來,我們要做的就是把這個網址分享給親朋好友,也可以分享給你的損友,如果他被 Boss 撞死,要記得笑他。
遊戲預覽影片
雖然遊戲已經完成了,但其實還有很多可以優化的地方,像是:
除了上述這些地方以外,還有一些像是遊戲的難度曲線、遊戲平衡、UI 設計等方面也都可以進行優化與調整,讓整個遊戲體驗更加順暢與愉快。
也許未來我可以再花時間來優化這些部分,讓《小女巫・啟程》變得更加完整與有趣。
一開始,我向大家解釋了為什麼我會選擇 PixiJS 與 Code.Gamelet 作為這次鐵人賽的主題。之後我們創建了專案,開始慢慢帶大家了解 PixiJS 最基本的元件。
有用來讓我們顯示圖像的 Sprite,用於顯示文字的 Text,以及用來繪製圖形的 Graphics,甚至還有用來管理多個顯示物件的 Container,有了這些元件,我們才能建構出各式各樣的遊戲畫面。
講完顯示物件以後,我們就開始進入了與使用者互動的環節,例如 PixiJS 的事件系統、CG 的鍵盤管理器、更新循環系統等。另外我們還介紹了 Tween(補間動畫)、Spritesheet(圖集動畫)這兩個非常實用的功能,分別用來讓我們的遊戲畫面更有動態感,以及讓我們能夠更有效率地管理遊戲中的各種圖像資源。
在 Day 14 的時候,我們整合了前面所學的內容,實作了一個會動、會響的互動場景——幸運餅乾。不僅有圖像、文字、動畫,還有音效,讓我們的遊戲畫面更加生動有趣。
然後,在 Day 15 的時候,我大膽的立下一根旗子,決定不再單純的介紹這些零碎的技術,而是直接做遊戲!也就是在這天,《小女巫・啟程》開始萌芽了。
我們一步步的搭建整個遊戲的場景,先把視差捲軸背景搭建起來,然後把小女巫放上去,接著讓她會自動發射魔法彈。突然,我們意識到一個很重要的問題,因此我們創建了 Game 類別,告別了混亂的 start()
。
有了乾淨的遊戲架構以後,我們開始實作敵人生成系統,讓我們只需要簡單編輯 JSON,就能夠輕鬆地設計關卡。有了敵人之後,我們開始實作碰撞系統,讓小女巫的魔法彈能夠打中敵人,敵人也能夠攻擊小女巫,同時為小女巫添加了無敵幀與血條顯示。
接著,作為一款 Rougelike 遊戲,當然少不了升級系統,讓小女巫能夠隨著擊敗敵人獲得經驗值,並且提升自己的能力。除了升級系統,我們還實作了道具系統,讓小女巫能夠撿起掉落的道具,提升自己的生存能力。並且在這一天,還實作了角色受傷閃白的效果,讓遊戲畫面更加生動。
在大部分的核心玩法都完成後,我們迎來了整個系列的最高潮——Boss 戰。我們設計了一個強大的 Boss,並且為它設計了一個基於條件、冷卻、權重的技能系統,讓 Boss 能夠根據戰況做出不同的攻擊行為,增加遊戲的挑戰性。
從倒數第四天開始,我們開始將整個遊戲進行收尾,添加了計時器、結算畫面,並且實作了一個簡單的音訊管理器,讓遊戲的音效與音樂能夠更好地融入整個遊戲流程中。也實作了場景管理器,讓玩家能夠從主頁面進入遊戲,並且在遊戲結束後返回主頁面。
最後,在 Day 29,我們進行了一些最後的優化與調整,確保遊戲的難度曲線與遊戲平衡,並且添加了鍵盤與滑鼠的雙重操作支援。
而今天,我們終於來到了旅程的終點,將整個專案製作成一個成品,並且發布到 Code.Gamelet 上,讓更多人能夠體驗我們的遊戲。
其實我原本是沒有參賽的打算的,但隨著最後開賽的時間越來越近,我一邊看著鐵人賽的介紹網站,一邊想著我如果不參賽的話,下一次就是明年了!
於是我就立刻想了一個主題,毅然決然的報名參賽了,總之就是一個不管怎麼樣,先報名再說的心態,剩下的就交給未來的我去完成了。
接著在開賽之前,我大概備好了 7 ~ 8 天的文章存稿,結果開賽後我幾乎頹廢了,平日回家就累成一條狗,只想躺在床上,只靠週末去咖啡廳有動力的時候才會寫。
我大概把存稿寫到 Day 14 後,我就開始停滯了,作為一個階段的結束,我一直在思考接下來的方向,但始終沒有什麼想法。
我認為單純的介紹知識點,對我來說實在是有點無趣。也許是迫於壓力,一直到 Day 14 當天,我意識到了這個問題,因而由生了一個想法:「為什麼我不要把剩下的 16 天拿來做遊戲呢?」,就變成了現在這個樣子。
總之,我很慶幸我把原本 3 ~ 5 天的遊戲開發,拉長成了 16 天,讓我有足夠的時間來思考遊戲的設計與實作,而且增加了我寫文章的動力。
並且我也嘗試了一些我以前沒什麼接觸過的功能,像是 Rougelike 的升級選擇系統,還有能夠讓整個畫面暫停的功能,當然最重要的就是那隻 Boss 了。這些都是我以前沒什麼接觸過的東西,是我這次邊做邊想的,因此可能不是什麼很完美的設計,但我覺得這樣的嘗試是很有趣的。
最後也是順便為了推廣 Code.Gamelet 這個平台,希望有更多對遊戲開發有興趣的人可以來看看。兩年前參賽的時候我還只是個大學生,如今我已經出社會工作了,要說是 CG 讓我找到工作的一點也不為過,因為 CG,我開始接觸程式設計、遊戲設計,而因為這項技能,我找到了我夢想的工作。
如果你也對遊戲開發有興趣,即使你沒有什麼程式基礎,甚至是完全沒有程式基礎都沒關係,昨天我提到我為了這個平台而建立的 DC 群,裡面有很多對遊戲開發有興趣的玩家與開發者,而且大部分也都是學生或是剛出社會的年輕人,大家可以互相交流、分享與學習,歡迎各位來玩!