摘要
这是一次修复前的“拍照存档”。我们在规则引擎 Simulator 当时的版本(battle-core v363)上,用固定的七个场景各跑一局完整对战,记录决策数、结束回合和回放是否一致。7 局都自然打完、没有碰到回合上限,448 次决策全部能从保存文件精确重演。但原测试集自带的地形覆盖检查失败,整体退出码为 1,汇总报告没有生成。同一批里有一局(熔岩场景)在正常选秀和正常 AI 决策下,自然出现了“单位死后尸体上的禁疗状态被提前移除”的缺陷。
要回答的问题
游戏里有些效果带“生命周期”。例如“致命衰败”会让目标在几个回合内无法被治疗;目标死后变成尸体,这个禁疗计时应当怎样继续,影响之后能否用复活类法术把它救回来。当时 Simulator 在这类规则上有已知问题,计划修复。修复之前需要一份基线,回答两个问题:
- 当前版本下,完整对局能否正常打完并精确回放?
- 已知缺陷是否只在人工构造的测试局面里出现,还是在正常对局中也会发生?
方法与设置
- 场景:直接使用既有测试集 public-arena-core.v1 的全部七项,不按胜负或是否触发目标技能挑选或替换种子。
- 双方策略:两边都是同一套启发式选秀 + 只读公开信息的战术 AI。
- 限制:100 回合上限,2 个进程。回合上限造成的终止不算自然结束。
- 精确回放(exact replay):把保存的对局记录从头在引擎里重演一遍,检查每一步结果完全一致。
- 运行配置在跑任何对局之前就写入报告,事先说明:如果旧的覆盖检查失败,就保留失败,不换场景让报告变绿。
结果
| 场景 | 胜方 | 决策数 | 结束回合 | 本族地形兵种数 |
|---|---|---|---|---|
| sand-mixed-neutral | 蓝 | 70 | 5 | 0 |
| grass-temple | 蓝 | 61 | 5 | 1 |
| deathland-necropolis | 蓝 | 22 | 2 | 6 |
| autumn-grove | 蓝 | 94 | 8 | 0 |
| snow-schism | 蓝 | 47 | 5 | 0 |
| lava-hive | 红 | 95 | 7 | 7 |
| dirt-dungeon | 蓝 | 57 | 4 | 0 |
合计 7 局自然终局、448 次决策、7 局精确回放通过。整体检查报错“一个非沙地的本族地形对局输了”,因此退出码为 1。Autumn、Snow、Dirt 三个场景本次没有选到本族地形兵种。
自然对局里的尸体禁疗缺陷(熔岩场景,逐事件重放):
| 事件序号 | 蓝方 jaw 的状态 | 致命衰败 |
|---|---|---|
| 0(第 1 回合施放) | 活着,禁疗 | 原定第 4 回合截止 |
| 60(第 4 回合被攻击) | 死亡,仍禁疗 | 保留 |
| 63(进入第 5 回合) | 仍是尸体,禁疗解除 | 被移除 |
同局另一个目标活着撑到截止回合后正常解除,构成活体到期的对照。
失败与负结果
- 原测试集的地形覆盖检查失败,汇总报告没有产出;没有改检查或换种子。
- 决策延迟样本只在运行器内存里,报错后没有写盘,因此没有延迟数据,也没有用文件时间去补。
- 本批没有任何一局施放裂渊仪式,不能证明那条规则被覆盖。
局限
两边策略相同,蓝方赢 6 局不代表任何 AI 的强弱。这是 Simulator 内部结果,不是正式游戏客户端的实测。之后的 v364 修正改变了仪式召唤物的清除规则,这批存档只能作为 v363 的历史证据,不能直接按新版本重放。
结论与下一步
基线说明完整对局能跑通并精确回放,而尸体禁疗缺陷在正常对局里确实存在。修复后的成对比较、定向场景和浏览器验收见实验 0023、0025、0026。
Comments