摘要

v23 是新的战斗状态格式(加入了尸体上暂停的状态计时等生命周期信息,见实验 0404)。本实验验收它在真实浏览器里能否完整打一局:从选秀、构筑、布阵到战斗终局,并在中途真的停掉服务、重启后恢复。

两局(种子 197 和 211)都完整完成,真实重启后关键字段全部一致,保存的对局用命令行独立回放都验证通过。过程中发现战场数量字太小,已修复。这满足了“两局浏览器存档恢复”这一子门槛,但不完成整个生命周期目标,也不是换边配对的 AI 评估。

方法与设置

  • 内置浏览器(隐藏)、1164×655 视口、独立的运行目录;普通命令启动 Web 服务,显式选择 v23 状态,对手是只用公开信息的公平 AI。
  • 不注入战斗状态,不直接发 HTTP 动作,不操作商业游戏,不迁移用户存档。
  • 所有操作都通过可见控件完成。后期的“机械式”打法是选可见的攻击目标或结束行动,不是棋力实验。

结果

项目 种子 197(蓝方,沙地) 种子 211(红方,草地)
规则 v365,v23 状态 / 对局格式 同左
结局 红胜,第 8 回合,89 个事件,37 次人类攻击 蓝胜,第 8 回合,76 个事件,11 次人类攻击
流程 英雄 → 9 次技能 → 9 件宝物 → 10 个法术 → 7 种兵 → 最终属性 → 构筑 → 布阵 → 战斗 → 终局 同左
重启恢复 第 4 个事件时退出,B3 行动、己方魔法 88;重启后 3 个字段一致 第 4 个事件、R5 行动、己方魔法 80/80、对方 201/230;重启后全部一致
独立回放 命令行回放验证通过,红胜 验证通过,蓝胜
控制台 无错误 / 警告 无错误 / 警告

其他交互:施法(加速,魔法 100→88,同一单位仍可继续行动)、R2 提供全部 6 个合法进攻面并选择其一、飞行与传送、远程攻击、强制跳过、伤亡。

发现与修复

  • 数量字太小:战场整体缩放后,8 像素的数量字只有 7.87 像素高(宽 9.51–11.95 像素)。改为在按钮外绘制一个不接收点击的数量图层,字号不随棋盘缩小;修复后桌面和窄屏都是 16.10 像素高(见实验 0414)。
  • 窄屏布阵:红方部队被挤出视口,已修复。
  • 自动化定位器有几次等待超时,每次都先检查页面状态再继续,没有因为观察超时而重发动作;一次在无可攻击目标时找不到攻击按钮,属于操作方失误,不是产品卡死。

回归

修复后 Arena 全量 2784 通过(1302.43 秒),退出码 0。

局限

  • 两局用不同种子和构筑,不是换边配对。
  • 仍需要:三组配对完整对局、12 个场景 / 24 局的 AI 评估、低语(Murmurs)生命周期的原生证据。
  • 引擎里有致命腐朽或仪式等机制,不代表这两局覆盖了它们。