多版本兼容性与发布管理
mod_info.yaml 决定 Mod 是否满足当前游戏环境,并负责在根目录版本与 archived_versions 中选择合适的版本。
验证环境
本页按本机 Build 740622 以及 Klei 当前的 minimumSupportedBuild、DLC 列表和 archived_versions 规则整理。
mod_info.yaml 的现代格式
根目录中的 DLL Mod 至少应包含:
minimumSupportedBuild: 740622
version: 1.0.0
APIVersion: 2如果没有 DLC 限制,不要添加 requiredDlcIds 或 forbiddenDlcIds。有明确限制时使用列表:
requiredDlcIds:
- EXPANSION1_IDversion 只用于游戏内显示;它不是归档版本选择条件。APIVersion: 2 对包含 DLL 的 Mod 是必需的。
supportedContent 是旧格式,U55 起已弃用。旧格式仍可为需要兼容旧游戏分支的归档保留;新的根目录格式不要写 supportedContent: ALL。VANILLA_ID 和 ALL 也不是新 DLC 列表的有效值。
archived_versions 目录
目录名是维护者自己的标签,不需要是数字版本号:
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 生成后事件:
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、资源和本地化文件来自同一次构建。