Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

导出项目

为什么要导出?

起初,Godot 没有任何导出项目的方法。开发人员需要为各个平台手动编译正确的二进制文件并打包。

后来使用它的开发人员(甚至是非程序员)多了起来,我们的公司也开始同时进行更多的项目时,这就明显成了一个瓶颈。

在 PC 端

使用 Godot 在 PC 上分发游戏项目相当容易。将 Godot 二进制文件拖放到与 project.godot 文件相同的目录中,然后压缩项目目录,就完事了。

听起来容易,但可能有几个原因导致开发者不愿这样做。第一,分发大量文件并不可取:一些开发者不希望有好奇的用户偷看游戏的制作方式,一些开发者认为分发大量文件并不优雅,不一而足。第二,开发者可能会偏向于专门编译好的二进制文件:其体积更小、优化更好,且不包含编辑器、调试器等工具。

最后,Godot 有一个简单而有效的系统,用于将 DLC 创建为额外的包文件

在移动端

相同的情况,在移动端会更糟:在移动设备上分发项目,需要为每个平台分别构建二进制文件,并将其与游戏数据一起添加到原生项目中。

这可能比较棘手,因为这意味着开发者甚至在导出前必须先熟悉各个平台的 SDK。虽然学习各个 SDK 是值得鼓励的,但被迫在不合适的时机学习,难免让人沮丧。

这种方法还有另一个问题:不同的设备在运行时对某些数据有不同的格式偏好。主要的例子是纹理压缩。所有 PC 硬件都使用 S3TC(BC)压缩,这已经标准化了十多年,但是移动设备使用不同的格式进行纹理压缩,例如 ETC1 和 ETC2。

导出菜单

经过对不同导出工作流程的多次尝试,当前方案被证明效果最佳。在本文撰写之时,Godot 尚未支持所有平台,但所支持的平台正仍在增加。

要打开导出菜单,请单击导出按钮:

../../_images/export.webp

导出菜单打开后完全是空的,因为我们需要添加导出预设。

../../_images/export_dialog.webp

要创建导出预设,请点击导出菜单顶部的添加... 按钮。这将打开一个平台下拉列表,以从中选择导出预设。

../../_images/export_preset.webp

一般使用默认选项导出就足够了,通常无需对其进行调整。但是,许多平台都需要安装额外工具(SDK)才能导出。此外,Godot 需要安装导出模板来创建软件包。缺少某些内容时,导出菜单将给出提示,并且在问题解决之前禁止用户为该平台进行导出:

../../_images/export_error.webp

那时,用户需要回到文档并按照有关如何正确设置该平台的说明进行操作。

菜单底部的按钮允许你用几种不同的方式导出项目:

  • 全部导出:将项目导出为所有定义的预设的可游玩版本(Godot 可执行文件和项目数据)。所有预设都必须定义导出路径才能正常工作。

  • 导出项目:将项目导出为所选预设的可游玩版本(Godot 可执行文件和项目数据)。

  • 导出 PCK/ZIP:将项目资源导出为 PCK 或 ZIP 包。这不是一个可游玩的版本,它仅导出项目数据,没有 Godot 可执行文件。

导出模板

除了设置平台,还必须安装导出模板才能导出项目。可以从网站的下载页面中获取,得到的是一个 TPZ 文件(重命名的 ZIP 存档)。

下载完成后,就可以使用编辑器中的安装导出模板选项进行安装:

../../_images/export_templates.webp

资源选项

导出时,Godot 会先创建一个所有要导出的文件的列表,然后再创建包。有 5 种不同的导出模式:

  • 导出项目中的所有资源

  • 导出选中的场景(包括依赖项)

  • 导出选中的资源(包括依赖项)

  • 导出项目中的所有资源,下方勾选的资源除外

  • 导出为专用服务器

../../_images/export_resources.webp

导出项目中的所有资源将会导出项目中的每一个资源。导出选中的场景导出选中的资源会给你一张项目中的场景或资源的清单,你需要选取每个想导出的场景或资源。

../../_images/export_selected.webp

