为 Godot 做出贡献
为 Godot 做出贡献
本文档基于 Godot 官方文档(master 分支) 翻译整理。
提示
Godot Engine 是由志愿者社区驱动的开源项目,欢迎所有人参与贡献!无论你的技能水平如何,都可以为 Godot 的发展做出贡献。
贡献方式概览
以下是你可以为 Godot 项目做出贡献的主要方式:
- 改进引擎 — 修复 Bug、编写新功能或完善现有功能
- 编写或校对文档 — 可以参与本参考手册或代码参考的编写
- 翻译 — 将编辑器或文档从英文翻译为其他语言
- 报告问题 — 提交详细的 Issue 或撰写改进提案
贡献代码
如果你已经熟悉 Godot 并且具备 C++ 开发能力,可以直接为引擎贡献代码。
贡献者最佳实践
在向引擎提交代码之前,请务必阅读以下指南:
- 语言 — Godot 引擎使用 C++ 编写,所有代码提交和讨论均使用英文
- 代码风格 — 遵循 Godot 的代码风格指南,确保代码一致性
- 提交规范 — 编写清晰、有意义的提交信息
Pull Request 工作流
- Fork 仓库 — 在 GitHub 上 Fork godotengine/godot 仓库
- 克隆到本地 — 将你 Fork 的仓库克隆到本地开发环境
- 创建分支 — 基于
master分支创建功能分支 - 进行修改 — 实现你的改动并确保通过测试
- 推送变更 — 将修改推送到你的远程仓库
- 提交 PR — 向上游仓库发起 Pull Request
- 响应反馈 — 根据维护者的反馈进行修改
代码风格指南
Godot 有严格的代码风格要求,涵盖以下方面:
- C++ 和 Objective-C — 命名规范、格式化规则、注释风格
- Java — Android 模块相关代码规范
- Python — 构建脚本和工具代码规范
- C++ 使用指南 — 内存管理、容器使用、错误处理等
测试与报告问题
即使你不编写代码,也可以通过以下方式帮助改进 Godot:
报告 Bug
- 在 GitHub Issues 提交 Bug 报告
- 提供详细的复现步骤和系统信息
- 附上最小复现项目(如果可能)
二分法定位回归
如果某个版本引入了问题,可以使用 Git 二分法来定位引入该问题的具体提交:
- 下载不同版本的官方构建
- 使用
git bisect命令逐步缩小范围 - 找到引入问题的具体提交
测试 Pull Request
帮助测试其他贡献者提交的 Pull Request:
- 下载预编译构建 — 从 CI 系统下载 PR 的测试构建
- 从源码编译 — 切换到 PR 分支并本地编译测试
贡献文档
文档是 Godot 项目的重要组成部分,帮助改进文档是非常有价值的贡献。
编写手册
- 遵循内容指南和文档写作规范
- 确保文档准确、清晰、易于理解
- 文档源码使用 Sphinx 构建
类参考
类参考的源文件是 XML 格式,存放在 Godot 主仓库中:
- 遵循类参考写作指南
- 确保描述准确且示例可运行
- 使用 Godot 编辑器内置的类参考查看效果
贡献翻译
如果你掌握多种语言,可以帮助将 Godot 的编辑器和文档翻译为你的语言。
编辑器和文档本地化
- Godot 的编辑器和文档通过社区翻译平台进行管理
- 翻译工作持续进行中,始终需要更多志愿者的参与
- 可以在 Godot 贡献者聊天频道 的
#documentation频道与翻译团队交流
Bug 分类指南
如果你有兴趣参与 Issue 管理,可以了解 Godot 的 Bug 分类流程:
- Issue 管理 — 如何处理和分类新提交的 Issue
- 优先级判定 — 如何评估 Bug 的严重程度和优先级
引擎开发
如果你打算深入参与引擎的 C++ 开发,需要了解从源码编译到调试的完整流程。
编译环境准备
Godot 使用 SCons 作为构建系统。在编译之前,确保你已安装以下依赖:
| 平台 | 必需依赖 |
|---|---|
| Linux/*BSD | GCC 或 Clang、SCons、pkg-config、Python 3、libX11、libXCursor、libXi 等 |
| macOS | Xcode Command Line Tools、SCons、Python 3 |
| Windows | Visual Studio 2019+(或 Build Tools)、SCons、Python 3 |
推荐 IDE
Godot 引擎推荐使用以下 IDE 进行开发:
- VS Code + C/C++ 扩展(跨平台,轻量级)
- Visual Studio(Windows 上功能最全)
- CLion(JetBrains 出品,跨平台)
从源码编译
获取源码并编译的基本步骤:
# 克隆仓库
git clone https://github.com/godotengine/godot.git
cd godot
# 编译编辑器版本(包含调试符号)
scons
# 编译发布版本(无调试符号,性能更优)
scons target=release
# 编译导出模板
scons target=template_release
scons target=template_debug常用编译选项:
| 选项 | 说明 |
|---|---|
target=release_debug | 发布调试版(优化 + 调试符号) |
target=template_release | 导出模板(发布版) |
target=template_debug | 导出模板(调试版) |
dev_mode=yes | 开发模式(将警告视为错误,自动启用测试) |
tests=yes | 编译单元测试 |
module_<name>_enabled=no | 禁用指定模块 |
custom_modules=<path> | 指定外部模块路径 |
调试引擎
调试 Godot 引擎有以下几种方式:
1. 在 IDE 中调试
- 在 VS Code 中配置
launch.json,设置 Godot 可执行文件路径 - 在 Visual Studio 中直接打开 Godot 解决方案文件(.sln)
- 在 CLion 中使用自定义构建目标
2. 使用 GDScript 断点
Godot 编辑器内置了 GDScript 调试器,支持设置断点、查看变量、单步执行。
3. 使用 GDB/LLDB
# Linux/macOS
gdb ./bin/godot.linuxbsd.editor.x86_644. 远程调试
在目标设备上运行 Godot 并连接调试器,适用于移动平台和主机平台开发。
性能分析
Godot 内置了性能分析器,也支持外部工具:
- 内置分析器:编辑器底部的"性能"面板,实时显示帧时间、内存使用等
- Tracy:集成的帧分析器,提供更详细的性能数据
- Valgrind(Linux):检测内存泄漏
- Instruments(macOS):系统级性能分析
- VTune(Intel):CPU 性能分析
兼容性处理
当你的修改可能破坏已有功能时,需要特别注意:
- 弃用流程:使用
WARN_DEPRECATED宏标记即将移除的 API - 迁移指南:在 PR 中说明用户需要做的迁移步骤
- 渐进式弃用:先标记为弃用,等待几个版本后再移除
最后同步日期
本节最后同步于 2026-04-15,基于 Godot 官方文档 - Engine Development 翻译整理。
编辑器开发
Godot 编辑器本身也是用 C++ 编写的,并且与引擎共享同一个代码库。如果你想改进编辑器的功能或创建自定义编辑器插件,需要了解编辑器的架构。
编辑器架构概述
Godot 编辑器建立在引擎核心之上,通过以下关键类组织:
| 类 | 职责 |
|---|---|
EditorNode | 编辑器的顶层节点,管理所有编辑器子系统 |
EditorPlugin | 插件基类,用于扩展编辑器功能 |
EditorInterface | 编辑器接口,提供对编辑器功能的编程访问 |
EditorSelection | 管理编辑器中的对象选择 |
EditorSettings | 编辑器配置和偏好设置 |
EditorFileSystem | 文件系统扫描和资源导入管理 |
EditorUndoRedoManager | 撤销/重做操作管理 |
编辑器插件开发
编辑器插件是扩展编辑器功能的主要方式。你可以通过 C++ 或 GDScript 创建插件:
- GDScript 插件:适合快速原型和简单的编辑器扩展
- C++ 插件:适合需要深度集成或高性能的场景
何时选择 C++ 插件?
如果你的编辑器扩展需要访问引擎内部的 C++ API,或者需要更高的执行性能,就应该使用 C++ 编写插件。大多数情况下,GDScript 插件已经足够。
编辑器图标
Godot 编辑器中的每个节点类型和资源类型都有对应的图标。如果你在自定义模块中添加了新的类,可以为它创建编辑器图标:
创建图标的步骤:
- 设计一个 SVG 格式的图标(推荐尺寸 16×16)
- 在模块目录下创建
icons/文件夹 - 将 SVG 文件放入该文件夹
- 重新编译引擎
图标设计规范:
- 使用 SVG 格式,确保在任何分辨率下都清晰
- 图标应简洁明了,易于识别
- 颜色方案与现有图标保持一致
- 可以通过
get_icons_path()在config.py中自定义图标路径
参考:Editor icons
编辑器风格指南
在为编辑器贡献代码时,请遵循以下规范:
- UI 文本使用中文或英文(取决于目标用户)
- 代码注释使用英文
- 遵循引擎的 C++ 代码风格
- 编辑器 UI 修改应考虑多语言支持
最后同步日期
本节最后同步于 2026-04-15,基于 Godot 官方文档 - Editor Development 翻译整理。
