Skip to content

多版本兼容性与发布管理

mod_info.yaml 决定 Mod 是否满足当前游戏环境,并负责在根目录版本与 archived_versions 中选择合适的版本。

验证环境

本页按本机 Build 740622 以及 Klei 当前的 minimumSupportedBuild、DLC 列表和 archived_versions 规则整理。

mod_info.yaml 的现代格式

根目录中的 DLL Mod 至少应包含:

yaml
minimumSupportedBuild: 740622
version: 1.0.0
APIVersion: 2

如果没有 DLC 限制,不要添加 requiredDlcIdsforbiddenDlcIds。有明确限制时使用列表:

yaml
requiredDlcIds:
  - EXPANSION1_ID

version 只用于游戏内显示;它不是归档版本选择条件。APIVersion: 2 对包含 DLL 的 Mod 是必需的。

supportedContent 是旧格式,U55 起已弃用。旧格式仍可为需要兼容旧游戏分支的归档保留;新的根目录格式不要写 supportedContent: ALLVANILLA_IDALL 也不是新 DLC 列表的有效值。

archived_versions 目录

目录名是维护者自己的标签,不需要是数字版本号:

text
MyMod/
├── mod_info.yaml
├── mod.yaml
├── MyMod.dll
└── archived_versions/
    ├── update49_old/
    │   ├── mod_info.yaml
    │   ├── mod.yaml
    │   └── MyMod.dll
    └── update50_old/
        ├── mod_info.yaml
        ├── mod.yaml
        └── MyMod.dll

每个归档目录都必须有自己的 mod_info.yaml,并填写该目录中的 DLL 实际支持的 minimumSupportedBuild

游戏会读取根目录及每个归档目录的 mod_info.yaml,选择 minimumSupportedBuild 不高于当前游戏 Build 且最接近当前版本的 Mod。它不会把文件夹名当作 Build 号解析。

例如,当前开发版本放在根目录,之前能在 U50 运行的 DLL 可以放在 archived_versions/update50_old/。目录名只是说明,不参与版本比较。

编译后复制示例

以下命令适用于 Visual Studio 的 Windows Batch 生成后事件:

batch
REM 只在 Release 构建时复制到指定归档目录
if "$(ConfigurationName)" == "Release" (
    if not exist "$(ProjectDir)archived_versions\update50_old" mkdir "$(ProjectDir)archived_versions\update50_old"
    xcopy /Y /I "$(TargetDir)$(TargetFileName)" "$(ProjectDir)archived_versions\update50_old\"
    xcopy /Y /I "$(ProjectDir)mod_info.yaml" "$(ProjectDir)archived_versions\update50_old\"
)

归档目录中的 mod.yaml、资源和其他 DLL 依赖也必须与对应版本一起复制。只复制 DLL 和 mod_info.yaml 可能导致资源或本地化文件缺失。

发布前检查

  • 根目录有现代格式的 mod_info.yaml
  • DLL Mod 包含 APIVersion: 2
  • minimumSupportedBuild 是实际测试过的 Build。
  • 每个归档目录都有自己的 mod_info.yaml
  • 只有确实有 DLC 限制时才填写 DLC 列表。
  • 每个版本的 DLL、资源和本地化文件来自同一次构建。

官方规则详见 Klei:Setting up mod_info.yaml and archived_versions