目录
- 基础使用、费用与开源许可
- 支持平台
- 支持的编程语言
- GDScript 脚本相关问题
- 资源与第三方 SDK 支持
- 引擎扩展方式
- 编辑器安装与便携性
- 渲染后端选择缘由
- 引擎架构与功能设计理念
- 多分辨率与多比例资产适配
- 版本选择、升级与发布计划
- 社区贡献与意见反馈
- 非游戏应用开发与引擎调用
- UI 工具与底层技术选型
- 编译、容器与代码设计相关问题
- 参与开发与联系方式
一、基础使用、费用与开源许可
Godot 是自由开源软件,基于 OSI 认证的MIT 许可证发布,完全免费,无使用费用限制。
- 使用权限:个人、非营利、商业项目均可免费下载、使用、修改、分发、二次改版,不受用途限制。
- 配套文档:采用CC-BY 3.0(知识共享署名)许可,署名 Juan Linietsky、Ariel Manzur 及 Godot 社区。
- 商标与图标:和文档使用相同 CC 许可。
- 补充说明:引擎源码中部分第三方库拥有独立许可,可查阅项目内
COPYRIGHT.txt、LICENSE.txt、LOGO_LICENSE.txt,或访问 Godot 官方许可页面查看详情。
二、支持平台
1. 编辑器运行平台
正式支持:Windows、macOS、Linux、*BSD;实验性支持:Android、网页版。
2. 项目导出平台
全平台覆盖 Windows、macOS、Linux、*BSD、Android、iOS、Web,同时提供 32 位与 64 位二进制包,默认推荐 64 位版本。
- Apple 设备:官方 macOS 版本原生兼容 Apple Silicon 与 x86_64 架构;
- 嵌入式平台:社区用户可在树莓派等 ARM 架构 Linux 设备上编译使用;
- 游戏主机:受主机厂商许可限制,官方不提供主机导出功能,主机游戏发布需自行对接厂商规则;
- 版本差异:Godot 3 支持 UWP 通用 Windows 平台,该功能在 Godot 4 中已移除(微软已弃用 UWP),仍可在 Godot 3 稳定版中继续使用。
三、支持的编程语言
1. 官方原生支持
- GDScript:引擎原生脚本语言,新手与原型开发首选,上手快、和引擎深度集成。
- C#:支持时间较晚,Web 平台暂不兼容,使用中可能遇到兼容性问题。
- C++:通过 GDExtension 实现原生扩展,用于高性能开发。
2. 第三方语言支持
可借助 GDExtension 拓展其他编程语言,目前社区已有 Python、Nim 等非官方绑定方案。
选型建议
纯原型、中小型项目、新手优先使用 GDScript;追求高性能、大型项目可搭配 C++;熟悉 .NET 生态可选用 C#。
四、GDScript 脚本相关问题
1. 什么是 GDScript?为什么推荐使用?
GDScript 是 Godot 量身定制的内置脚本语言,语法风格接近 Python,上手门槛低。核心优势是和引擎深度集成、整体开发复杂度低,尤其适合原型迭代、项目 Alpha/Beta 阶段以及非 3A 类项目。官方建议新用户至少尝试三天,体验其开发效率。
2. 开发 GDScript 的初衷
Godot 早期曾使用 Lua、Python 等主流脚本语言,但均存在明显短板,因此自研 GDScript,主要解决以下问题:
- 多数传统脚本虚拟机对多线程支持较差,无法适配 Godot 多线程架构;
- 现有语言对引擎类扩展适配效率低下;
- 第三方语言的 C++ 绑定代码冗余、易产生 Bug 与性能瓶颈;
- 缺少向量、变换等游戏开发常用原生类型,自定义实现会大幅降性能;
- 传统语言垃圾回收易造成运行卡顿、内存占用过高;
- 难以和引擎编辑器深度结合,代码补全、实时编辑等体验不佳。
五、资源与第三方 SDK 支持
1. 3D 模型格式
支持的模型格式、主流建模软件(如 Blender)导出与导入规范,可查阅官方「导入 3D 场景」专题文档。
2. 闭源 SDK(FMOD、GameWorks 等)支持规划
官方核心团队不会主动集成闭源专有 SDK,这违背了 Godot 开源、模块化的核心理念。由于引擎具备高可扩展性,个人或社区开发者可自行将闭源 SDK 封装为模块接入项目;若发现开源第三方 SDK,也可主动参与集成贡献。
六、引擎扩展方式
拓展 Godot 功能主要有以下途径:
- 开发编辑器插件与工具脚本,实现编辑器功能拓展;
- 使用GDExtension(原 GDNative)编写 C++ 原生扩展,拓展引擎底层能力、接入第三方库;
- 参考引擎现有模块(如 Jolt 物理引擎),学习第三方库集成思路;
- 参与 GDScript 源码优化,丰富脚本能力。
七、编辑器安装与便携性
1. 编辑器安装与桌面集成
Godot 本质为绿色程序,无需强制安装,解压即可运行。若需要开始菜单、快捷方式等桌面集成,有两种方式:
- 应用商店 / 包管理器安装:Windows(Scoop、Steam)、macOS(Homebrew)、Linux(Flathub),安装后自动完成桌面集成;
- 手动配置:
- Windows:将程序移至固定目录,创建快捷方式并放入开始菜单文件夹,也可固定到任务栏;
- macOS:将
Godot.app拖入/Applications目录,系统聚焦功能可正常检索; - Linux:将二进制文件移入系统
PATH目录,或编写.desktop快捷文件放置到系统应用目录。
2. 编辑器是否为纯绿色便携软件
默认状态为半绿色:程序本体可任意移动运行,但配置文件会保存在用户专属目录,迁移程序无法同步配置。若需要 U 盘等场景的纯便携(自包含)模式,可按照官方「自包含模式」文档配置。
八、渲染后端选择缘由
问题:为什么默认使用 Vulkan/OpenGL,而非 Direct3D?
- 跨平台优先:OpenGL、Vulkan 是全平台通用开放标准,能保证项目在 Windows、Linux、macOS 等平台无缝运行;
- 降低维护成本:引擎渲染开发团队规模较小,统一渲染后端可减少平台专属 Bug,降低维护压力;
- 未来规划:长期可能为 Xbox 平台开发 Direct3D 12 渲染后端,但 Vulkan/OpenGL 仍会作为全平台默认方案。
九、引擎架构与功能设计理念
1. 为什么 Godot 精简核心功能集?
官方刻意将低频功能(如高阶 AI)剥离出核心,优先保证核心代码精简,原因如下:
- 代码维护:减少代码体量与 Bug 数量,降低版本迭代、回归测试的工作量;
- 降低贡献门槛:代码库小巧,编译速度快,低配设备也能参与引擎开发;
- 减小程序体积:缩减编辑器与项目导出包大小,适配网络条件较差的地区与低端移动设备;
- 未来规划:逐步将部分核心功能转为官方附加组件,用户可按需选用。同时支持自定义编译,禁用无用功能进一步压缩包体。
2. 多分辨率、多纵横比资产适配方案(重点适用于 2D 项目)
- 选定单一基础分辨率(推荐 720p/1080p),依靠引擎缩放适配不同设备分辨率,避免多套素材造成冗余;
- 利用引擎画布拉伸功能,保证画面主体比例正常,可搭配黑边处理非常规比例屏幕;
- UI 界面优先使用锚点与Container(容器)节点,适配不同屏幕尺寸;
- 3D 项目无需修改素材,仅需调整相机视场角(FOV)即可适配不同比例。
十、版本选择、升级与发布计划
1. 新版本发布时间
无固定时间表,功能与稳定性达标后正式发布。
2. 新项目版本选择
优先推荐Godot 4.x;若项目依赖 3.x 专属功能、旧插件或 UWP 平台,可继续使用Godot 3.x,详情参考官方版本选型文档。
3. 旧项目是否升级新版本
根据项目实际情况判断:新版本安全性与功能更优,但可能存在兼容性问题,需评估项目工期、依赖插件后再决定。
十一、社区贡献与意见反馈
1. 如何参与贡献
- 基础贡献:正常使用引擎,遇到 Bug 提交详细可复现的问题报告,也可修正官方文档错误;
- 进阶贡献:学习 Git 与引擎源码编译,认领 Issues 并提交代码合并请求(PR);
- 参考资料:查阅官方「贡献者文档」,了解源码编译、文档编辑等规范。
2. 功能建议与想法提交
- 初步想法:先在社区发起讨论,确认需求普遍性与可行方案;
- 具体功能提案:创建提案 Issue,清晰描述问题、使用场景与解决方案,若能自行开发实现更佳;
- 零散思路:开启自由讨论帖,征集社区意见,落地后再转为正式提案。
十二、非游戏应用开发与引擎调用
1. 能否用 Godot 制作非游戏应用
可以。Godot 内置完善 UI 系统,体积小巧,可作为 Electron、Qt 的替代方案。开发非游戏应用建议在项目设置中开启低处理器模式,降低 CPU、GPU 占用。参考案例:开源工具 Material Maker、Pixelorama 均基于 Godot 开发。
2. 能否将 Godot 单独作为程序库调用
官方暂无相关开发计划。Godot 设计逻辑与编辑器深度绑定,拆分独立库会大幅增加复杂度。若仅需渲染能力,建议选用专业渲染库。
十三、UI 工具与底层技术选型
1. Godot 使用的 UI 工具包
不依赖 Qt、GTK、wxWidgets 等第三方 GUI 框架,采用自研 UI 系统,基于 OpenGL ES / Vulkan 硬件加速渲染,以 Control 节点对外提供接口。优势:全平台界面视觉统一、规避第三方框架许可限制;该 UI 系统无法单独拆分为库使用,但可直接用来开发非游戏应用。
2. 为什么选用 SCons 构建系统
引擎使用 SCons 作为默认编译工具,暂无更换计划,原因:
- 支持多平台、多架构并行编译,适配 PC、移动端、主机、Web 等全平台;
- 稳定性强,修改代码 / 配置后不会破坏编译流程;
- 基于 Python 编写,可实现代码生成、着色器解析、自定义模块等复杂编译逻辑;
- 原生支持跨编译场景,适配各平台专属编译规则。
3. 为什么不使用 C++ STL
引擎仅少量使用 STL 多线程相关组件,整体自研容器与数据结构,原因:
- STL 模板会生成大量符号,导致调试包体积臃肿;
- 自研容器(向量、哈希表等)针对游戏场景优化,如写时复制、O (1) 访问、内存池;
- 内置内存跟踪能力,方便排查内存问题;
- 自定义字符串完善支持国际化,弥补 STL 字符串的短板。
4. 为什么不启用 C++ 异常机制
- 设计理念:引擎追求优雅容错,遇到错误仅打印日志、回溯信息,尽量继续运行,避免程序直接崩溃;
- 性能与体积:异常机制会增大可执行文件体积、延长编译时间。
5. 是否采用 ECS(实体组件系统)
Godot默认基于面向对象继承架构,不使用 ECS。同时引擎具备足够灵活性,用户可通过脚本动态增删子节点,自行实现组合式 ECS 逻辑。
6. 为什么不强制使用 DOD(面向数据设计)
- 适用场景有限:DOD 是缓存优化手段,仅在每帧处理数万对象时才有明显性能提升,绝大多数游戏无需该方案;
- 兼顾易用性:强制 DOD 会大幅提升开发门槛;
- 折中方案:海量高性能对象可使用 C++/GDExtension 编写,常规逻辑继续使用 GDScript/C#。
十四、参与开发与联系方式
- 支持与参与开发:查阅官方「贡献方式」文档,参与代码、文档、社区运营等工作;
- 团队与联络:开发团队介绍、官方联络渠道可访问 Godot 官网对应板块。