摘要

这是一次修复前的“拍照存档”。我们在规则引擎 Simulator 当时的版本(battle-core v363)上,用固定的七个场景各跑一局完整对战,记录决策数、结束回合和回放是否一致。7 局都自然打完、没有碰到回合上限,448 次决策全部能从保存文件精确重演。但原测试集自带的地形覆盖检查失败,整体退出码为 1,汇总报告没有生成。同一批里有一局(熔岩场景)在正常选秀和正常 AI 决策下,自然出现了“单位死后尸体上的禁疗状态被提前移除”的缺陷。

要回答的问题

游戏里有些效果带“生命周期”。例如“致命衰败”会让目标在几个回合内无法被治疗;目标死后变成尸体,这个禁疗计时应当怎样继续,影响之后能否用复活类法术把它救回来。当时 Simulator 在这类规则上有已知问题,计划修复。修复之前需要一份基线,回答两个问题:

  1. 当前版本下,完整对局能否正常打完并精确回放?
  2. 已知缺陷是否只在人工构造的测试局面里出现,还是在正常对局中也会发生?

方法与设置

  • 场景:直接使用既有测试集 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。