导出项目
为什么要导出?
起初,Godot 没有任何导出项目的方法。开发人员需要为各个平台手动编译正确的二进制文件并打包。
后来用它的开发人员(甚至是非程序员)多了起来,我们的公司也开始同时进行更多的项目,这就明显成了一个瓶颈。
在 PC 上
使用 Godot 在 PC 上分发游戏项目相当容易。将 Godot 二进制文件拖放到与 project.godot
文件相同的目录中,然后压缩项目目录即可。
这听起来很简单, 但开发人员可能不想这样做的原因可能有几个. 第一个原因是可能不希望分发大量文件. 一些开发人员可能不喜欢好奇的用户偷看游戏的制作方式, 其他开发人员可能会发现它不雅致, 等等. 另一个原因是, 开发人员可能更喜欢特殊编译的二进制文件, 该二进制文件的大小较小, 更优化, 并且不包含编辑器和调试器之类的工具.
最后,Godot有一个简单但有效的系统, 用于 将DLC 创建为额外的包文件 .
在移动端
移动设备中的相同情况会更糟糕. 要在这些设备上分发项目, 需要为每个平台构建一个二进制文件, 然后将其与游戏数据一起添加到本地项目中.
这可能很麻烦, 因为这意味着开发人员必须熟悉每个平台的SDK, 才能进行导出. 虽然总是鼓励学习每个SDK, 但在不希望的时间被迫这样做可能会令人沮丧.
这种方法还有另一个问题:不同的设备偏好一些不同的数据格式来运行。主要的例子是纹理压缩。所有PC硬件都使用S3TC(BC)压缩,并且已经标准化了十多年,但是移动设备使用不同的格式进行纹理压缩,例如ETC1和ETC2。
导出菜单
经过多次尝试不同的导出工作流程后, 目前的工作流程已被证明是最好的. 在撰写本文时, 并不是所有平台都支持, 但受支持的平台仍在继续增长.
要打开导出菜单, 请单击 导出 按钮:
导出菜单将打开, 但它完全是空的. 这是因为我们需要添加导出预设.
要创建导出预设,请点击导出菜单顶部的添加… 按钮。这将打开一个平台下拉列表,以从中选择导出预设。
一般使用默认选项导出就足够了,通常无需对其进行调整。但是,许多平台都需要安装其他工具(SDK)才能导出。此外,Godot 需要安装导出模板来创建软件包。缺少某些内容时,导出菜单将发出提示,并且在解决该问题之前,用户将无法为该平台进行导出:
那时,用户需要回到文档并按照有关如何正确设置该平台的说明进行操作。
菜单底部的按钮允许你用几种不同的方式导出项目:
全部导出:将项目导出为所有定义的预设的可播放版本(Godot 可执行文件和项目数据)。所有预设都必须定义**导出路径**才能正常工作。
导出项目:将项目导出为所选预设的可播放版本(Godot 可执行文件和项目数据)。
导出 PCK/ZIP:将项目资源导出为 PCK 或 ZIP 包。这不是一个可玩的版本,它仅导出项目数据,没有 Godot 可执行文件。
导出模板
除了设置平台,还必须安装导出模板才能导出项目。可以从网站的下载页面中获取,得到的是一个 TPZ 文件(重命名的 ZIP 存档)。
下载完成后,就可以使用编辑器中的安装导出模板选项进行安装:
资源选项
导出时,Godot 会先创建一个所有要导出的文件的列表,然后再创建包。有 3 种不同的导出模式:
导出项目中的所有资源
导出选中的场景(包括依赖项)
导出选中的资源(包括依赖项)
导出项目中的所有资源将会导出项目中的每一个资源。导出选中的场景和导出选中的资源会给你一张项目中的场景或资源的清单,你需要选取每个想导出的场景或资源。
备注
导出的项目永远不会包含名字以点开头的文件和文件夹。这是为了防止将 .git
等版本控制文件夹加入导出的 PCK 文件。
在资源列表之下,是两个可以设置的筛选器。第一个可以让 .txt
、 .json
、 .csv
等非资源文件与项目一起导出。第二个可以用来排除特定类型的文件,这样就不必手动一个个去取消选择了。例如 .png
文件。
配置文件
导出配置存储在两个文件中,这两个文件都可以在项目目录中找到:
export_presets.cfg
:此文件中包含绝大多数导出配置,可以安全地提交到版本控制。这里的内容通常没有什么是你需要保密的。.godot/export_credentials.cfg
:此文件包含被视为机密的导出选项,例如密码和加密密钥。通常 不 用版本控制或与其他人共享,除非你确切知道自己在做什么。
由于凭证文件通常不包含在版本控制系统中,因此如果将项目克隆到新计算机,某些导出选项将会丢失。处理此问题的最简单方法是手动将文件从旧位置复制到新位置。
从命令行导出
In production, it is useful to automate builds, and Godot supports this with the --export-release
and --export-debug
command line parameters. Exporting from the command line still requires an export preset to define the export parameters. A basic invocation of the command would be:
godot --export-release "Windows Desktop" some_name.exe
假设有一个名为“Windows Desktop”的预设,并且可以找到模板,它将导出为 some_name.exe
(如果导出预设的名字中存在空格或特殊字符,就必须放在引号里)。输出路径是相对于项目的路径或者绝对路径;它使用的不是命令被调用时的目录。
输出的文件扩展名应该与 Godot 导出过程所使用的相匹配:
Windows:
.exe
macOS:
.zip
(所有平台均可导出)或.dmg
(只能从 macOS 导出)。不直接支持.app
,不过生成的 ZIP 压缩包中包含了.app
捆绑包。Linux:任意扩展名(没有也行)。64 位 x86 二进制文件通常使用
.x86_64
。HTML5:
.zip
Android:
.apk
iOS:
.zip
你还可以将其配置为仅导出 PCK 或 ZIP 文件,能够让多个 Godot 可执行文件执行同一个导出的主包文件。这样做时,仍然必须在命令行中指明导出预设的名称:
godot --export-pack "Windows Desktop" some_name.pck
It is often useful to combine the --export-release
flag with the --path
flag, so that you do not need to cd
to the project folder before running the command:
godot --path /path/to/project --export-release "Windows Desktop" some_name.exe
参见
关于从命令行使用 Godot 的更多信息,请参阅 命令行教程。
PCK 与 ZIP 打包文件格式对比
各个格式有它的优势与劣势.PCK 对大多数用例来说是默认和推荐格式, 但取决于你的需要, 你可能希望使用 ZIP.
PCK 格式:
未压缩的格式。文件尺寸较大,但读写较快。
尽管有 第三方工具 来提取和创建PCK文件, 但使用用户操作系统上通常存在的工具是不可读和不可写的.
ZIP 格式:
压缩格式。文件尺寸较小,但读写较慢。
可以使用用户操作系统中的常见工具读取或写入. 这对简化制作mod很有用.(另请参阅 导出包、补丁、Mod).
警告
由于存在一个已知错误,当使用 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
命令给予启动脚本可执行权限.