导出包, 补丁, 和mod

使用案例

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

这样的例子包括...

  • 可下载内容: 向游戏添加功能和内容的能力.

  • 修补程序: 修复已发布产品中存在的错误的能力.

  • Mods: 授予其他人为自己的游戏创建内容的能力.

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

PCK文件概述

Godot通过 资源包 (PCK文件, 扩展名为 .pck )实现此功能.

优势:

  • 增量更新/补丁

  • 提供DLC

  • 提供mod支持

  • Mod不需要公开源代码

  • 更加模块化的项目结构

  • 用户无需替换整个游戏

除第一次需要提供完整导出给用户外, 之后添加的功能或内容, 只需要使用此功能提供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 测试场景.

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

警告

如果导入的文件与项目中已有的文件具有相同的文件路径和名称, 则导入的文件将替换它. 创建DLC或mod时需要注意这一点(使用工具将mods隔离到特定mods子文件夹时, 很容易解决). 但是, 这也是为自己的游戏创建补丁的一种方式, 这种PCK文件可以修复先前加载的PCK的内容.

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

注解

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

总结

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