导出包、补丁、和mod

用例

通常,人们希望在其游戏部署后为它添加功能。

这样的例子包括…

  • 可下载内容:向游戏添加功能和内容的能力。
  • 修补程序:修复已发布产品中存在的错误的能力。
  • Mods:授予其他人为自己的游戏创建内容的能力。

这些工具可帮助开发人员,以扩展开发到初始版本之外。

PCK文件概述

Godot通过一个名为 资源包 (PCK文件,扩展名为 .pck)的功能,启用此功能。

优势:

  • 增量更新/补丁
  • 提供DLC
  • 提供mod支持
  • mods不需要公开源代码
  • 更加模块化的项目结构
  • users don’t have to replace the entire game

使用它们的第一部分涉及导出项目,并将其分发给玩家。然后,当以后想要添加功能或内容时,他们只是通过PCK文件将更新分发给用户。

PCK文件通常包含但不限于:

  • 脚本
  • 场景
  • 着色器
  • 模型
  • 纹理
  • 音效
  • 音乐
  • 任何其他适合导入游戏的素材

PCK文件甚至可以是一个完全不同的Godot项目,原始游戏在运行时加载它。

生成PCK文件

为了将项目的所有资源打包到 PCK 文件中,请打开项目并转到 项目/导出(Project/Export),然后点击 导出PCK/Zip。还要确保在执行此操作时选择了导出模板。

../../../_images/export_pck.png

另一种方法是 从命令行导出。如果输出文件以PCK或ZIP文件扩展名结尾,则导出过程将为所选平台构建该类型的文件。

注解

如果有人希望为他们的游戏支持mod,他们将需要其用户创建类似的导出文件。假设原始游戏需要PCK资源的某种结构和/或其脚本具有特定的接口,那么…

  1. 开发人员必须公开这些预期结构/接口的文档,期望模组制作者安装Godot引擎,然后,在为游戏构建Mod内容时,这些修改者也将遵守文档中定义的API(这样它将起作用)。用户然后将如上所述,使用Godot的内置导出工具来创建 PCK 文件。
  2. 开发人员使用Godot来构建GUI工具,以将其确切的API内容添加到项目中。这个Godot工具必须运行在,或者可以访问一个(分布在原始游戏的文件旁边或者可能在原始游戏的文件中),启用工具的引擎构建上。然后,该工具可以从命令行,使用Godot可执行文件以及 OS.execute(),导出PCK文件。对于游戏而言最有意义的是,不使用工具构建(出于安全性考虑);而对于改装工具而言最有意义的是,使用工具启用的引擎构建。

在运行时打开 PCK 文件

要导入PCK文件,可以使用单行程序。请记住,如果导入失败,不会出现错误或异常。相反,可能必须在顶部创建一些验证代码作为一层。以下示例在游戏可执行文件的目录中需要一个 mod.pck 文件。PCK文件在其根目录中包含 mod_scene.tscn 测试场景。

GDScript

C#

  1. func _your_function():
  2. ProjectSettings.load_resource_pack("res://mod.pck")
  3. # Now one can use the assets as if they had them in the project from the start
  4. var imported_scene = load("res://mod_scene.tscn")
  1. private void YourFunction()
  2. {
  3. ProjectSettings.LoadResourcePack("res://mod.pck");
  4. // Now one can use the assets as if they had them in the project from the start
  5. var importedScene = (PackedScene)ResourceLoader.Load("res://mod_scene.tscn");
  6. }

警告

By default, if you import a file with the same file path/name as one you already have in your project, the imported one will replace it. This is something to watch out for when creating DLC or mods (solved easily with a tool isolating mods to a specific mods subfolder). However, it is also a way of creating patches for one’s own game. A PCK file of this kind can fix the content of a previously loaded PCK.

为了退出这个行为,把``false`` 作为第二个参数传递给 ProjectSettings.load_resource_pack()

注解

对于C#项目,您必需先构建DLL并把它放在项目目录中。然后,在加载资源包之前,您需要按如下方法加载它的DLL:Assembly.LoadFile("mod.dll")

总结

本教程应显示了,如何轻松地向游戏添加mod、补丁、或DLC。最重要的是确定,如何一个人计划为他们的游戏,分发将来的内容,并为此目的开发一个定制的工作流程。无论开发者采用哪种方法,Godot都应使该过程顺利进行。