摘要
在战斗中右键查看一个生物,会弹出它的信息面板,上面写着这个生物当前的攻击和防御。这个数值由几部分加起来:生物的基础值、英雄的攻防、英雄技能带来的加成(例如“战斗魔法”技能会按英雄的法力强度给部队加攻防)、宝物、状态效果等。把面板值拆开解释清楚,就能发现有没有“解释不了的部分”——那可能来自对手的某个技能或宝物,这正是状态估计(SE,把读到的观察累积成对局状态和对手构筑推断的模块)想推断的东西。
本实验发现一个装配缺口:SE 已经保存了同一帧画面上的英雄属性栏(HUD)和生物面板,但计算“剩余未解释部分”时只扣了基础值和英雄攻防,没有算进已读的战斗魔法技能组件。修复后,一张真实截图上的深渊使者攻 40/防 37 被完整解释,剩余为 0。
要回答的问题
当同一帧既有英雄 HUD 又有生物面板时,能否用已经读到的英雄属性、此前读到的知识和技能,通过规则模拟器的公开组件,把面板攻防解释得更完整?
数据与来源
- 10 月 10 日两局训练录像已保存的分析请求(49 帧和 58 帧 JSON)。在 16:57 那局的 58 帧里已经找到合格样例,所以没有继续扩展素材。
- 不重扫视频、不新增 OCR,不借用未来或敌方数据。
- 该样例是已曝光的训练材料,不是独立准确率样本。
方法
新增一个私有模块,从 SE 已有的“推断说明”入口调用:
- 只处理已归为我方、同一英雄、同一帧唯一的 HUD 与面板。
- 当前攻防、法力强度用同一帧 HUD;当前法强未知时不沿用旧值。
- 知识、技能用不晚于当前帧的同一英雄直接读数,每项保留来源,并明确“持续适用”只是前提;出现其他英雄时不跨越这个身份断点;未知技能等级不退回旧等级。
- 经规则模拟器的公开战斗魔法组件算出部分参考值,再复用上一轮已有的 8 种有限来源组合做对照(游戏规则在本项目里由规则模拟器实现,不是商业游戏的认证规则)。
- 已读到但影响未完整计入的状态效果,会保留原净差并阻止来源匹配。
- 只追加“推断说明”条目(不确定、不作预测),不改观察、对手构筑、攻击条件或排除项。
设置
用 App 真实的保存读取器加载完整 58 帧请求,以 App 的方式启动核心子进程调用 SE 公开入口,并通过 App 的严格校验。修复前后用完全相同的请求比较。
结果
目标样例:58 帧请求中第 15 帧,生物深渊使者。
| 字段 | 修复前 | 修复后 |
|---|---|---|
| 同帧我方英雄 | 攻 3 / 防 2 / 法强 28 | 不变 |
| 面板 | 攻 40 / 防 37 | 不变 |
| 基础 | 攻 30 / 防 30 | 不变 |
| 同英雄此前的知识/技能 | 第 13 帧:知识 20、战斗魔法专家 | 带第 13 帧来源参与计算,法强用当前的 28 |
| 原观察中的部分净差 | 攻 +7 / 防 +5 | 保留原语义 |
| 新的条件解释 | 无 | 攻 30+3+7=40,防 30+2+5=37,净差均为 0 |
| 有限来源对照 | 未使用 | 本范围内“无新增来源”相符;但不据此认定对手没有削弱 |
如果错误沿用旧法强 27,规则组件会给攻击 +6、预测 39;用当前 28 才得到 +7。原图目视核对:面板 40/37 和右侧英雄 3/2/28 与保存读数相符。
整个请求共新增 5 条同帧对照:3 条因状态效果未完整计入而不做来源匹配(例如另一帧同样显示 40/37,但状态栏已读到效果);另一个生物的攻击仍有 +6 未解释,明确写为“本范围内无相符组合”。没有挑选只相符的结果。其他输出完全不变,只有推断说明多了 5 行。
在 App 常驻服务的 0.2 秒规则预算下,前两次连续请求都未完成;按 App 原有的“1 秒后续算、最多 20 次”逻辑,第二次续算即完成,结果与离线完整计算一致(请求用时 1.808 / 1.830 秒,这只是 SE 对该 58 帧请求的耗时,不是整帧端到端 p95)。
失败与负结果
- 修复前的新测试 15 个中 8 个失败,保留为证据。
- 外部审阅指出另一个缺口:没有当前 HUD 时的旧“准备页参考”路径,只检查后续攻防/法强/知识,会漏掉后来直接看到的技能升级、子技能或未知等级。新增 3 个用例复现失败后修复:两条路径共用历史组件读取,未知等级不沿用旧等级。
- 审阅担心的另外两处(状态效果、未知技能的表示)经核对现有合同已有保证,补了用例确认,未扩大拒绝范围。
- 一次再验证在最后打印时因控制台编码失败、外层退出 1;产物保留未改,改为编码安全输出后再验通过。
局限
- 只解释了“已读到的”组件;剩余为 0 只在所列前提下成立,不能证明没有对手效果。
- 安装版未更新;旧保存结果需在源码版本重新计算 SE 才能看到新解释。
- 软件测试(去重后 SE 223 项 + App 66 项)证明组件被正确消费,不证明全部公式覆盖或游戏规则正确。
结论与下一步
同帧 HUD + 此前读到的技能,已能把一部分生物面板攻防完整解释,并把“解释不了”的部分(如 +6)明确暴露出来。下一步只做一件事:用当前 58 帧里已读的状态效果和公开规则,让一个有完整规则依据的状态参与攻防解释;部分支持或未知的效果不能当作 0。
Comments