Be creative, write anything.

Global Game Jam 2018 回顧心得,老司機如何在兩天內完成製作遊戲

沒有留言
Game Jam 工作桌

有著前幾次參加經驗,算是某種經驗老道的老江湖,抱持著很輕鬆悠哉的心情去參加這次 Game Jam,在 48 小時內與隊友同心協力,發想與主題有關聯的遊戲,並且實作成一個可以玩的遊戲。

Game Jam 也是社交場,除了能與同組組員培養一起奮戰的感情外,也能跟著許久不見的開發者朋友交流交流,大多數都是來自於 Unity 應用領域

附註:文章標題老司機意指同組組員,在遊戲開發經驗豐富。而遊戲中的老司機,除了形容司機年紀很老外,還因遊戲隱藏彩蛋而有種奇怪暗示。更多可參考詞條:老司機

開發流程回顧筆記

  • 第一天晚上抵達會場,由主辦單位完成分組
  • 得知這次 Game Jam 題目主題「Transmission」
  • 與組員互相認識,一同吃飯順便發想遊戲
  • 與晚到組員互相認識,持續發想遊戲
  • 針對發想投票來決定往哪個方向去設計遊戲 (不然想法太多,過於發散)
  • 回家睡覺 (組員們過夜持續思考遊戲流程與開發遊戲)
  • 第二天早上近十點抵達會場,了解確定的遊戲玩法
  • 追蹤程式碼了解組員們已完成進度,並思考接下來能做些什麼
  • 基於原本架構改寫,並開發車站地圖產生器,因為主寫人跑去補眠,因此毫無限制大改特改
  • 實作路線設定架構,車站到車站之間不再是只能走直線
  • 與其中一位組員到京華城吃晚餐
  • 實作乘客設定檔,地圖不再是只能只有男性乘客,而是根據設定可產生全女性乘客的地圖
  • 第一次遊戲展示
  • 實作路線總距離計算,公車可以等速在地圖上移動
  • 處理遊戲初始畫面架構與美術整合,有開頭畫面了
  • 實作玩家設定路線的提示線條繪製,使用超級無敵暴力法,每段線段使用 100 點來描述
  • 回家睡覺 (組員們再次過夜繼續拼遊戲)
  • 第三天早上近十點抵達會場,先花時間了解遊戲進度
  • 處理遊戲初始畫面、Credit、以及選單畫面的架構更新
  • 更新提示線條繪製素材,改用虛線素材
  • 隨意吃會場食物當作午餐
  • 完成編輯關卡 A
  • 完成編輯關卡 B,並整合新的巴士與牛車素材
  • 建置關卡 C,並教學請組員編輯
  • 實作彩蛋功能,符合主題老司機的暗示 (組員思想邪惡 (?))
  • 更新完成所有流程檢查與測試
  • 更新文件與網站內容
  • 第二次遊戲展示,最終完成成品
  • 散場

清楚自己想要什麼

參加 Game Jam 最主要的目的,主要是想挑戰在短時間完成些什麼,並且有機會的話,能來規劃遊戲主程式架構。至於遊戲玩法的討論與發想,就顯得意興闌珊了。

只不過這次隊友們非常拼,第一天就過夜開始拼程式,自己又處於生病不舒服狀態,便沒有什麼精力與機會可以來主導程式架構,只能退而求其次,嘗試協助團隊完成整個遊戲,有什麼需要做的功能,便跳下去實作完成它。

主動處理遊戲缺少的部分

這次團隊中包含自己總共有三位軟體工程師,在遊戲開發過程中,其實很少工作分配與協調的討論,而是按照當下遊戲的需求互相支援,能先寫什麼功能,便寫什麼功能。

開發流程大概是這樣,早上從家裡到會場後 (都沒有留過夜),花點時間理解當時的開發進度後,便根據現有的需求開始製作功能。

每完成一個功能便停下腳步,看看組員們再忙些什麼,到其他組繞繞後,再回來看當下遊戲缺少功能,再繼續開發下去。

設計能越簡單越好

開發新功能都採用組件 (component) 來設計,單一組件功能能越簡單越好,高內聚 (high cohesion) 是一個重要指導原則,此外組件與遊戲相關參數盡可能能開放 (serializefield),好讓關卡設計師調整編輯。

若需要現有流程的配合,則是詢問組員所開發的流程程式碼,直接修改該流程加入加入新的事件 (event) 觸發,利用事件註冊監聽方式來與流程配合,達到低耦合 (law coupling) 的設計架構。

至於設計模式 (design pattern) 或是定義介面 (interface) ,能不必就不會特別套,在如此短時間所設計架構要越精簡越好。

看遊戲出現數多個功能套用工廠模式 (factory pattern) 以及功能組件刻意定義介面 (interface),整個問號,為什麼要弄成如此複雜?有總過度設計 (over design) 的味道在。

版本控制是好物

身為一位軟體工程師,任何專案要求啟用版本控制可說是在自然不過的事情了,在第一天我們早已商議好採用 Git 進行版本控制,採用 Github 來進行同步資料交換。

在這次開發過程中,還蠻常發生場景編輯導致的檔案衝突 (conflicted),甚至還因人為不太會操作處理衝突,使得遊戲場景壞掉再也打不開的情形……。

幸好有版本控制嘛,仔細研究 Source Tree 的介面操作,能夠指定 commit 的指定檔案還原,成功救回壞掉的場景啊。

版本控制是好物,不使用嗎?

遊戲資源以及展示

遊戲是一款公車路線控制遊戲,指派公車行經各個站牌,將乘客載到其目的地去。滑鼠點擊紅色圈圈 (發車車站) 站點,然後拖曳移動到多個鄰近站點,完成路線

遊戲原始碼放在 Github 上,也提供 WebGL 版本線上試玩 (Desktop, Chrome & Firefox 限定)。

遊戲截圖

遊戲截圖

沒有留言: