摘要
虫巢阵营的部分兵种带“众志”全军被动:己方每有一种不同的虫巢生物,携带者的攻击(或防御)就加 1。问题是这个数 N 算不算携带者自己。Simulator 原来按游戏中文说明“每有一名其他的独特虫群生物”不计自身。但一局真实对战的两张面板读数,都只有在“计入自身”时才对得上。
本实验以商业游戏的实际表现为准,在新规则版本 Core450 中改为计入携带者,旧版本 Core448 / Core449 存档保持原口径并严格回放。修复后两张读数复现,夹具处理后全量测试通过。
要回答的问题
N 是否包含携带者自身?如果说明文字与实战读数冲突,以哪个为准?
证据
同一局里我方 7 个兵种都是不同的虫巢兵种 ID,我方英雄攻 26、防 2;对方有两个 −15% 的削减(先把平值加总,再乘百分比并向下取整)。
| 面板 | 读数 | N=6(不含自身) | N=7(含自身) |
|---|---|---|---|
| 一种携带者的攻击 | 43 | ⌊50×0.85⌋=42 | ⌊51×0.85⌋=43 |
| 另一种携带者的防御 | 12 | ⌊13×0.85⌋=11 | ⌊14×0.85⌋=12 |
| 另两张面板 | 39、22 | 39、22 | 39、22 |
能区分的两张面板属于两种不同的携带者,彼此独立,都支持“含自身”。按“基础兵种”计数(5 或 4)与 39 不符,所以计数单位是兵种 ID。安装配置的条件名是“同阵营己方不同兵种数”,但原生代码里“己方”是否包含自身没有审计。证据类别:玩家实战观察 + 安装配置条件名,与说明文字冲突。
方法与冻结的验收
- 新规则 Core450:N = 己方不同虫巢兵种 ID 数,含携带者。存档中的参数名保持不变以兼容。
- Core448 / Core449 存档:显式读取器保持“不含自身”,规则哈希和终态不变。
- 验收:新规则复现 43、12、39、22,旧读取器保持原值;补充对照包括 1、2、4、7 种虫巢兵种,去掉一种后计数减一,非虫巢兵不计数,两种携带者各自独立,百分比作用于总值。
- 停止条件:需要改公共格式或旧存档不能逐字节回放就停下。
结果
- 新增 9 项测试通过:新规则 43 / 12 / 39 / 22,旧读取器 42 / 11 / 39 / 22。
- Core448 / 449 的规则哈希与目录哈希逐字不变;12 条含虫巢状态的 Core449 回放逐步事件与终态一致。
- 处理夹具后第二轮全量:Simulator 与规则手册、规则登记 14850 通过 / 2 个原有跳过;game_ai 7089 通过 / 2 跳过 / 1 个原有预期失败。Arena 首轮 2 个失败单独重跑全过,判为满负载下的计时不稳定。
失败与负结果
首轮全量失败很多:Simulator 132 失败 / 14718 通过,game_ai 22 失败 / 7067 通过。原因都是“哪怕只有一只虫巢兵也带 +1”:其中 104 项是夹具开局后改回合上限,导致全场状态到期回合不一致,其余是字面期望值少 1。用一个只在核对时加载的插件去掉虫巢状态后,780 项和 422 项旧期望全部成立,说明差异都由虫巢状态解释。外部审阅提醒:这只证明差异来源,不等于验证了 Core450 的全部行为;同步到期回合只能改全场状态,不能动召唤寿命等相对计时。
SE(状态估计)的一个士气夹具按旧计数录制,新规则下对不上;由 SE 负责方决定保留为 Core449 历史夹具,并另录新版本候选(差异只有三只虫巢兵加成 5→6、最后一击 208→212)。
局限
- 原生计数函数没有审计;说明文字的冲突原样记录在规则登记里。
- 若以后原生审计或能直接读出 N 的新实战读数与此矛盾,需要重新评估。
结论
以实战表现为准,Core450 计入携带者;旧存档兼容保持。
Comments