摘要

0222–0224 都在合成小课程(2v2、3v3、无英雄)上进行。本实验第一次把“选择整局战术”搬进完整竞技场环境:双方各有英雄、七个兵种、法术和宝物。设计是在开局时用一个小型线性选择器,从三套整局策略里挑一套:F(Fair,只用玩家可见信息的基线搜索 AI)、R(持续压制敌方可见射手)、P(持续保护己方射手附近)。

正式准入运行 18.188773 秒后中断:64 个准入任务只启动了 19 个——13 局自然终局,1 局策略代码真实异常,另 5 局被控制器随批终止,45 局未开始。零学习更新,P 和选择器都没有打过正式对局。这是一次工程故障关闭,不能当作“上下文学习失败”。

要回答的问题

在完整竞技场里,根据公开开局信息选择整局战术,能否比始终用基线 F、或始终用某个固定战术更好?准入阶段只回答前置问题:这些战术在完整环境中能否稳定跑完、并产生足够的胜负差异供学习?

方法

  • 三套策略。 R 持续压制公开可见的敌方射手,P 持续保护己方射手附近;目标失效才重选,没有相关角色或位置信息时退回 F。所有法术、英雄动作、单位技能和原有零消耗保护都交给 F,不学习施法、不新增伤害公式。
  • 选择器。 10 个公开数值特征 + 10 个“是否已知”标记 + 偏置,共 21 个输入 × 3 个选项 = 63 个参数。只用己方可见的英雄/法术和双方可见部队,未知不填真值。训练用 250 步全批 Adam、L2 = .1;非 F 选项分数严格高出 F .25 以上才选,开局只选一次。
  • 学习信号。 在同一训练来源上让三种策略各自真正打完整局,只为终局得分不同的选项产生偏好。

设置(冻结的条件)

  • 来源(一套固定的双方选秀构筑与开局随机种子):52 份新蓝图,32 训练 / 8 开发 / 12 保留。按“两侧英雄与七兵种族”去重后,与 323 份旧蓝图的 223 个族都不同。
  • 事前兼容检查:只读旧实验 0204 前 8 个训练来源的 16 条轨迹,1762 个公开选择全部能恢复;306 次施法、62 次英雄动作、108 次单位能力选择一致(93.444 秒)。
  • 准入:先用 32 个训练来源中的前 8 个,最多 96 个预定比赛槽(去重后 64 局实际对局)/ 15 分钟;要求 ≥ 95% 已知终局、0 故障、至少 3 个来源有非 F 正差、至少 2 个有负差、实际覆盖英雄与施法决策。
  • 全训练最多 384 槽 / 50 分钟,开发 88 槽 / 15 分钟,保留 132 槽 / 25 分钟。20 完整回合未决或只剩临时生物双输。

结果

项目 数量
自然终局(第 4–10 回合) 13
真实策略异常 1
随批中止 5
未开始 45
学习更新 0

已完成的只有 F/F 8 局、F/R 4 局、R/F 1 局,不是完整配对表,不能推断任何选项优劣。只构造了 8 个训练状态,其余 44 个(24 训练、8 开发、12 保留)未构造。6 局结果全部记为未知。

故障经过: 某训练局在第 96 次合法转移后进入第 7 回合,红方最后一支召唤幼虫到期消失,红方已无活体部队,但引擎仍把行动权交给蓝方。新写的策略包装假设“未终局就一定有敌人”,于是抛错。另 5 局是被控制器随这一批一起终止的。

故障后核验:8 个初态、1467 个公开输入/动作/事件/转移、记忆恢复、隐藏随机数,以及 13 局原终局全部一致。19 份记录全部导入回放界面,双方英雄的属性、技能、宝物、法术在开局、施法后、末尾都通过显示检查。77 项软件检查通过。

失败与负结果

  • 两处独立问题:一是策略包装的错误前提(空目标),已修复——四种选项的空目标回归测试先失败、修后通过,仍由 F 从公开菜单选动作;二是 Simulator 在回合开始临时单位到期后没有立即结算胜负,这一缺口后来在实验 0344 修复,并验证了旧回放兼容。
  • 修复不改写本批结果:原 6 局 unknown 保持,诊断性的单步转移(显示蓝方终局)不写回正式结果。

局限

  • 这是工程故障,不是学习失败:63 参数选择器从未训练,P 从未正式对战。
  • 最大公开选择 .205197 秒只是 8 并发下的观察,不含转移,不是网页端到端延迟。
  • 修复 0344 不是商业游戏规则的认证。

结论与下一步

完整竞技场比小课程多了大量边界情况,本次就撞上了“临时单位到期后谁赢”的规则缺口。先修 Simulator(实验 0344),再在新规则下用同样的 52 份蓝图、同样的 F/R/P、63 参数和门槛另编号完整重跑(见实验 0226);本批 13 局终局不拼入新训练。