摘要
状态估计(SE)会从战斗日志(Logs)里配出攻击事件,例如“敌方织光者攻击我方巫妖,造成 314 伤害”。要用这个伤害反推对方的技能或装备,需要知道攻击发生时双方的攻防。在一段训练录像中,更早的一张生物面板截图已经自动读到敌方织光者攻击 20、防御 17,但旧代码里,日志攻击候选和面板读数各走各的路,从未放在一起。
本实验不新增 OCR 或视频处理,只让 SE 在已有的攻击候选旁边输出一条“有来源的攻防条件参考”:攻击 20 来自哪一帧、在什么前提下才可以沿用。正式的命中条件、规则查询和观察结果都不改。三份真实保存输入的前后对照证明:只新增了这一条说明,其余输出逐项相同。
要回答的问题
已经读到的面板攻防,能否在不越权的前提下,作为日志攻击候选的条件参考展示出来?哪些情况必须阻止沿用?
数据与来源
- 两段已选为训练来源的录像的保存输入:10 月 10 日 16:57 那局(前 22 帧前缀和完整 58 帧)以及 01:39 那局(49 帧)。不是新视频、新 OCR 或独立测试集。
- 关键证据:第 19 帧自动读到敌方织光者攻击 20/防御 17、归属敌方、无状态图标;第 22 帧日志第 25/26 行自动解析出它攻击我方巫妖、造成 314 伤害。之后第 27、28、36、37 帧重复出现这几行日志。
方法
- 在 SE 生成攻击候选之后,调用一个新的私有辅助函数:从已观察的生物面板中,选择同一阵营、同一兵种的最后一次读数,并回查原始读取任务、对象和候选字段及其来源。
- 只用现有的“推断说明”结构输出,App 现有的攻击证据页和 HTML 自动显示;没有新增公共字段。
- 选择只依据保存输入里的先后顺序,并明确写出这不是已认证的“命中前观察”。沿用的前提:该阵营该兵种唯一、实例不变、属性在动作发生时仍成立。
- 阻止沿用的情况:双方英雄的身份/攻防/法强已读到变化;相关状态、等待或生命周期事件;面板本身有未知规则状态或已知相关状态;后读页面揭示了更早或未知时刻的相关事件。明确更晚的日志不阻止。
- 重复出现的攻击候选共享首次出现时的资料截止点:后面的重复页不能借用更晚的面板来改写这条参考,但所有原候选都保留。
设置
用 App 同一个核心启动脚本调用公开 SE 入口:修改前只禁用新辅助函数、修改后开启,原请求不变。另通过实际离屏主窗口的文件夹导入入口,确认新说明可见、能打开第 19 帧原图,且整个过程不启动任何核心、OCR 或录屏进程。
结果
| 输入 | 新条件参考 | 其余结果 |
|---|---|---|
| 16:57 前 22 帧 | 1 条:织光者攻击 20 → 314 日志候选 | 正式条件、查询、观察和其它推断完全相同 |
| 16:57 完整 58 帧 | 同一条,不借后面的面板 | 同上,重复候选保留 |
| 01:39 全部 49 帧 | 0 | 完整输出相同 |
巫妖没有更早的合法防御面板,所以防御仍不填。实际界面上可以在日志候选旁核对“攻击 20”及其来源帧。相关软件检查最终为 148 项 SE 加 61 项 App。
失败与负结果
- 新测试第一次运行 7 失败、18 通过:测试夹具访问目录层级写错,修正后 25 项通过。
- 第一次导入验证脚本把帧 ID 片段当成图片路径而报错;改用已有的帧来源映射后通过。这是诊断脚本的问题,不是产品修复。
- 外部审阅指出一个边界:同一页上没有时钟、但排在攻击行之后的相关事件,原代码只凭行号就忽略了它,而它的实际先后并未认证。新增的负例在修改前失败;去掉这条“按行号跳过”后通过,明确更晚时刻的正例仍允许。这是软件边界保护,不代表在这次真实录像中发现了倒序日志。修正后三份真实输入的完整输出与修正前逐项相同。
局限
- 这不是“命中时数值推断成功”:截图先读到不等于游戏动作先发生;截图时间与日志时间之间还没有认证的对应关系。
- 314 伤害的数值验证没有完成。
- 准备页技能/装备变化尚未全部覆盖;这条路径不读取 App 里用户手动建立的对象绑定,不能声称能阻断所有显式绑定冲突。
- 安装版没有更新,安装版上未实测。
结论与下一步
已经读到的攻防不再被浪费,可以作为有来源、有前提的条件参考出现在攻击候选旁边,且不改变任何正式结论。下一步只检查现有规则模拟器的公开规则是否支持“攻击 20 / 伤害 314”的受限条件数值比较;如果接口要求完整的命中条件,就记录准确的接口缺口,不编造未知的防御或数量,也不再堆积说明文字。
Comments