# 2D 遊戲開發,除了 Unity 你還可以考慮試試 Godot!以《文字遊戲》為例
###### tags: `2022TGDF` `台北遊戲開發者論壇` `共筆筆記`
- [2022 TGDF 台北遊戲開發者論壇](https://2022.tgdf.tw/)
- [共筆目錄](https://hackmd.io/@samuel-t-chou/2022-TGDF)
# 基本資訊
https://2022.tgdf.tw/speakers/wenhan_chang_team9
張文瀚 | Team9 共同創辦人
張文瀚, Team9 共同創辦人、《文字遊戲》遊戲工程師,在這之前是一位完全沒做過遊戲的網站前端工程師。
Team9 成立於 2018 年,成員涵括設計、影像、程式、行銷及文字領域的創作者。2022 年於 Steam 平台推出首發作品《文字遊戲》,帶給玩家耳目一新的體驗。作品多次在國內外斬獲獎項:「2021 Indie Game Award 最佳創新獎」、「2021 GWB 金獎」、「2020 巴哈姆特 ACG 創作大賽 遊戲組 金獎」--等。
## 議程介紹
> 語言:中文
說到遊戲引擎,相信大家最熟悉的絕對是 Unity 與 Unreal,但 Team9 作為從來沒有做過遊戲的新手團隊,卻選擇使用一個在國內默默無名的開源遊戲引擎「Godot Engine」,在兩年的開發過後發售《文字遊戲》並於市場取得了成功。
講者想分享關於 Godot Engine 的功能介紹、開發流程、與 Unity 的優缺點比較、各種製作實務與這兩年來使用的心得,希望能讓台灣的遊戲開發者們認識這款引擎,提供開發上的另一個選擇。
目標對象:獨立遊戲工作室、想了解遊戲開發的人、軟體工程師等,但不預設基礎知識。
預期收穫:認識一個新的遊戲引擎、了解遊戲開發的過程。
# 內容筆記
<!-- 在這裡之下寫筆記。 -->
## 緣起
- 團隊唯一的工程師
- 整個團隊以前幾乎都沒有遊戲開發的經驗
- 講者以前是寫前端的,不習慣強型別語言
- 第一個遊戲引擎的經驗是 RPG maker
- 格狀地圖
- 事件互動
- RPG maker 可以用 js 寫,比較熟悉
- 所以講者魔改了 RPG maker,勉強堪用,做完了 demo
- 可是 RPG maker 後面不容易擴展,所以想找其他 solution
- 最後就選擇了 godot
## Godot 簡介
- 開源
- 用 godot 的遊戲
- 音速小子究極版,聽說是魔改 godot 來開發的
- 設計理念
- 互相獨立的 2D / 3D 引擎
- 開源
### 場景結構
- 基礎為 Node
- Node 組成的樹就是 Scene
- Scene 裡面可以有 Scene
- Scene 更新的時候會同步更新引用他的 Scene
### GDScript
- 類似 python
- 官方推薦 GDScript,但可以用 C#,或是透過 GDNative 去使用其他語言開發
- 而且可以混用
### 遊戲輸出
- 多平台輸出
- 可切換 render engine
- GLES2
- GLES3
- ...
### Godot 4.0
- render engine 升級
- 物理引擎升級
- 編輯器 UI 更新
> 社群驅動,遊戲開發者最知道自己需要什麼
### 官方文件
- 英文
- 簡中
- 繁中 (WIP)
### 推薦的教學頻道
- GDQuest
- HeartBeast
### 輕量 + All in One Binary
- ~150 MB
- 輸出再額外下載 template
- 大部分工作就在 editor 裡面進行就好
- 檔案、Scene 管理
- script editor
- shader 編輯
- 版控
### Scene 文件是純文字格式
- 方便人類閱讀與編輯
### 優秀的 UI 系統
- godot editor 本身也是用 godot 開發的
### 多樣化,好上手的動畫製作方式
- GUI
- Animated Sprite
- Animated Player
- 團隊動畫師後面就自己透過 Animated Player 去做了
- Animated Tree
- 動畫的狀態機,應該類似 Unity 的 Animator
- 講者說文字遊戲內沒怎麼用到
- 2D + 3D
- Viewport + ViewportTexture
- 加強版的 Render Texture
### Scripting
- Game Script -> Runtime
- Tool Script -> Viewport
- Plugin Script -> Editor
- 講者在 godot 裡面自己客製化了一個遊戲內的事件編輯器
- GDNative -> Engine
- C++ module -> Engine
- Source Code -> Software
## Godot 缺點
### 3D render 較弱
- 使用 OpenGL 來 render
- 多數 3D 作品走 low poly 或 retro 路線
### 社群相對小
- 教學少
- 範例少
- 遇到相同問題的人少
- 中文資源少
### 生態系相對小
- 素材少
- 插件少
### 主機移植困難
- 因為各種 license 問題,沒有辦法有官方支援
- 要買第三方公司出的套件或自行研究
:::info
講者正在跟第三方公司合作,剛開始進行 Switch 移植
:::
## 結論
### 適合什麼類型的遊戲?
- 任何 2D 遊戲
- note:講者有提到他自己沒有用 Unity 去開發過產品的經驗
- 風格化 3D 遊戲
- low poly
- retro
- prototype / demo
- game jam
### 誰適合用 Godot
- 喜歡小規模遊戲
- 喜歡掌控一切 aka 喜歡造輪子
- 喜歡吸收英文資源
- 喜歡動手做改造
- 對開源有熱情,想參與遊戲引擎開發
### 誰不適合用 Godot
- 想做大規模遊戲
- 想做高畫質 3D 遊戲
- 不擅長英文
- 喜歡用大量現成套件
- 喜歡和台灣社群一起交流學習的人
- 因為現在沒有 QQ
### 兩年來的使用心得
- 自由,順手
- UI / UX 很棒
- 官方文件很棒
- 方便 Git 協作
- 2D 開發很舒服
- 3D 開發還可以
總之就是非常喜歡 :+1:
## Q&A
> 輸入(手把之類的)、l10n 的支援?
- l10n 沒經驗,文字遊戲沒這需求
> Asset 管理特色?
- 暫時沒想到
- 但使用上沒有遇到困難
> 用過 GDNative (e.g. godot-rust)
沒有
> 沒程式背景的話?
- 建議先看看 youtube 教學試試水溫
- 講者本身有前端的工作經驗
> 有內建連線功能嗎?
有
> 有輸出過 mobile 嗎?
- 有,沒遇到問題
- 但 iOS 還沒試過
> 從前端和互動藝術轉換到遊戲開發,有遇到什麼困難嗎?
- 有
- 但講者喜歡學習,所以覺得沒啥問題
> 3D scene 的文字濾鏡
- 講者自行開發 shader
> 適合開發 AVG 遊戲嗎
- 講者認為適合
- 有熱門的對話插件
> 開發文字遊戲時有遇到特別的難題嗎?
- 需要做很多客製化
- 難以用通用邏輯表示遊戲內的謎題
> 沒程式背景的話,建議從哪個語言入手
- Python / JS / GDScript 之類的
> 3D 有限制,那 2D 可以做到什麼程度?
- 文字遊戲沒有這種需求,所以不大清楚
> 當初試玩版是用 RM 做的?
沒錯!
> 討厭弱型別的話還適合 godot 嗎?
- 可以加 type notation
> 我 60 歲,適合學 godot 嗎?
- 可以
- 沒程式基礎也還行吧
## 團隊介紹
- [Team9](https://www.facebook.com/Team9.co)
- 絕大部分成員都沒有遊戲開發的經驗
- 負責人本身是做工業設計 / 平面設計