首页 › 模组制作 › 检查、打包与发布
第 06 章

检查、打包与发布

oa-tool mutator check 与 pack、一次试运行、目录页显示什么、图标,以及如何把包提交给 Core Prime。

本章概述 docs/mutators/authoring.md 和 docs/mutators/oamut-standard.md。

检查 .oamut

变异器用 oa-tool mutator pack 和 oa-tool mutator check 打包并检查。oa-tool pack 和 oa-tool check 是给 .oamap 或 .oamod 的命令。check 读取的是 .oamut,不是文件夹。它编译 Lua 并解析每一份 .sm,但不运行它们。最后一行是 result: ok 或 result: refused。

$ oa-tool mutator pack commander-radar
$ oa-tool mutator check commander-radar-1.oamut

拒绝会点名文件和行号。提交这个包之前先修正。Commander Radar 打包后的名字是 commander-radar-1.oamut,那次检查以 result: ok 结束。

在文件夹外打包

在文件夹外,用文件夹的名字运行 pack。不另指定时,它在当前文件夹写出 <id>-<version>.oamut。--out 必须是一个 .oamut:其他结尾会被拒绝。--force 替换已经存在的文件。不要在文件夹内部对 . 打包,也不要把 .oamut 留在里面:包不能包含那个文件。在这条命令上,--game-dir 是用法错误。

试跑

oa-tool mutator diff 让一个包文件夹在一个游戏文件夹上走一遍游戏的变异流程,并列出改变了什么。选项写在最后一个冒号后面,如 uber-comm 上的 strength=lite。maps 钩子只有带 --map NAME 时才运行。在没有模组的 3.1c 上,报告里 # 表头之后的行是:

$ oa-tool mutator diff --game-dir DIR --mutator ./uber-comm:strength=lite
field units/armcom.fbi [unitinfo] acceleration: 0.15 -> 0.3375	by uber-comm
field units/armcom.fbi [unitinfo] brakerate: 0.3 -> 0.675	by uber-comm
field units/armcom.fbi [unitinfo] builddistance: 60 -> 120	by uber-comm
field units/armcom.fbi [unitinfo] maxdamage: 3000 -> 4500	by uber-comm
field units/armcom.fbi [unitinfo] maxvelocity: 1.2 -> 1.8	by uber-comm
field units/armcom.fbi [unitinfo] turnrate: 1044 -> 1566	by uber-comm
field units/armcom.fbi [unitinfo] workertime: 300 -> 900	by uber-comm
field units/corcom.fbi [unitinfo] acceleration: 0.16 -> 0.36	by uber-comm
field units/corcom.fbi [unitinfo] brakerate: 0.32 -> 0.72	by uber-comm
field units/corcom.fbi [unitinfo] builddistance: 60 -> 120	by uber-comm
field units/corcom.fbi [unitinfo] maxdamage: 3000 -> 4500	by uber-comm
field units/corcom.fbi [unitinfo] maxvelocity: 1.07 -> 1.605	by uber-comm
field units/corcom.fbi [unitinfo] turnrate: 1030 -> 1545	by uber-comm
field units/corcom.fbi [unitinfo] workertime: 300 -> 900	by uber-comm

资料库的试跑是同一条流程,用它自己的存储,不开对局。它不设置地图,因此 maps 钩子在那里不运行。资料库会记住结果,它的“已检查”一行是下面之一。check 不应用变异器。试跑和 diff 会。

结论资料库显示什么
compatible它能配合那个模组,这一行带有改动的摘要。
no-effect它能运行,而且检查会计入的东西都没有改变。
incompatible它不能配合那个模组。后面是原因。
failed它停住了。后面是原因。
仍在进行与那个模组的检查还在进行。
尚未运行还没有用那个模组检查过。

目录页显示什么

这一页显示图标;清单没有点名图标时,如果第一个标签是八个之一,就用它的图标。然后是名称、作者、版本和目录版本号,摘要(description 的第一行),标签,以及来自 requires.engine 的引擎标记。需要列出 requires.mutators。选项列出每一个选项。它改变了什么列出各层。可配合列出 works-with。接着是版本表,然后是在游戏中获取。本站从不链接包文件。下载发生在游戏里。

图标

正方形 PNG,边长至少 1 像素,至多 256 像素,并且不超过 256 KiB。按 128 像素来画。清单里的 icon 点名路径,这个名字以 .png 结尾。没有图标时,如果第一个标签的标识是那八个之一,徽章就用它的图标。后面的标签不会再试。

提交给 Core Prime

Core Prime 内容库由维护者的机器发布:目录用一把从不离开该机器的密钥签名。要让一个变异器被收录:

  1. 在 Open Annihilation 仓库开一个 issue,附上 .oamut(或链接)、作者和许可证。
  2. 维护者对游戏文件夹运行检查,并将其加入内容库的包记录。
  3. 下一次发布会按哈希上传文件,签署新目录并递增序号。
  4. 几分钟后,它就会出现在每位玩家的资料库和本站。

地图包或模组也按同样的方式提交。见 发布到 Core Prime。