摘要

一次整局 CEM 训练(交叉熵方法,一种按对局胜负反复采样并收紧参数分布的优化方法)在 31 局已开始的游戏中,28 局自然结束,第 32 回合第 434 步发生异常。原因是 Simulator(本项目的战斗规则引擎)的聚合伤害计算要求“攻击 + 20 ≥ 0、防御 + 20 > 0”,而一个召唤化身因叠层的“暗影缩减”法术防御为 −21,分母为 −1,校验直接抛错。本批依据当前安装版的独立数值审计,让非零负分母进入原有的 32 位浮点算术,修复了该故障。防御恰好为 −20 时分母为零的情形仍未解决(见实验 0335)。

后续更正:随后取得的证据表明,商业游戏最终攻防有 0 下限,用户已批准合入最终属性取值的修复。本文保留当时“显式带符号数值切片”与故障事实,不能据此说生产中最终攻防可以为负。

要回答的问题

这个异常是 AI 选了非法动作,还是引擎在合法动作上崩溃?游戏在负防御下到底怎么算?

方法

  • 复现:执行者为升级凤凰,主目标为吸血鬼,范围受击者包括召唤化身(攻击 −18、防御 −21)。原动作在引擎合法菜单中,所以不是非法 AI 动作。
  • 复用 Game Knowledge 的当前安装版(build25672315)数值审计工具,重新核对身份、指令、常量,用显式输入算出基础伤害界:
攻击 防御 基础伤害界
61 −21 [0, 1]
−21 0 [0, 1]
−21 −21 [108, 156]
0 −19 [2160, 3120]
61 0 [437, 632]
  • 生产修改只在聚合数值边界:非零负分母和负分子进入原有 binary32 运算,最后沿用最小界 max(0)、最大界 max(1)。不对攻防截零,不改其他倍率、取整、采样或生命限制。非有限数、零分母、整数溢出仍然拒绝。

结果

  • 新增 9 项回归,其中 3 个带符号数值例和 1 个“真实施法、叠层 7 回合后凤凰攻击”的历史在修前失败、修后通过。
  • 两批不重叠的相关检查 121 项(55.52 秒)与 600 项(19.94 秒)通过。
  • 原 434 步保存的状态、事件、行动费用修后完全一致;原失败动作执行和再次执行都成功、回执相同。
  • 训练日志修前修后都完整核验通过:5,306 次转移、2,955 次策略恢复、84 次隐藏扰动、48 次选秀 / 48 个开局、31 个已开始游戏前缀(修后 322.41 秒)。这不是补跑训练。

失败与负结果

最初的测试导入误用了领域模块未导出的动作类,改为项目既有的兼容导入后才执行红/绿测试;这个收集失败不算引擎证据。

局限

  • 数值审计是显式输入切片,不是原生属性加载、整个范围波次或商业随机种子一致性证明。
  • 本轮没有借这个故障重新定义法术叠层规则。
  • 不证明学习策略更强,也不表示 Simulator 已与商业游戏完全一致。

结论与下一步

已复现的非零分母异常已修复,失败的训练批保持冻结。下一步是处理防御 −20 的零分母边界,再决定训练如何续进,见实验 0335。