导出项目

为什么要导出?

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

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

在 PC 上

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

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

最后,Godot有一个简单但有效的系统,可将DLC创建为额外的程序包文件。

在移动端

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

这可能很麻烦,因为这意味着开发人员必须熟悉每个平台的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
  • 导出每个单个文件——此模式导出项目中的每个单个文件。这对于测试是否有什么被遗忘很有用,但是开发人员通常在项目目录中有很多无关的东西,这使它成为一个坏主意。
  • 仅导出资源——仅导出资源。对于大多数项目来说,这就够了。然而,许多开发人员喜欢在他们的游戏中使用自定义数据文件。为了弥补这一点,可以为额外的扩展名添加过滤器(如 *.txt,*.csv 等)。
  • 仅导出选定资源——仅导出列表中的选定资源。这对大多数项目来说可能是过度的,但在某些情况下它是合理的(通常是巨大的项目)。此模式可以完全控制导出的内容。可以选择单个资源,并执行依赖性检测以确保添加了所需的所有内容。
../../../_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