摘要
战斗中打开魔法书,每个法术槽显示法术图案、等级(1–4)和本次施法要花的法力(费用)。费用会被各种技能、宝物和对手效果修改,所以“显示费用和基础费用的差额”是推断对手构筑的线索之一。
前一轮已经让状态估计(SE)在当前等级没读出来时,给出“上一次合法读到的等级”作为历史候选。本实验只做下一步:同一条历史关联里两次费用读数之间的数值对照。在一局训练录像里,第 9 帧读到“力量之歌”4 级、费用 4;第 10 帧费用 6,但等级没读出来。现在 SE 的历史说明会写出费用 4→6(+2),并在“等级仍是 4”的前提下,用规则模拟器公开法术定义给出的未修正基础费用 6做参考:两次差额从 −2 变为 0。
要回答的问题
当前等级未知时,能否借用合法的历史等级,对两次费用读数做一个有来源、有前提的数值对照,而不把未知等级当成事实?
数据与来源
- 10 月 10 日 16:57 那局训练录像已保存的 58 帧自动识别结果(复用前一实验的输入),取前 9/10/51/58 帧四个前缀,经实际 App 核心的公开 SE 入口计算。
- 不手工补等级,不新做 OCR 或视频。
方法
只修改 SE 里处理法术书历史的私有模块:
- 费用读数必须唯一、为候选状态、是非负整数;0 有效;未知、负数、布尔、浮点、字符串都不参与比较。
- 归属、法术 ID、时间顺序、“后来已有直接等级读数就不再用历史”等规则沿用上一轮的状态机。
- 基础费用取自规则模拟器公开的法术定义在指定等级下的费用。这是未修正的基础参考,不是完整状态下的当前报价;也不用游戏知识目录的值冒充模拟器的规则认证,不复制定价公式。
- 差额不直接归因于对手,显示费用也不等于已证实的实际支付。
- 公开定义不支持时,仍保留字面上的 4→6,但不算基础参考差额。
设置
结果只追加到已有的历史推断说明;当前等级、目录费用、费用模型读数、技能排除和攻击条件全部不变。
结果
| 保存前缀 | 结果 |
|---|---|
| 9 帧 | 还没有“等级未知”的历史提示,新功能无输出 |
| 10 帧 | 同一条历史说明新增:费用 4→6(+2);若保持 4 级,公开定义基础费用 6,差额 −2→0 |
| 51 / 58 帧 | 之后已出现直接等级读数,不再显示过时的历史费用提示 |
第 10 帧的当前等级(未知)、目录费用(未知)、显示费用 6、正式费用模型读数 10 条都保持不变。基础费用 6 与此前目录参考恰好相同,但两者来源不同,不等同。
在规则模拟器里还做了四组真实来源组合(魔法拖鞋有/无 × 对方加耗子技能有/无):通过公开接口建立战斗、合法首施力量之歌,首施实付与公开报价一致;之后同一法术的基础参考保持 6,各组合下报价依次为 6→9、4→6、10→15、8→12。这些是模拟器场景,不是游戏录像或 OCR 真值。另外核对了两个法术 1–4 级的基础费用,确实随等级变化。
失败与负结果
- 修复前新测试 14 个失败、9 个通过:6 个是功能尚未实现;4 个是测试夹具错误地假设部分无效费用仍被旧逻辑接受;4 个是测试声明了不可能出现的 4 级基础卡。后两类按合法规则纠正测试,没有放宽模拟器或 SE 的校验。
- 第一次在独立进程里对比前后完整返回失败:第 9 帧的英雄构筑组合搜索有 0.5 秒时限,两次进程找到的候选数不同(78 与 83),连带展示不同。失败保留,没有删字段制造通过。改为在同一隔离进程里先调用旧版本函数、再调用新版本函数(共用原有搜索缓存)后,除唯一一条历史说明外整个返回严格相等。这隔离了新函数的影响,但没有解决独立进程之间输出波动的问题。
局限
- 一个已曝光训练来源的保存结果重算,不是独立准确率测量。
- 软件测试(新增 31 个场景,相关共 284 项通过)证明行为,不是识别准确率。
- 公开目录 63 个法术 × 4 级共 252 次调用都返回非负整数,这只是当前目录的软件合同检查,不证明游戏原始基础费用准确。
- 外部审阅支持提交,并建议检查英雄构筑限时搜索的可信度;第 9 帧原说明确实写着“0.5 秒内没搜完,只按已找到的列”,标为不确定、不作预测。这个问题没有在本实验里解决,也不为了固定候选数放宽时限。
结论与下一步
在不把未知等级当事实的前提下,SE 现在能给出“若等级未变,费用变化是否由基础费用解释”的条件对照;在本例中,+2 的变化可以完全由 4 级基础费用解释。历史费用功能至此收尾。
Comments