摘要
一堆生物的攻击和防御会因为英雄属性、法术、技能、状态效果等多种原因变化。状态估计(SE,把截图观察累积成对局状态和对手构筑推断的程序)会把两次生物面板之间的属性变化拆成“英雄贡献 + 战斗魔法贡献 + 其它净变化”。生物面板下方还有一排状态图标(表示这堆生物身上当前的增益或减益),但以前 SE 只列出图标候选的名字,没有用它们去解释剩余的变化。
本实验让 SE 在非常严格的条件下,把一个已读状态图标的出现或消失作为条件参考:真实例子里修道院长攻防 43/54→37/48,英雄贡献各 −1,“其它”各 −5;一个“内在光辉”状态图标在后一张面板上消失,它的公开基础参数正好是攻防 +5,于是剩余算术为 0。这是一个能对照原图核对的解释,不是唯一因果证明。
要回答的问题
已读出的状态图标,能否在不把安装文件里的基础参数当作实际数值真值的前提下,参与属性变化的解释?
数据与来源
- 一段训练录像(10 月 10 日 01:39)的 49 帧保存分析,其中两帧(记作 F045、F046):修道院长攻 43→37、防 54→48;同帧敌方英雄攻 9→8、防 16→15,法强 37 不变。F045 的第 3 个状态图标候选是织光者的增益,F046 已读状态栏里不再出现;其余图标候选集合相同,计数有变化。
- 另一段训练录像(10 月 10 日 16:57)的 58 帧保存分析,用作“不应改变”的对照。
两者都是已曝光的训练材料,只重放保存的识别结果,不新增 OCR 或录像,不是独立准确率。
方法
先确认这个图标到底是什么。 公开的“状态面板效果”接口只给安装文件里的基础值,不含运行时缩放,不能直接认证命中数值。进一步用规则模拟器的公开“能力定义 / 能力绑定”接口核对:两种织光者图标都对应能力“内在光辉”,而不是名字相近的“升华”;攻防参数都是 +5。
再定严格的使用条件。 新增一个私有模块,只消费公开能力参数和两个已读状态栏:
- 两端必须同侧、同兵种、同帧已读英雄,沿用已有的英雄身份和生命周期保护;
- 只有一个内在光辉候选图标出现或消失,全部候选都属于该能力且给出相同的量,其余图标候选集合相同,才给出参考;
- 未知图标、混有升华候选、重复图标、其它候选变化都阻断;
- 不由残差反推图标身份;非零残差照样保留;残差为 0 也不排除别的效果相互抵消;不认证状态消失的原因和时间。
结果只追加在已有历史说明里,原“其它净变化”保留;输出格式、观察、正式命中条件和技能排除都不变,App 界面不用改就能显示。
设置
软件场景:新增 32 项测试。其中 16 个节点是 2 种织光者 × 2 种目标 × 有无宝物 × 双方视角,覆盖 8 种实际构筑;在规则模拟器里合法地使用能力、消耗专注、产生状态、跳过回合直到到期,期望攻防先 +5 再恢复,再经现有离线适配进入公开 SE。其余是战斗魔法共存、共享图标、缺读/歧义/生命周期保护、非零残差、规则查询故障等。这些测试里“状态 ID → 图标候选”的映射是测试适配,不是 OCR 真值。
真实重放:固定原请求,比较修改前后的完整 SE 结果;再经 App 的快照写入器、严格读取器和真实的保存结果窗口,在隔离的离屏 Qt 中点击攻防格子。
结果
真实样例:
| 检查 | 结果 |
|---|---|
| 49 帧样例 | 仅 1 条修道院长历史说明改变 |
| 58 帧样例 | 完整结果不变 |
| 请求、观察、排除、攻击证据 | 完全相等 |
| App 点击攻防 | 摘要显示新解释和全部前提;另一来源不出现 |
| 人工看原图 | 可见 43/54→37/48、敌方 HUD 9/16→8/15,第三个图标消失 |
修道院长的说明现在是:生物各 −6 = 英雄各 −1 + 其它各 −5;在图标身份和单位关联正确、公开基础参数适用、没有额外缩放或百分比交互的前提下,内在光辉参考各 −5,扣除声明基础贡献后的算术剩余各 0。
软件检查:
| 批次 | 结果 |
|---|---|
| 修前第 1 次 | 21 失败 / 4 通过,其中 9 个是测试夹具错误 |
| 修前第 2、3 次 | 14 失败 / 11 通过(测试输入问题,含兵种名与 ID 不符) |
| 修前第 4 次(有效基线) | 13 项预期失败、12 项保护通过 |
| 修后 | 25 通过 → 补充后 32 通过 |
| SE 相关 8 个文件 | 227 通过(20.49 秒) |
| App 属性摘要与保存读取 | 43 通过 |
| 合计 | 270 个不同软件检查,不累计重跑 |
失败与负结果
- 32 项中有 4 个“敌方视角 + 宝物”节点出现未映射的图标,被正确阻断;没有为了让测试通过而隐藏这些标记。
- 修前测试的多次失败大部分是测试自身的问题(缺夹具、兵种名与 ID 冲突),已改正输入并保留失败记录。
- 早期协议误写本组会触发“强力链接”,实际没有触发;已纠正。
- 外部审阅指出:残差为 0 不应写成“其它效果为 0”。已改为“算术剩余”。审阅还建议测“其它状态同一图标但计数改变导致真实贡献变化”,本轮只有软件读数场景,不冒称覆盖了该机制。
局限
- 只有一个真实例子触发;58 帧对照只证明“不该变的没变”。
- 状态图标右下角的计数原文不自动表示强度或剩余回合,其它状态的强度仍未知。
- 不认证唯一因果、不确认敌方构筑、不填入正式命中条件。
- 测试里战斗日志事件为空,不声称日志消费或精确到期时间已验收。
- 270 项通过不等于覆盖了所有实体和公式;用户安装的 App 未更新。
结论与下一步
已读的状态图标现在能在严格条件下参与属性变化的解释,并在 App 里可见。下一步:检查战斗日志里的状态变化是否让所有历史属性一律失效——当前代码对相关状态/等待一律阻断攻防沿用;先用已选保存输入和公开规则核对一条具体影响,再决定是否收窄;没有适用证据就保留未知。
Comments