摘要
游戏里右键一堆生物会弹出“生物面板”,上面有攻击、防御、数量,以及一个杀伤范围(例如“2–3”,面板上显示的一个伤害区间)。视觉识别(Perception)已经能读出这个范围,但状态估计(SE,把观察累积成对局状态和构筑推断的程序)的属性历史只收标量的攻防,杀伤范围被白白丢掉了。
本实验把杀伤范围接入已有的属性历史:保留原值和来源帧,相邻两次面板之间按上下端点分别算净变化。两段真实保存输入里的 28 个杀伤候选全部正确出现一次,其他结果完全不变。真实数据里所有可比较的范围都没有变化,所以“变化”的计算只经过软件场景验证。
要回答的问题
已读出的杀伤范围能否在不改输出格式、不补造条件的前提下进入 SE 历史,并在 App 里可见?
数据与来源
- 一段训练录像(10 月 10 日 16:57)的 58 帧保存请求;
- 另一段训练录像(10 月 10 日 01:39)的 49 帧保存请求。
两者都是已曝光的训练材料。不新增 OCR、视频或公共格式,不改规则模拟器和 AI,不安装 App。
方法
根因。 SE 收集生物面板统计时只收攻防等标量,属性历史也只额外读了“数量”这种双值字段,所以 panel.damage 没进入历史。这不是视觉识别没读到,也不需要重跑视频。
修改。 复用已有的双值读取器:同一帧、唯一的面板任务、同一主体、唯一的候选字段。新增对杀伤值的校验:必须是非负整数,下限不大于上限(数量字段则不加此限制,因为当前数量可能大于右边的总数)。
- 已知所属侧的相邻面板:在“同方同兵种唯一”的前提下,分别计算范围上下端点的净差。
- 所属侧未知的读数单独保留,不合并。
- 中间缺读不续接;死亡、召唤、复活沿用已有的断点规则。
- 不把变化归因于法术、技能或实际攻击;不把英雄攻击再加到杀伤范围上,也不写伤害公式。
要强调:面板杀伤范围不是某一击的实际伤害、不是命中时的单只伤害取样,也不是整堆伤害。
设置
用当前公开的 SE 入口、App 的实际内核脚本和严格读取器、现有 Qt 界面和保存的 HTML 报告。新旧两个历史函数在同一隔离进程里配对运行,共享已有缓存,避免已知的计时相关搜索差异干扰比较。
结果
| 检查 | 结果 |
|---|---|
| 新测试修前 | 21 个节点中 13 失败 / 8 通过 |
| 新测试最终 | 补充重复字段/任务、错误主体、未知保护后共 25 个节点 |
| SE 相关 7 个文件 | 160 通过 |
| App 相关 3 个文件 | 51 通过(合计 211 个不同软件节点) |
| 58 帧样例 | 10 个面板杀伤候选 |
| 49 帧样例 | 18 个面板杀伤候选 |
| 28 个候选 | 全部以原范围和准确来源帧出现一次 |
| 完整结果对比 | 除属性历史说明外全部相同 |
人工打开 01:39 局第 6 帧原图核对:太阳圣盾面板可见杀伤 2–3,与自动保存的读数一致(没有用人工值替代输入)。离屏 Qt 组件和保存的 HTML 里,2–3 与凤凰的 45–65 及来源帧都可读。
28 个候选“正确出现”的意思是数据被完整搬运,不是识别准确率;本轮没有重新 OCR。
失败与负结果
- 两份真实输入里所有可比较的杀伤范围都没有变化,也没有出现所属侧未知的情况。非零变化、未知侧、断点只有软件场景验证,不能声称真实效果被触发过。
- 代码检查工具一开始在实验脚本里发现两处格式问题,已修;生产代码无相关错误。
局限
- 这只恢复了面板属性证据在 SE 历史和 App 中的可见性,没有补齐攻击命中条件,也没有产生新的敌方构筑推断。
- 已保存的旧快照不会自动改写;用户需要运行更新后的源码并使用“仅重算 SE”。
- 外部审阅认可这个修复,但只看了报告,没有运行测试;审阅提出的两点(重复观察键、复活事件类型)经核对已有保护覆盖,无需追加改动。
结论与下一步
杀伤范围现在作为属性历史的一部分保留并可见。下一步只建议做一件事:在已有保存输入里找一条合法关联的攻击预览,当面板杀伤、数量、有效攻防和目标都满足现有合同时,通过规则模拟器的公开入口比较数值,并保留错配的负例。太阳圣盾 2–3 和附近一个 811–1171 的预览不能只凭时间邻近就关联起来;条件不够就停在已观察历史,不补零、不凑倍率。
Comments