导出项目中的所有资源,下方勾选的资源除外就是字面意思,除了你在列表中选择的内容,其他所有内容都会被导出。

导出为专用服务器会移除项目中的所有视觉资源并替换为占位符(包括 Cubemap、CubemapArray、Material、Mesh、Texture2D、Texture2DArray、Texture3D)。你也可以进入文件列表,指定希望保留的特定视觉资源。

备注

导出的项目永远不会包含名字以点开头的文件和文件夹。这是为了防止将 .git 等版本控制文件夹加入导出的 PCK 文件。

在资源列表之下,有两个可以设置的筛选器。第一个可以让 .txt.json.csv 等非资源文件与项目一起导出。第二个可以用来排除特定类型的文件,这样就不必手动一个个去取消选择了。例如 .png 文件。

配置文件

导出配置存储在两个文件中,这两个文件都可以在项目目录中找到:

  • export_presets.cfg:此文件中包含绝大多数导出配置,可以安全地提交到版本控制。这里的内容通常没有什么是你需要保密的。

  • .godot/export_credentials.cfg:此文件包含被视为机密的导出选项,例如密码和加密密钥。通常不应用版本控制或与其他人共享,除非你确切知道自己在做什么。

由于凭证文件通常不包含在版本控制系统中,因此如果将项目克隆到新计算机,某些导出选项将会丢失。处理此问题的最简单方法是手动将文件从旧位置复制到新位置。

从命令行导出

在生产中,自动化构建很有用,Godot 使用 --export-release--export-debug 命令行参数来支持它。从命令行导出仍需要导出预设来定义导出参数。该命令的基本调用将是:

godot --export-release "Windows Desktop" some_name.exe

假设有一个名为“Windows Desktop”的预设,并且可以找到模板,它将导出为 some_name.exe(如果导出预设的名字中存在空格或特殊字符,就必须放在引号里)。输出路径是相对于项目的路径或者绝对路径它使用的不是命令被调用时的目录

输出的文件扩展名应该与 Godot 导出过程所使用的相匹配:

  • Windows:.exe

  • macOS:.app.zip macOS 导出时还支持 .dmg

  • Linux:任意扩展名(没有也行)。64 位 x86 二进制文件通常使用 .x86_64

  • HTML5:.zip

  • Android:.apk

  • iOS:.zip

你还可以将其配置为导出 PCK 或 ZIP 文件,能够让多个 Godot 可执行文件执行同一个导出的主包文件。这样做时,仍然必须在命令行中指明导出预设的名称:

godot --export-pack "Windows Desktop" some_name.pck

--export-release 标志与 --path 标志组合起来通常很有用,这样你就不必在运行命令之前 cd 到项目文件夹中了:

godot --path /path/to/project --export-release "Windows Desktop" some_name.exe

参见

关于从命令行使用 Godot 的更多信息,请参阅命令行教程

PCK 与 ZIP 打包文件格式对比

各个格式有它的优势与劣势。PCK 对大多数用例来说是默认和推荐格式,但取决于你的需要,你可能希望使用 ZIP。

PCK 格式:

  • 未压缩的格式。文件尺寸较大,但读写较快。

  • 无法通过用户操作系统上的常见工具读写,尽管有第三方工具可以提取和创建 PCK 文件。

ZIP 格式:

  • 压缩格式。文件尺寸较小,但读写较慢。

  • 能够通过用户操作系统上的常见工具读写。这对简化模组制作很有用。(另请参阅导出包、补丁、模组)。

警告

由于存在一个已知漏洞,当使用 ZIP 文件作为打包文件时,导出的二进制文件不会尝试自动使用它。因此,你需要创建一个启动脚本,玩家可以双击它或从终端运行它来启动项目:

:: launch.bat (Windows)
@echo off
my_project.exe --main-pack my_project.zip

# launch.sh (Linux)
./my_project.x86_64 --main-pack my_project.zip

保存启动脚本,并将它与导出的二进制文件放在同一文件夹中。在 Linux 上,请确保使用 chmod +x launch.sh 命令给予启动脚本可执行权限。