齐玛

齐玛

Zima 是一个 Hytale 插件,它读取集成规范,确定性地解决冲突,并将生成的覆盖资产作为运行时包输出。

图书馆

Zima - 确定性模组集成与修补系统

Zima 与 Hytalor 可在同一整合包中无缝协作!


Zima 是一个确定性模组集成与修补系统。
它让模组能够安全地修改游戏资源,而不会相互覆盖或破坏加载顺序。

模组无需替换文件,只需声明描述其确切更改需求的“意图”(intents)。Zima 随后会以可预测、可感知冲突的方式应用这些更改。

文档:查看 Github


核心行为

可预测的加载顺序

Zima 根据明确规则决定哪些更改优先执行:

  1. 依赖规则(dependsOnloadAfterloadBefore
  2. 模组角色(corecontenttweakcompat
  3. 优先级值
  4. 模组 ID(作为最终平局决胜项)

这意味着结果是稳定且可复现的。


资源更改

模组不会替换整个资源文件。
它们指定有针对性的操作,例如:

set → 更改特定值

removePath → 删除字段或属性

mergeObject → 合并数据而不破坏现有值

对于数组(列表),Zima 支持:

添加 / 移除元素

在之前 / 之后插入

替换或合并条目

Upsert(存在则更新,缺失则添加)


意图

一个意图可以修改:

  • 单个资源
  • 通过模式(*** 等)匹配的多个资源
  • 数组中的特定元素
  • 过滤匹配项(例如,id="foo" 的条目)

这避免了脆弱的硬编码。


冲突检测

如果两个模组试图更改完全相同的数据路径,Zima 可以:

  • 拒绝更改
  • 安全合并
  • 要求显式覆盖

不会出现静默损坏。


验证与安全性

Zima 会在加载时拒绝无效规范,并附带清晰的诊断信息。

它还支持:

  • 断言 / 需求检查
  • 严格模式执行
  • 版本化兼容性保证

无重复应用问题

Zima 不读取 Server/Patch,从而防止在与其他修补系统结合时出现重复修改。


模组如何使用 Zima

模组将其规范放置在自己的资源包中:

Server/Zima/manifest.json Server/Zima/*.intent.json

manifest.json → 元数据(角色、优先级、策略)

意图文件 → 仅描述所需的更改


兼容性承诺

Zima 使用严格的版本化模式:

zima.integrate.v1

小版本更新保持向后兼容。
破坏性行为总是需要新的模式版本。