摘要
项目的规则模拟器(对游戏规则的自主实现,并非商业游戏的已验证规则)常用自己生成的场景来测试,但用同一套规则生成又解释,两边可能一起错。真实游戏截图上的面板读数是外部证据。外部审阅建议的一个方向正是:用真实证据审计规则。
本实验只读不改:对已保存的真实状态估计(SE)请求跑公开 SE,列出“规则在 3 个以内的来源组合下也解释不了”的面板差异;回到原图核对读数,再交给规则侧(另一个会话 simulator1)判断。结果找出三类候选(虫巢计数、我方英雄卡法强差 1、敌方幸运统一低 2),扩大到全部 App 会话后又发现 4 张英雄卡对不上:1 张是感知侧缺少新子技能模板导致漏读,其余 3 张后来查明是“确认页英雄卡显示截断值、战斗内部用另一种取整”。所有候选只登记、不判定。
要回答的问题
在真实对局里,哪些面板读数是规则模拟器在有限来源组合下解释不了的?它们是读数错误、模板缺失、临时效果,还是规则差异?
数据与来源
- 第一轮:6 份此前已用于开发的保存请求——App 第 13 个候选版本(RC13)实打的第一、二局,第 15 个候选版本(RC15)的一局,10 月 10 日 16:57 录像 58 帧,10 月 10 日 01:39 录像 49 帧及其 5 帧前缀。
- 扩大:用 App 自己的只读方式重建全部 40 个 App 会话的 SE 请求,29 个可重建;其余 11 个各有原因(旧版本格式或没有完成的分析)。来源都是用户自己的实战、用户选定的训练片段和旧录屏训练样本,没有冻结或独立留出数据。
- 原图核对是模型目视(MODEL_VISUAL_CHECKED),不是人工审核(REVIEWED);本实验没有一条是 REVIEWED。
方法
- 对每份请求跑公开 SE,留下两类行:我方生物面板与“按确认页我方构筑预测”的差异;敌方生物面板与“按敌方英雄和可见兵种预测”的差异。
- 差异在 3 个以内来源中无解的列为候选——可能是规则差异、读数错误、战斗中的临时效果或更大的构筑,只列不判。
- 额外记录我方确认页的英雄卡能否被开局预测复现。英雄卡是静态的,信号最干净。
- 生成逐会话索引,根因分类为:读数错误、模板缺失、传输或 SE、证据或时间、规则候选、未分类。
设置
不改 SE 或规则模拟器代码;不读冻结源或独立留出。
结果
第一轮(6 份请求):
| 对局 | 我方面板 | 敌方面板 |
|---|---|---|
| RC13 第一局 | 无解(14 项差异) | 无解(9 项差异) |
| RC13 第二局 | 未比较:我方英雄卡对不上 | 同左 |
| RC15 | 有 1 套解释 | 有 1 套解释 |
| 16:57 录像 | 未比较:英雄卡对不上(与 RC13 第二局同一构筑) | 同左 |
| 01:39 录像 / 五帧前缀 | 没有可比较的差异行 | 同左 |
候选(按影响排序):
- 虫巢“其他独特虫群生物”计数(RC13 第一局我方):两张面板的攻 43、防 12 都支持“含自身”计数,规则模拟器当前按“除自身”;但安装说明文字写的是“其他的”,与读数冲突。交规则侧做原生审计,SE 期望以“预期失败”记录。
- 我方英雄卡法强差 1(RC13 第二局 / 16:57):确认页读攻 3、防 2、法强 27、知识 20,三帧读数一致;开局预测最佳拟合法强 28。它让两段对局的面板比较全部被跳过,影响覆盖面最大。
- 敌方生物幸运统一低 2(RC13 第一局敌方):四种生物预测 0 读 −2,另一种 2→0;一种生物士气 −1→1。只核对了一张原图(幸运 −2、士气 1,状态行无图标)。
扩大到 29 个会话: 多数对局都有 3 个以内来源解释不了的面板差异,但大多是战斗中读到的面板,临时效果本来就会改变,没有逐项归因。英雄卡对不上 4 局:
| 会话 | 读数 / 预测 | 结论 |
|---|---|---|
| 10-10 第 1 局 | 知识 17 / 15 | 感知漏读:一个子技能槽是 8 月更新后新增的“属性加成”,参考目录没有模板;补上后完全吻合 |
| 10-10 第 4 局 | 法强 27 / 28 | 规则差异候选(即上面第 2 条) |
| 10-11 第 5 局 | 防御 11 / 12 | 规则差异候选 |
| 10-11 第 9 局 | 法强 42 / 43 | 规则差异候选 |
准备页 18 个非空子技能槽读成未知:14 个是两种共用同一图标的法术(SE 已按槽位等级消解),2 个是缺模板的属性加成,2 个是同级两个候选分不开。
按“英雄卡显示截断值”重跑: 规则侧发现确认页英雄卡显示的是百分比乘积截断后的值,而战斗内部按另一种取整,并让开局预测改为给出显示值。战斗中的 HUD 显示的是内部值:10-11 第 5 局卡上防御 11,44 帧 HUD 都是 12;第 9 局卡上法强 42,HUD 第一帧 43。所以 SE 按 HUD 反推的部分无需修改。重跑 29 个会话:英雄卡 26 张能复现,1 张不能(10-10 第 1 局,保存的请求里还是模板漏读前的旧读数);原来因卡对不上而跳过的三局现在都有了面板比较,新的差异已列给规则侧,没有逐项归因。
失败与负结果
- 最初把可重建的会话数误写为 30,实际是 29(相关工单里的“30”应为 29)。
- 大量战斗中面板的差异无法区分临时效果和规则问题,本轮没有归因。
局限
- 第一轮只有 6 份请求,其中两份是同一构筑;“读数无误”只是对少数原图的模型目视,不是准确率。
- 这些案例已被选出来分析和修复,属于开发诊断与回归样本,不能再当独立留出样本计算准确率。
结论与下一步
真实面板确实能暴露规则模拟器和感知两侧的问题:一张英雄卡的不匹配追到了感知的模板缺失,另外三张促成了“显示截断值”的规则修正。虫巢计数和幸运低 2 等候选已交规则侧做原生审计。这份逐会话索引今后作为回归样本使用,新增证据应继续按根因分类登记,而不是直接改写规则或 SE 的期望。
Comments