摘要
在《魔法门之英雄无敌:上古纪元》里,英雄施法要花魔力(耗魔)。实际花多少会被很多来源改变:我方或敌方的技能、装备、某些生物的光环都可能让法术更贵或更便宜;“奇术”技能还允许同一回合施第二次法术,但第二次要乘一个倍率。项目的状态估计模块(SE,把读到的观察累积成对局状态和对手构筑推断)会读战斗日志里的“某英雄施放某法术、失去了多少魔力”,反推“需要哪些费用来源才能解释这个数”,进而推断对手可能带了什么技能或装备。
以前的费用测试只覆盖“第一次施法真实支付,第二个数字只是报价”。本实验补上缺口:在项目的规则模拟器里,让英雄合法地先后施放两种不同法术,把模拟器给出的实际扣蓝作为观察喂给 SE 的独立耗魔解释入口,检查真正起作用的费用来源类别是否被保留下来。新建 57 个测试节点,加上 3 个既有相关文件共 133 项全部通过,本批没有发现需要修改的生产错误。但在等待外部审阅期间,另一个探针在 SE 的自动推断主路径里发现了一个真实反例,已另立实验修复。
要回答的问题
当施法费用由多个来源叠加(我方减耗、敌方加耗、光环、学派联动、第二次施法倍率)时,SE 的耗魔解释能否:保留真正起作用的那类条件;不把我方的减耗或施法次序误归给敌方;在观察有歧义时拒绝配对?
数据与来源
- 全部是规则模拟器(项目的规则实现,不是商业游戏的已验证规则;规则版本 battle-core.v449)中的合法构筑与合法动作。
- 来源组合用的具体条目:生物德鲁伊与魅魔(升级版)、宝物“魔法拖鞋”、两个子技能(一个降耗、一个让敌方加耗)、主技能“奇术”和“日光魔法”。都由公开的竞技场解析器构造,没有手填价格系数。
- 观察来自实际动作回执里的法术与扣蓝字面,经测试适配为日志格式;合成的玩家名和日志时钟只用于测试配对,不冒充录像元数据。真实构筑和完整状态只用于事后评分,不传给 SE。
- 另用一份已保存的真实训练页(一段训练录像,10 月 10 日 16:57)通过 App 接口核对。
方法
| 测试组 | 做法 |
|---|---|
| 30 种构筑 | 5 种来源配置 × 3 种阻碍条件(无 / 有但学派不对应 / 有日光学派) × 奇术高级/专家;每次先后合法施放“力量之歌”和“原始弩箭”,核对报价 = 实际扣蓝 = 动作回执 |
| 10 个跨回合分支 | 5 种配置 × 阻碍无/有日光联动;合法跳过回合到法术可再施放,第三次施法恢复首施费用,敌方来源仍在 |
| 12 个逐来源去除 | 6 个来源各在奇术高级/专家下单独移除,重新构造并施法,验证每个来源都实际改变了费用 |
| 4 个观察负例 | 在第二次施法的合成日志里加入断行、时钟差、不同玩家或重复扣蓝,验证不配对、不调用价格枚举 |
| 1 个抵消对照 | “无来源”与“德鲁伊 −2、魔法拖鞋 −2、敌方加耗 +4”实际费用相同,验证 SE 返回同一组匿名条件——净值为 0 不能排除敌方加耗 |
独立的期望数值由已审核公式手算后固定:两法术本等级基础耗魔都是 6;第二次施法倍率奇术高级为 1.75、专家为 1.5。例如高级、五来源全开时两次施法为 11→16;去掉魔法拖鞋变 14→20,去掉敌方加耗变 6→8,去掉日光联动变 10→16。(首轮 24 项只核对候选,手算绝对值和逐项去除是后续补强的,不能说成全部预期都在首轮之前冻结。)
设置
现有核心环境,8 核限制串行。所有动作从合法动作列表中选取,并在克隆状态上重复执行验证确定性。
结果
| 运行 | 结果 |
|---|---|
| 第 1 批 | 24 通过 / 30.79 秒 |
| 第 2 批(加跨回合) | 24 通过、1 失败 / 31.06 秒 |
| 第 3 批 | 45 通过 / 46.95 秒 |
| 最终聚焦 | 新 57 + 既有 76,共 133 个不同节点通过 / 70.28 秒 |
真实保存页核对:同一训练页里两位不同玩家、不同时钟的两条记录(17:04:22 与 17:04:50),都是施放“审判”花费 28。经 App 的真实接口调用独立耗魔解释,每条都得到 4 组条件:模型等级 1–4、普通倍率 1、无阻碍、匿名固定 −2。这 4 组不是 4 种已识别的构筑;“无阻碍”只是有限模型内的相容组合,不能证明敌方没有相关技能,英雄特长等模型外来源也没有认证。
失败与负结果
- 第 2 批 1 个失败:测试误用了动作对象上并不存在的“施法方”字段,改为读取当前行动方。这是测试夹具错误,不是 SE 产品缺陷;失败记录保留。
- 随后发现的反例:在等待审阅时,另一个探针用合法构筑发现——只有德鲁伊单独减耗、没有魔法拖鞋或减耗子技能时,SE 的自动推断主路径仍强制在“魔法拖鞋或减耗子技能”二选一。这个发现不在本批测试范围内,本批“未发现生产错误”的结论不覆盖它;修复在另一个实验中进行。
局限
- 这是模拟器动作的软件组合测试,不是商业游戏实测、OCR 准确率或完整实体覆盖。
- 没有证明这些整套选择能在随机选秀中真的被抽到,也没覆盖所有英雄或每个法术等级;没有认证唯一来源、专注类动态加耗、零费用或超出 −6…+7 的固定项。
- 本批只覆盖独立的单页费用解释入口,不代表 SE 主推断的跨页施法次序已经消费这些条件。
结论与下一步
测试批次收尾,不再扩充无关组合。外部审阅同意收尾,并强调这不代表自动 SE、商业游戏或全实体覆盖。下一步检查:SE 主推断和历史费用说明这两个不同的消费者,对同一条保存的扣蓝/施法是否给出一致的解释,避免“独立按钮有信息、App 自动分析却没用上”;先查已有实现,不再复制一套定价逻辑。
Comments