摘要

轮到某个生物行动时,屏幕底部会显示它的技能栏:左侧 L1–L5 是技能图标,图标中央可能有一个数字(看起来像剩余冷却回合),底部有能量菱形。上一轮已经能读出这些数字,但如果不知道数字属于哪个技能,就交付不了有意义的冷却观察。本实验专门识别 L1–L5 槽里的图标是哪个技能。

结果:在先标注、后匹配的 54 个验证槽上,目录技能 43 个识别正确、0 个错误、8 个保持未知;2 个不在目录里的图标(如普通攻击)都没有被误接受。新功能通过显式开关启用,默认输出、公共协议和 App 不变。

要回答的问题

能否在不误认的前提下,把底栏技能槽的图标对应到游戏目录中的具体主动技能?右侧 R/C 槽不在本次范围内。

数据与来源

  • 参考图: 项目游戏知识库中的全部 125 个主动技能,其中 123 个有图标。有两组技能的图案完全相同(尸爆/净化之血、净化孢子/激励孢子),只能输出共享候选。
  • 开发集: 上一轮时间线中两段训练录像里,按“来源/当前生物/槽位/亮暗”去重后的 35 个非空槽。先看了全目录排名再写开发标签。
  • 冻结验证: 评估组与两个校准组中的 54 个非空 L 槽。标签只依据槽位原图、可见生物的目录技能图标和能量菱形数量,在看任何匹配输出之前写好。这些来源的其他字段之前曝光过,不能称全局盲测。

方法

  1. 把槽位转灰度,套一个圆形内区掩码,去掉中央数字、底部能量菱形和外圈。
  2. 在 62–70 像素五个尺度上,在槽中心 ±4 像素内做归一化相关系数模板匹配(TM_CCOEFF_NORMED),对全部图标取最高分排名。
  3. 只有首选分数 ≥0.72 且领先第二名 ≥0.10 才接受;共享图案的两项作为一组参与排名,过线时输出共享候选,不擅自选其一。
  4. 普通攻击、模式切换等图标不在目录里,应该被拒绝,而不是硬配一个最像的。

输出只有图案身份候选和分数,不复制目录里的冷却、耗能或归属。

设置

门槛在开发集上选定后冻结,对 54 个验证槽只运行一次,不按验证结果调门槛。等待帧(底栏显示的是另一个生物的技能)单独统计。

结果

数据 目录技能槽 正确/错误/未知 非目录槽误接受
开发集 35 槽(看过排名后标注) 23 / 0 / 2 0/10
冻结验证 54 槽(先标注后匹配) 43 / 0 / 8 0/2

验证中有 1 槽人工也不确定,不计入。按“录像/技能”去重后为 25 组、19 种技能:22 组全对、3 组未知,没有组内对错混合。等待沙漏帧中,底栏显示的技能按像素单独标注,12 槽中 9 对、3 未知。

生产实现对 54 个验证槽逐一复现了冻结实验的状态、身份、分数和领先值(54/54)。新增 12 项单元测试,覆盖身份、非目录未知、共享候选、空槽和 R/C 槽不读、单槽失败隔离、前景跳过等。

失败与负结果

  • 8 个未知里 7 个是同一个暗紫色的“召唤仪式:执行者”图案(开发集里分数也只有 0.596),另 1 个是“手铐”(0.539)。
  • 在训练图上运行真实命令行时,带数字“2”的亮色“命令:恐惧”分数 0.729 但领先不足,被判为未知——这是保守拒判,不是错误。
  • 暗色或带数字的图标分数普遍偏低。

局限

  • 这些来源的其他字段曾曝光,不是全局盲测;分母小,相邻帧也不是独立事件,远不能说 125 个技能都已覆盖。
  • 图案身份不说明技能归属、当前是否可用,也不说明冷却语义。
  • 能量菱形数量与目录耗能一致,可以作为以后的独立核对线索,本轮没有实现。

结论与下一步

简单的掩码模板匹配加“分数 + 领先”双门槛,已经能在冻结验证中做到零错误接受,代价是暗色图标偶尔未知。下一步可以把能量菱形数量作为独立交叉核对,并与冷却数字的时间线结合,得到“哪个技能还剩几回合冷却”的观察。