运行引擎
本页的工具会运行 Godot:它们需要一个服务器能解析到的 Godot 4.4.0 或更新的编辑器版本,以及 runtime 或 full profile(project.import.run 属于 editor 和 full)。每次运行都是一个受监督的进程,处在服务器管理的限定边界之内,有截止时间、有输出上限,并记录退出情况。
它运行哪个 Godot
服务器使用配置文件里的 godot_binary,否则使用它在常见安装位置和 PATH 上找到的第一个 Godot。在引擎工具运行之前,服务器会探测这个版本的版本号以及工具依赖的命令行功能;health.get 报告这个版本、版本号和探测结果。它从不下载引擎。
检查、导入与测试
| 工具 | 作用 |
|---|---|
script.check | 先用一次校准运行证明 --check-only 确实生效,再用引擎自己的 --check-only 编译一个脚本,返回引擎的诊断 |
project.import.run | 以无窗口方式对项目运行导入器,报告它生成了哪些预期产物,以及每个资产的导入状态 |
project.test | 运行项目自带的 GUT 或 gdUnit4 测试套件或其中一部分,返回解析出的计数和结论 |
project.run | 运行主场景或另一个场景,直到它退出或截止时间到,返回结论、退出情况和输出 |
project.test 运行的是项目已经提交的测试框架;没有测试框架的项目答复 unsupported,服务器不会安装任何东西。结论是根据引擎的输出和退出方式归类的,所以崩溃、脚本错误,或者打印了「已开始」却没有下文的运行,都不会被报告为通过。
project.run 是一次性运行。要让游戏一直运行并与它交互,请改为启动托管会话(见游戏与编辑器)。
导出
export.presets.list 读取 export_presets.cfg:每个预设的平台、它是否是可运行的那个、它需要的导出模板,以及解析到的 Godot 版本是否恰好装了那个模板。写进了密钥的预设只列出选项名,绝不列出值。
project.export 把一个预设作为托管导出执行:它立即答复一个导出 ID 然后继续运行,project.export.status 用来跟踪它——进度,以及结束时每个输出文件的大小、SHA-256 和产物 URI。project.export.cancel 停止导出并删除未完成的输出。输出写到服务器的私有存储,从不写进项目;设置 smoke 时,这台机器能运行的构建会以无窗口方式启动一次,确认它能起来。
导出只使用服务器所运行的那个 Godot 版本的模板,取自 Godot 导出模板管理器的安装目录;相邻版本的模板永远不会被使用。Linux、Windows Desktop 和 macOS 预设可以在 Linux、macOS 和 Windows 上导出,macOS 预设会被打包成一个 .zip 应用包。每种拒绝情况以及模板的查找位置见导出参考。
限定
每个 Godot 进程——检查、导入、测试、运行、导出、游戏或编辑器会话——都在一个限定边界里启动,服务器在进程能运行任何项目代码之前记录下这个边界,并在结束时证明边界已经清空。Linux 上默认是进程组,配置后也可以是委派的 cgroup 或容器适配器;macOS 上是进程组或容器适配器;Windows 上是 Job Object。这个边界能限定并停止服务器启动的进程,但不能让一个不可信的项目变得可以放心打开。细节见进程边界参考。