貢獻程式碼

學習、使用、修改及重新發布對引擎原始碼的修改,是 Godot 所採用的 MIT 授權所賦予你的基本權利,也因此 Godot 是一套 自由及開放原始碼軟體

因此,任何人都可以修改 Godot 的原始碼,並將這些修改以修補檔(描述修改內容的純文字檔)或現今常用的「Pull Request(PR)」方式送回上游專案,也就是提議將一個或多個 Git 提交(修補檔)直接合併進主要開發分支。

向上游貢獻程式碼修改有兩大好處:

  • 你的程式碼會由其他開發者審查並改進,並直接在上游專案維護,因此每次升級到新版時不必再次套用自己的修改。另一方面,這也代表你的修改需要夠通用,能讓所有使用者受益,而不只是你自己的專案;如果你的變更過於專案導向,則仍建議只保留在自己的專案內。

  • 整個社群都會因為你的貢獻而受益,而其他貢獻者也會用同樣的方式回饋,提供對你有幫助的程式碼。撰寫本文時,已有超過 2,000 位開發者為引擎貢獻了程式碼!

為了確保良好的協作與程式碼品質,Godot 開發團隊對程式碼貢獻訂有一些規範,例如 C++ 程式碼風格(縮排、括號等)以及 Git 與 PR 的工作流程。

建議可以從 GitHub 上標記為 good first issue 的議題著手。

也參考

有關 PR 工作流程的技術細節,請參見 Pull Request 工作流程

關於程式碼風格指引及用於強制格式化的 clang-format 工具,請參見 程式碼樣式方針

所有 Pull Request 在被接受前都必須經過審查流程。根據修改的範圍,負責該部分的維護者可能需要一些時間進行審查。我們非常重視每一位貢獻者,也請大家耐心等待,因為在像 Godot 這樣的開源專案中,通常貢獻數量會遠超過審查人力。

為避免浪費你的時間與精力,建議在實作並提出 PR 之前,先討論與評估你的想法。為此,Godot 設有 提案系統,鼓勵大家在那裡規劃修改並與社群討論。實作細節也可在 Godot Contributors Chat 與其他貢獻者討論。

備註

只有在新增功能或改善現有功能時才需要提交提案,修復問題只需提交錯誤報告即可。

測試與回報問題

另一個貢獻引擎的好方式是測試開發版或開發分支,並回報問題。若能回報在穩定版發現的問題,也很有幫助,這樣這些問題就能在開發分支與未來維護版中被修正。

測試開發版本

協助測試的方式有幾種:

  • 你可以依照各平台的 編譯 頁面說明,自行從原始碼編譯引擎。

  • 在官方公告(通常於部落格或社群平台)時,測試官方預先發行的二進位檔,如 alpha 版、beta 版及 RC(候選)版。

  • 也可測試開發分支的「可信賴」非官方版本;可向社群成員詢問可靠的來源。不過,建議盡量使用官方二進位檔或自行編譯,以確保來源安全可靠。

如前所述,協助留意穩定版中可能存在的潛在 bug 也很重要,特別是那些較少被開發者測試的進階功能。

在 GitHub 上提出問題

Godot 使用 GitHub 的問題追蹤系統 來管理錯誤回報。當你提出錯誤報告時,會有一份表單請你填寫。請盡量按照指示填寫,以確保所有問題格式一致並提供必要資訊。

貢獻說明文件

Godot 的「說明文件」主要包括兩種資源:

  • 類別參考。 這是 Godot API(供 GDScript 與其他腳本語言使用)的完整文件,可離線在 Godot 編輯器內查閱,也可在線上透過 Godot 類別參考 查詢。若要貢獻類別參考,需編輯相對應的 XML 檔並送出 Pull Request。詳情請參考 貢獻類別參考文件類別參考入門

  • 教學、引擎說明文件及其翻譯。 也就是你現在閱讀的這一部分,這些文件以 HTML 格式發佈,內容來自 reStructuredText (rst) 純文字檔。你可以透過在 godot-docs GitHub 儲存庫送出 Pull Request 參與貢獻。詳見 貢獻說明文件

貢獻翻譯

為了讓 Godot 更普及,讓母語非英語的用戶也能使用,我們的社群協助將 Godot 編輯器和說明文件翻譯成多種語言。

詳情請參考 編輯器與說明文件本地化