摘要

右键查看战场上的生物时,游戏会弹出“生物面板”,其中一行小图标表示它身上的魔法或能力效果(增益、减益等),图标角上还有一个数字角标。之前的读取器已能找到这些图标并读出角标(142 项中 141 项读对),也能读鼠标悬停时的提示标题;但没有悬停时,“这个图标是什么效果”一直是“未读”。

本实验发现,这些状态图标并不是法术的原画,而是一套独立的风格化符号,所以拿游戏资料库里的法术图做模板行不通。改用“已审样例库”:把截图里出现过的图标按外观分组,再用带颜色的相关匹配加高阈值识别。最终版本在 33 个新测试图标上 16 对、0 错、2 未判、15 个库外符号被正确拒识——但这个阈值是看过上一版错误后定的,只算事后确认。21 类符号中只有 7 类有可信名字,生产流程没有接线。

要回答的问题

  • 没有悬停提示时,能否从图标本身认出效果身份?
  • 角标数字是什么含义?

数据与来源

  • 24 局截图包中的全部生物面板帧(训练 15 局 / 测试 9 局,沿用既定划分),共 74 张面板、定位到 75 个状态图标。
  • 第二测试集:从已有图标定位结果中另取 33 个,排除了提供悬停样例的录像,先标注、后运行。
  • 图标按外观目视分为 21 类符号(金色/红色/紫色碎片、竖琴、绿盾上箭头、红叉弓、红狼等)。分组由助手目视完成(模型目视核对),不是独立的人工审核。

定名证据:

  • 已有的 16 个“悬停标题 ↔ 同帧唯一槽位”样例(9 种效果)确定了 6 类:金色碎片、竖琴、剑+上箭头、红色十字剑、金色护臂、拳头+红下箭头分别对应 6 种具名效果。
  • 战斗日志(Logs,记录战斗事件的文字面板)旁证:三局日志写着某增益“持续时间 5/8/7”,同局面板上绿盾上箭头图标的角标恰为 5/8/7,因此定名为该效果。另一个“直到战斗结束”的效果对应角标“∞”。
  • 其余 14 类只有弱证据或无证据,保持未命名。

方法

匹配器:图标缩放到 48×48,取半径 17 的圆盘区域,允许 ±2 像素平移,计算颜色相关;样例库 = 训练局图标 + 悬停样例。低于门槛则输出“未知”。分数不是概率。阈值在训练局上选(留一局交叉)。

设置

三个版本依次测试,测试集每版只跑一次。

结果

版本 选参方式 测试集 对 / 错 / 未知
v1 逐通道标准化 训练局留一局,0.6 / 0.15 截图包测试局 14 个 5 / 1 / 8
v2 联合标准化(保留颜色) 训练局留一局,0.5 / 0.1 新测试集 33 个 16 对 / 7 错 / 2 未判 / 8 正确拒识
v3 阈值 0.88 训练局分布(正确匹配 5% 分位 0.887,最高错分 0.876) 同上 33 个(看过 v2 错误后定参) 16 对 / 0 错 / 2 未判 / 15 正确拒识

已入库的符号只要被接受就判对;未知主要来自库里没有的新符号(33 个中有 15 个)。

失败与负结果

  • 目录模板不可用:75 个状态图标与资料库中 102 张方形法术原画不对应;安装资源里也没有已提取的状态图标。
  • v1:逐通道标准化抹掉了颜色,金/红/紫碎片互相分不开,红盾下箭头被认成绿盾上箭头。
  • v2:这是开放集问题——库里没有的“红剑下箭头”(6 个)以 0.82 的高分被认成“金剑上箭头”。同一游戏资源的正确匹配分数都 ≥0.92,所以需要高绝对阈值。
  • v3 是事后确认:阈值在看过 v2 的错误之后确定(虽然数值来自训练数据分布),不能当作独立测试结果。

局限

  • 测试样本小(14 + 33),同局、同录像多帧不是独立样本,也不是盲测。
  • 图标分组是助手目视结果;只有 7 类有可信名字。
  • 没有接入战斗记录 App:App 的面板结果有严格的数据格式,需要先与使用方约定字段。

结论与下一步

“已审样例 + 高阈值”可以可靠识别已见过的状态符号,并把没见过的拒掉;覆盖面完全取决于样例库。最省力的扩库方式是“悬停读字积累”:每当读到悬停标题且它唯一对应一个图标槽,就把(标题, 图标)加入待审样例。角标的含义——“施放时的持续回合数”——已有 3 次精确吻合,作为语义候选继续验证(例如同一单位跨回合是否递减)。