导出项目

为什么要导出?

起初,Godot 没有任何导出项目的方法。开发人员将编译适当的二进制文件并手动为每个平台构建软件包。

当更多的开发人员(甚至是非编程人员)开始使用它,而当我们的公司同时开始进行更多的项目时,很明显这是一个瓶颈。

在 PC 上

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

这听起来很简单,但开发人员可能不想这样做的原因可能有几个。第一个原因是可能不希望分发大量文件。一些开发人员可能不喜欢好奇的用户偷看游戏的制作方式,其他开发人员可能会发现它不雅致,等等。另一个原因是,开发人员可能更喜欢特殊编译的二进制文件,该二进制文件的大小较小、更优化、并且不包含编辑器和调试器之类的工具。

Finally, Godot has a simple but efficient system for creating DLCs as extra package files.

警告

Godot does not support loading PCK files larger than 2 GB yet. If your exported project data is larger than 2 GB, you will need to split it into several PCK files by exporting additional PCKs and loading them at run-time.

在移动端

移动设备中的相同情况会更糟糕。要在这些设备上分发项目,需要为每个平台构建一个二进制文件,然后将其与游戏数据一起添加到本地项目中。

这可能很麻烦,因为这意味着开发人员必须熟悉每个平台的SDK,才能进行导出。虽然总是鼓励学习每个SDK,但在不希望的时间被迫这样做可能会令人沮丧。

这种方法还有另一个问题:不同的设备偏好一些不同格式的数据来运行。这个主要的示例是纹理压缩。所有PC硬件都使用S3TC(BC)压缩,并且已经标准化了十多年,但是移动设备使用不同的格式进行纹理压缩,例如PVRTC(iOS)或ETC(Android)。

导出菜单

经过多次尝试不同的导出工作流程后,目前的工作流程已被证明是最好的。在撰写本文时,并不是所有平台都支持,但受支持的平台仍在继续增长。

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

../../../_images/export.png

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

../../../_images/export_dialog.png

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

../../../_images/export_preset.png

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

../../../_images/export_error.png

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

导出模板

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

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

../../../_images/exptemp.png

导出模式

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

  • 导出项目中的所有资源

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

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

../../../_images/expres.png

Export all resources in the project 将会导出项目中的每一个资源。**Export selected scenes**和**Export selected resources**给予你一张项目中的场景或资源的清单,并且需要选取每个想导出的场景或资源。

../../../_images/expselected.png

从命令行导出

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

godot --export "Windows Desktop" some_name

假设有一个名为 Windows Desktop 的预设,并且可以找到该模板,它将导出为 some_name.exe。输出路径相对于项目路径或绝对路径;它不遵命令被调用时的目录。

您还可以将其配置为仅导出PCK或ZIP文件,从而允许单个导出可以被多个Godot可执行文件使用。如果目标名称以 .pck.zip 结尾,才会发生这种情况。

--export 标志与 --path 标志组合起来通常很有用,可为自动导出创建专用的导出预设:

godot --path path/to/project --export "pck" game_name.pck

PCK 与 ZIP 打包文件格式对比

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

PCK格式:

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

  • 尽管有`第三方工具<https://github.com/hhyyrylainen/GodotPckTool>`__ 来提取和创建PCK文件,但使用用户操作系统上通常存在的工具是不可读和不可写的。

ZIP格式:

  • 经过压缩,尺寸更小,但读写较慢。

  • 可以使用用户操作系统中的常见工具读取或写入。这对简化制作mod很有用。(另请参阅:ref:doc_exporting_pcks)。

警告

Due to a known bug, when using a ZIP file as a pack file, the exported binary will not try to use it automatically. Therefore, you have to create a launcher script that the player can double-click or run from a terminal to launch the project:

:: 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

Save the launcher script and place it in the same folder as the exported binary. On Linux, make sure to give executable permissions to the launcher script using the command chmod +x launch.sh.