28 KiB
18-AI导演系统策划文档
本文档定义 TH1 新 AI Director 的目标策划方案。
它以 TH1 的回合制 4X 玩法、Action 权威行为层、英雄系统、城市发展、科技文化外交为基础,不依赖既有 AI 实现结构。
1. 方案定位
AI Director 是一套“局势缓存 + 分层规则 + 合法 Action 执行”的回合 AI。
它的职责是:
- 读懂当前
MapData局势。 - 判断当前回合最该解决的问题。
- 从合法 Action 池中选出一个动作。
- 通过
CommonActionParams、CheckCan、CompleteExecute执行。 - 执行后重新读局势,再决定下一步。
它不是:
- 不是 PPT 细节的逐条搬运。
- 不是机器学习黑盒。
- 不是所有动作统一套一个万能评分。
- 不是绕过 Action 层直接改
MapData的独立系统。
AI 的核心表现目标:
| 目标 | 表现 |
|---|---|
| 活下来 | 不轻易丢首都、空城和关键英雄 |
| 会扩张 | 能抢村庄、遗迹、资源和可开发区域 |
| 会打仗 | 会防守、会压线、会攻击高价值目标 |
| 会发展 | 安全时能建设、升级、学科技、买文化卡 |
| 会用英雄 | 英雄按自身机制行动,而不是当普通兵 |
| 性能稳定 | 每次决策只做轻量缓存和候选筛选 |
2. 一次 AI 动作的逻辑线
AI 不是一次性规划完整回合,而是重复执行“读局势,选一个 Action”。
构建局势缓存
→ 构建合法动作池
→ 按优先级车道选择一个动作
→ 校验并执行 Action
→ 动作改变 MapData
→ 再次进入下一次决策
一个普通兵为什么会动起来:
如果城市危险,它去救城。
否则如果眼前能打有价值目标,它攻击。
否则如果还没有稳定二城,且附近有可占城中心,它优先去扩张。
否则如果脚下或附近有占领、遗迹、资源、恢复、升级机会,它做机会动作。
否则如果它空闲,它向防守、进攻或发展战线移动。
否则它交给内政或兜底逻辑。
一个城市为什么会生产:
如果城市会被威胁,优先守城和出防守兵。
如果城市靠近前线,优先提供军力。
如果城市安全,优先升级、建设、资源和奇观。
一个英雄为什么会放技能:
先判断英雄当前上下文。
再查英雄专属 Playbook。
如果专属动作有合法 Action 且有局部价值,就执行。
否则才退回普通攻击、移动或恢复。
3. 决策骨架
Director 使用固定优先级车道。车道之间不做统一评分,车道内部只做同类轻量排序。
| 顺序 | 车道 | 策略目标 |
|---|---|---|
| 1 | Emergency | 阻止立即丢城、被偷家、关键单位暴毙 |
| 2 | HeroManagement | 处理选英雄、英雄任务、出场和复活节奏 |
| 3 | PriorityTactic | 只让击杀、打英雄、打城市威胁等确定战果抢在扩张前 |
| 4 | Expansion | 二城前和早期高价值扩张优先抢可占城中心 |
| 5 | HeroPlaybook | 发挥英雄机制和阵营特色 |
| 6 | Tactic | 处理当前可攻击或近距离交战 |
| 7 | UnitOpportunity | 抢占领、遗迹、采集、恢复、升级等确定收益 |
| 8 | Front | 把空闲单位送往正确战略方向 |
| 9 | Growth | 推进城市、地块、科技、文化、外交 |
| 10 | Fallback | 防止规则缺口导致 AI 停摆 |
车道顺序的核心含义:
活命 > 英雄体系 > 确定战果 > 早期扩张 > 英雄特色 > 当前战斗 > 短期机会 > 战略移动 > 长期发展 > 兜底
4. 局势缓存
局势缓存只服务本次决策,不维护跨回合大型状态机。
4.1 基础集合
| 数据 | 用途 |
|---|---|
| 己方单位 | 行动主体、守军、进攻力量、探索力量 |
| 己方英雄 | 构建 HeroState,触发 HeroPlaybook |
| 己方城市 | 构建 CityThreat、CityPlan、Front |
| 己方领土 | 判断入侵、资源、可建设范围 |
| 敌方单位 | 构建威胁、局部战斗、目标价值 |
| 敌方英雄 | 判断高价值目标和控制优先级 |
| 敌方城市 | 构建进攻战线和地缘距离 |
| 可见资源/遗迹/村庄 | 构建发展目标和机会动作 |
4.2 局势指标
缓存中保留以下轻量指标:
| 指标 | 含义 |
|---|---|
| MilitaryValue | 单位战斗价值,普通兵按成本和血量,英雄单独加权 |
| CounterValue | 兵种克制价值,来自 TH1 克制关系和特殊兵种映射 |
| ThreatValue | 单位或格子可能受到的伤害压力 |
| AttackValue | 某单位攻击某目标的局部收益 |
| CityThreat | 城市周围敌我压力 |
| DevelopmentValue | 村庄、遗迹、资源、边界探索的价值 |
| FrontValue | 防守、进攻、发展的战线价值 |
这些指标不追求完美数学最优,只用于排序同类选择。
4.3 性能边界
缓存构建必须遵守:
- 不深拷贝
MapData。 - 不在每个车道重复全量扫描地图。
- 不保存跨多回合的大型黑板式复杂状态。
- 不建立永久军团状态机。
- 大范围搜索只保留 TopN 目标。
- 同一玩家同一回合内,已经执行过的同一个 action stableKey 不再进入 Director 候选,避免单位移动、城市训练等动作反复被选中。
- 同一玩家同一回合内,扩张、回防、前线移动会记录目标意图;同类目标意图达到预算后不再重复派兵,避免所有单位反复奔向同一个目标。
5. 战略态势
战略态势是本回合国家层面的粗判断。
Defense
Expansion
Attack
Development
5.1 Defense
进入 Defense 的典型条件:
- 有城市
CityThreat达到危险。 - 敌方单位进入某座己方城市自己的领土,或短期可威胁该城市。
- 敌军压力显著高于附近守军。
- 敌军下回合可能威胁城市中心。
- 多个敌国同时压境。
Defense 的行为倾向:
- Emergency 车道优先阻止丢城;危险城市如果空防或只剩唯一守军,先补兵/城墙,再考虑攻击和外派。
- 城市优先训练防守单位、建城墙、保留占城格单位。
- 如果危险城市中心为空,城市生产要优先补可站城/守城单位;扩张变强后不能让空城威胁长期升高。
- 如果危险城市中心为空且敌方下回合可占,Emergency 改为“补兵/回城心优先”;只有能直接击杀最后一个威胁单位的攻击才能压过驻守,普通攻击不能继续把城心暴露给占领。
- 如果空城心威胁发生在首都或 critical 城,且本次 Emergency 没有解除,后续非 Emergency 车道停手;必要时同一城市允许第二个回防单位继续补位,不能只派一个单位后转去建设或移动英雄离线。
- 正在站危险城市中心的守军不能被调离城心去救另一座城;其他周边守军仍可参与回防,避免防线互相抽空。
- 科技优先防御、基础兵种、移动和克制。
- 英雄优先治疗、保护、控场、守城。
城市威胁必须绑定到具体城市。远处敌人踩到我方另一座城市的领土,不能让所有城市都进入 Emergency;否则 AI 会过度防守,扩张和成长动作会被挤掉。
5.2 Expansion
进入 Expansion 的典型条件:
- 近距离有可达村庄。
- 附近有高价值遗迹、资源、边界探索点。
- 当前没有严重城市威胁。
- 军事上暂时不适合主动进攻。
Expansion 的行为倾向:
- 二城前,非严重城市威胁下,可占城中心优先于普通战线移动。
- 可占城中心包括
ResourceType.CityCenter村庄、无归属城市,也包括当前地图数据中表现为非同盟 owner 的空城/村点。 - 早期扩张只追可在有限回合内转化的目标,避免全地图远距离追城导致移动量很大但二城率不变。
- Expansion 只扫描已排序的少量高价值扩张目标;扩大城市数不能让每次决策退化成“所有目标 × 所有单位”的全量搜索。
- 单位移动优先满足“本回合能占”或“下回合能站到可占点旁边”,远距离目标只保留作低优先级战线。
- 扩张目标必须考虑占后守备风险;如果目标格或占领单位附近威胁很高、当前已有严重城市威胁、或己方单位数不足以覆盖城市数,则降低占领/靠近优先级。普通城市威胁只影响危险目标,不应把安全二城扩张整体压掉。
- 二城前如果存在严重城市威胁,Expansion 不完全关闭,只保留距离 3 格内、目标格无即时威胁、且可快速转化的村庄/空城目标;其他远距离或危险扩张继续让位给 Emergency。
- 危险城市的唯一守军不能外派扩张;非唯一守军可以参与近距离、安全、能快速转化的二城扩张,避免防守过度导致城市数停滞。
- Expansion 车道优先处理占领和向目标靠近;UnitOpportunity 负责脚下的占领、遗迹和采集补漏。
- Development Front 指向村庄、遗迹、资源和边界。
- 城市优先增长和基础建设。
- 科技优先资源开发、移动能力和道路。
5.3 Attack
进入 Attack 的典型条件:
- 与某国战争或关系极差。
- 敌城距离足够近。
- 我方军事价值和克制价值不劣。
- 附近没有更高优先级扩张目标。
Attack 的行为倾向:
- Front 指向进攻目标城市。
- Tactic 优先击杀高价值目标和守城单位。
- PriorityTactic 只处理确定战果:击杀、攻击英雄、攻击正在威胁城市的单位,或极低反击风险的高分攻击。
- 城市优先训练克制兵种和攻城相关单位。
- 科技优先军事克制、攻击、移动、海战和攻城。
5.4 Development
进入 Development 的典型条件:
- 无严重城市威胁。
- 无明确进攻窗口。
- 无近距离高价值扩张目标。
- 经济、科技、文化或城市等级落后。
Development 的行为倾向:
- Growth 车道推进城市建设、资源开发、科技和文化。
- Front 可生成低优先级发展战线。
- 外交倾向稳定关系和建立使馆。
6. 城市计划
每座己方城市生成一个 CityPlan。
| 城市计划 | 触发局势 | 行为倾向 |
|---|---|---|
| EmergencyDefense | 城市会被立即威胁 | 守城、建城墙、训练防守兵 |
| Mobilize | 前线压力存在但未立即丢城 | 训练克制兵、支援前线 |
| Frontline | 离敌城或交战边境近 | 训练作战单位、复活英雄、补军力 |
| BacklineGrowth | 后方安全 | 升级、建设、资源、科技文化 |
| Wonder | 后方安全且奇观条件明显 | 启动或完成奇观 |
城市策略保持简单:
危险城市解决生存。
前线城市提供军力。
后方城市滚长期收益。
7. 战线与单位意图
不建立大型跨回合军团状态机。第一版用轻量 Front 表达单位移动方向。
| Front 类型 | 来源 | 目标 |
|---|---|---|
| DefenseFront | 危险城市 | 城市中心、防守锚点 |
| AttackFront | 目标敌城、敌军集结 | 敌城中心、敌军方向 |
| DevelopmentFront | 村庄、遗迹、资源、边界 | 可扩张目标 |
| HoldFront | 安全期驻扎 | 关键城市或交通点 |
单位每次决策只生成当前意图:
| UnitIntent | 含义 |
|---|---|
| DefendCity | 回防、攻击威胁城市的敌人 |
| FightLocal | 当前附近有可打目标 |
| TakeOpportunity | 占领、遗迹、采集、恢复、升级 |
| MoveFront | 向 Front 移动 |
| Hold | 不离开关键格,等待或恢复 |
这种设计保留 PPT 中“国家、城市、军团、自由人”的策划意图,但去掉跨回合军团编制和复杂重组。
8. 普通单位策略
普通单位的行为链:
城市危机可参与 → DefendCity
附近有高价值战斗 → FightLocal
脚下或附近有确定收益 → TakeOpportunity
没有更高优先级 → MoveFront
位置关键或低血 → Hold / Recover
8.1 战斗目标
攻击目标按以下因素排序:
- 能否击杀。
- 是否威胁城市。
- 是否是英雄。
- 目标军事价值。
- 目标残血程度。
- 我方反伤风险。
- 外交关系和是否交战。
8.2 机会动作
机会动作优先级:
占敌城或村庄
→ 开遗迹或宝物
→ 采集高价值资源
→ 英雄升级
→ 普通升级或文化升级
→ 低血恢复
机会动作必须让位于 Emergency 和明显击杀。
8.3 移动
移动不追求完整路径规划,只选择当前可达格中的最优格。
移动格评估因素:
- 是否接近目标 Front。
- 是否降低城市危机。
- 是否进入敌方高威胁格。
- 是否下回合能攻击或占领。
- 是否堵住己方城市中心。
- 是否保护英雄或关键单位。
9. 英雄策略
英雄不走普通单位公式。英雄分两层处理:
- HeroManagement 负责英雄体系节奏:选英雄、让已选择英雄尽快出场、再推进任务。
- HeroPlaybook 负责场上英雄怎么发挥机制:治疗、保护、控场、地面攻击、主动技能、收割、站位。
HeroManagement 的节奏:
没有选择英雄
→ 先选择最适合当前阵营和局势的英雄
→ 已选择但未上场时,优先在合法城市训练/复活英雄
→ 如果已选择英雄都已经上场,且已选择英雄数量占满当前英雄槽位,再买下一英雄槽位
→ 英雄已经能参与战局后,再推进可强制完成的英雄任务
这个顺序保证 AI 不会只完成任务却长期没有英雄在棋盘上,也不会因为第二、第三英雄槽位没开而卡住英雄体系。
HeroPlaybook 的判断顺序:
保命
→ 救关键友军
→ 使用高价值专属动作
→ 攻击高价值目标
→ 站位到正确 Front
→ 普通恢复或等待
英雄动作只通过现有 Action 入口落地:
| 英雄行为 | Action 入口 |
|---|---|
| 攻击敌人 | UnitAttack |
| 治疗、保护、喂养、友军互动 | UnitAttackAlly |
| 攻击地块、召唤、灵球、特殊落点 | UnitAttackGround |
| 自身主动、切形态、爆破、坐镇、转换资源 | UnitAction |
| 重新站位 | UnitMove |
9.1 红魔馆 / Egyptian
| 英雄 | AI 意图 |
|---|---|
| Flandre | 优先斩杀可杀高价值目标;特殊友军攻击只在能触发收益时使用 |
| Remilia | 接战时铺血雾或增益;低血或可吸收时续航 |
| Sakuya | 守护残血关键友军;有收割窗口时补刀 |
| Meiling | 低血恢复,安全时承担前排和防守 |
| Patchouli | 利用元素、地面和友军施法收益;危险时避免深入 |
9.2 永远亭 / French
| 英雄 | AI 意图 |
|---|---|
| Kaguya | 给前线友军提供协同和团队收益 |
| Reisen | 能击杀或爆破时优先输出 |
| Tewi | 接战阶段给相邻友军增益 |
| Eirin | 优先治疗残血英雄,其次治疗高价值友军 |
| Mokou | 残血且敌人密集时自爆换收益;蛋形态按危险密度移动 |
9.3 守矢 / Germany
| 英雄 | AI 意图 |
|---|---|
| Kanako | 安全时坐镇;需要移动或接敌时取消坐镇 |
| Suwako | 用地面攻击和召唤制造前线压力 |
| Sanae | 治疗友军,优先处理残血和英雄威胁 |
| Aya | 用高机动追击、回防和踩路径收益 |
| Momiji | 围绕猎物标记移动和攻击 |
9.4 地灵殿 / Indian
| 英雄 | AI 意图 |
|---|---|
| Satori | 压制敌方核心英雄,优先封禁或恐惧相关目标 |
| Koishi | 靠近安全前线和骨堆目标,制造恐惧/治疗价值 |
| Rin | 有尸火层数时转换输出或资源 |
| Utsuho | 骨堆、敌城中心和高密度目标优先 |
| Yuugi | 通过推进和强位移压线,寻找高收益移动格 |
9.5 博丽 / Norway
| 英雄 | AI 意图 |
|---|---|
| Reimu | 保护关键友军;退魔压力高时净化 |
| Sumireko | 用灵球和地面攻击控制战线 |
| Kasen | 高压战斗时切换形态,利用鬼形态压制 |
| Aunn | 靠近防守线,保持双体和支援价值 |
| Suika | 安全时生成小萃香,被围攻时解围 |
9.6 后续阵营通用规则
BritishByakuren、PersianMiko、ByzantineZanmu 等已在游戏数据中存在时,AI 不因为缺少专属 Playbook 而停摆。
默认规则:
- 按英雄等级和技能入口识别可用 Action。
- 治疗和保护类动作优先给残血英雄和高价值友军。
- 地面攻击类动作优先选敌军密集、敌城中心或可触发召唤的格子。
- 刺客、先锋、法师、控制英雄在有合法有效攻击或地面控制目标时,动作优先级高于普通 MoveToFront;否则已上场英雄容易只移动、不形成个人威胁。
- MoveToFront 只作为低优先级补位:必须真实缩短到目标的距离,并且不能让法师、控制、支援、经济英雄踩进明显高威胁格。
- 自身主动类动作只在满足局部价值时使用。
- 没有专属规则时退回通用英雄攻击、恢复和 Front 站位。
10. 科技、文化、外交
科技、文化、外交属于长期收益,不和 Emergency、Tactic、HeroPlaybook 抢优先级。
10.1 科技方向
| 局势 | 科技倾向 |
|---|---|
| Defense | 防御、基础兵种、城墙、克制、移动 |
| Attack | 军事克制、攻击、移动、攻城、海战 |
| Expansion | 资源开发、探索、道路、浅海/山地通行 |
| Development | 经济、城市升级、文化、奇观条件 |
科技选择可以看当前科技,也可以看一层后继科技,但不做完整科技树搜索。
10.2 文化卡
文化卡按当前阶段选方向:
- 前线吃紧:单位强化、购买强单位、即时战力。
- 英雄体系成型:英雄折扣、英雄强化、英雄相关收益。
- 安全发展:长期经济、资源解锁、文化收益。
10.3 外交
外交保持简单:
- 高好感结盟请求优先接受。
- 好感高且资源允许时建立使馆。
- 好感极高且没有直接扩张冲突时尝试结盟。
- 好感极低或已交战国家可进入 Attack 候选。
- 队友和盟友不能被普通进攻逻辑选为目标。
11. 合法动作池
Director 不直接推演行为结果,而是从合法 Action 池中选择。
动作池需要覆盖:
| 分类 | 动作 |
|---|---|
| 单位战斗 | UnitAttack、UnitAttackAlly、UnitAttackGround |
| 单位移动 | UnitMove |
| 单位行为 | Capture、Examine、Gather、Recover、Upgrade、HeroUpgrade、CultureUnitUpgrade、ShipUpgrade、AbsorbMarker、英雄主动 |
| 城市行为 | TrainUnit、CityLevelUpAction、CityAction、StartWonder、BuildWonder |
| 地块行为 | Gain、Build、GridMisc |
| 玩家行为 | LearnTech、PlayerAction;BuyCultureCard 只开放英雄槽位卡,不开放普通文化卡 |
| 英雄管理 | SelectHero、TrainUnit:Giant 出场/复活、SecondHero/ThirdHero 槽位卡、FinishHeroTask |
UnitAttackAlly 只由 HeroPlaybook、支援战术或明确的友军互动规则使用,不进入 Fallback。友军目标动作如果落到兜底,通常说明它缺少英雄或支援规则。
普通 UnitAttack 必须有可预期收益。基础伤害为 0 的纯普通攻击不进入 Emergency、Tactic 或 GenericHero 攻击候选,避免防守时把行动浪费在“合法但不掉血”的目标上。带推击、龙船撞击、Reisen 协同或 Kaguya 狼等攻击附加效果的动作可以例外,因为它们可能通过位移、追击、标记或额外伤害产生收益。
危险动作默认不进入普通 AI 选择:
- 解散。
- 强制解散。
- 拆除。
- 驱散。
- 摧毁建筑。
除非后续单独设计明确的“牺牲/拆除/清场”规则。
12. 工程落地边界
AI 可以重新实现,但必须遵守 TH1 的游戏架构:
- 权威行为仍走 Action 层。
- 参数仍用
CommonActionParams。 - 合法性仍由
CheckCan兜底。 - 执行仍走
CompleteExecute。 - 技能效果仍由
SkillBase生命周期触发。 - 城市、单位、玩家、格子的真实修改仍由现有逻辑模块承担。
- 多人和回放不能依赖本地随机数、当前时间或不稳定遍历顺序。
这意味着 AI 文档定义“怎么选动作”,不定义“动作怎么改游戏数据”。
13. 性能目标
一次决策的成本应接近:
收集基础实体
+ 局部距离和威胁缓存
+ 合法动作枚举
+ 各车道轻量排序
性能原则:
- 城市威胁只看城市周围有限范围。
- 城市领土威胁只看当前城市自己的
Territory,不使用全玩家领土做全局标记。 - 局部战斗只看可接触范围。
- Front 只保留少量高价值目标。
- DevelopmentTarget 只保留 TopN。
- Expansion 从 DevelopmentTarget 中只扫描前 N 个扩张目标。
- UnitMove 不生成整张地图的所有可走格;先从城市威胁、扩张目标、战线、TopN 自城、局部战斗收集移动锚点,每个单位默认只保留 2 个最靠近锚点的移动候选。
- 同一次决策内,单位到目标格的最佳移动结果可以缓存,避免 Expansion、Emergency、Front、HeroPlaybook 重复扫描同一单位的移动候选。
- 同一次决策内,格子威胁值按 GridId 缓存;Expansion、Front、Recover、风险判断不能重复遍历全体敌军。
- 行动候选只生成、复制、CheckCan 一次;车道评分只包装已验证候选,最终执行前再做一次 CheckCan 兜底。
- 同一玩家回合内已经执行过的 stableKey 不再参与下一次候选选择。
- 扩张移动、回防移动、前线移动有每回合意图预算;预算耗尽后交给其他车道,避免单一目标吞掉整回合。
- Emergency 回防只扫描按距离和用途筛过的少量 responder,默认 8 个;强国后期不能为了每个危险城市全军重算移动。
- Growth 按 CityPlan 顺序和动作类型预算扫描城市、地块、玩家动作;软预算后只做高价值发展,硬预算后不再用 Growth/Fallback 把回合填满。
- 软预算后的 Fallback 只保留攻击、地面攻击、占领、恢复、升级、宝藏选择等明确收益动作;普通建设、清理地块、学习低价值科技不靠 Fallback 继续填动作。
- 批量 compact 诊断只写分析所需字段;Decision 保留 lane/reason/action/actionPool,Execution 保留 action、关键 delta、轻量 before/after,不写完整 cache 和冗余执行快照;完整候选明细仅在非 compact 调试时打开。
- 车道只查缓存和动作池。
如果卡顿,优先削减:
移动候选数量
发展目标数量
局部战斗搜索半径
科技/建筑候选遍历次数
14. 测试标准
第一轮测试不只看胜负,先看行为线。
| 测试项 | 通过标准 |
|---|---|
| 回合稳定 | AI 能连续执行并正常结束回合 |
| 城市防守 | 城市危险时优先攻击威胁或回防 |
| 占领扩张 | 能占村、占城、开遗迹时不会长期无视 |
| 局部战斗 | 能打高价值目标、残血目标和威胁城市目标 |
| 高价值战术 | 击杀、打英雄、解除城市威胁时能插队,但普通蹭血不压过早期扩张 |
| 英雄表现 | 英雄会治疗、保护、地面攻击、自爆、坐镇或控场 |
| 战线移动 | 空闲单位能向防守、进攻、发展目标移动 |
| 城市发展 | 安全城市能生产、升级、建设、科技文化 |
| 外交行为 | 高好感不乱开战,必要时建立使馆或结盟 |
| 性能 | 单个 AI 动作决策无明显卡顿 |
当前批跑调优采用以下基线指标,不用单局主观感觉判断 AI 是否变聪明。指标只用于诊断和调参,不反向要求 AI 套统一万能公式。
| 指标组 | 观察项 | 目标 |
|---|---|---|
| 正确性 | failedGames、noEffect、repeated、maxActions/playerTurn | 必须为 0 或远低于强制停止线 |
| 扩张 | aliveAvgCities、alive>=2、alive>=3、maxCities | 二城率和三城率稳定提升,不能靠单个高滚玩家掩盖整体弱扩张 |
| 战斗 | UnitAttack 数、kills、actingUnitDeaths、PriorityTactic/Tactic 占比 | 有战果且不过度白送,城市威胁能被处理 |
| 防守 | cityLost、capitalThreatTurns、emptyThreatenedCityTurns、resolved/worsened、emergencyResponse、defenderReturn | 少丢城,首都少长期受压,危险城市有回防或生产响应 |
| 英雄 | selected、spawned、HeroManagement、HeroPlaybook、heroPersonalExpression、styleBuckets | 已选择英雄应尽快上场;不同英雄的攻击、治疗、控场、召唤、经济和防守表达要能区分 |
| 小兵定位 | unitRoleExpression、unitTypeExpression、kills、selfDeaths、damage、taken、captures、moves | 机动兵要推进和占领,近战要站线和收割,远程/攻城要打出输出,防守兵要少送死并解决威胁 |
| 特色单位 | unitSkillActions、unitSkillChangedActions、actorSkillSignatures、skillSignatureExpression | 新阵营小兵和特殊单位要通过技能签名、特殊动作、状态变化展示存在感 |
| Fallback | Fallback 总数、Fallback actionType、Fallback noEffect | 越接近 0 越好;非 0 时优先把有意义动作归入正式车道 |
| 性能 | actions/sec、avgGame、decision avg/p95/max | 先保证聪明,再把明显尖峰纳入下一轮优化 |
小兵定位调优原则:
- 远程和攻城单位不是普通前排。它们应优先找安全输出位,有伤害且低反击风险时更愿意攻击。
- 远程和攻城单位前线移动时,不直接选择离目标最近的格子;应从该单位本回合少量合法移动候选中挑“能进射程、威胁低、仍在推进”的输出位,避免为了聪明移动引入全量搜索。
- 特殊单位分为压力单位和脆弱衍生单位。压力单位可以参与推进;脆弱召唤物、幻象、灵球、骨堆、小萃香等不能被 Front 当普通近战送进高威胁格。
- 脆弱特殊衍生单位不承担危险扩张任务;目标格已经有即时威胁时,让普通兵、机动兵或主力英雄去处理。
- 特色单位的目标不是单纯提高出场次数,而是要在伤害、控制、召唤、献祭、占领或技能签名变化中表现出可读价值。
防守指标解释:
| 指标 | 含义 |
|---|---|
| cityLost | 同一玩家两次回合开始之间城市数减少,代表上一轮循环没守住 |
| capitalThreatTurns | 回合开始时首都处于城市威胁范围 |
| emptyThreatenedCityTurns | 回合开始时有受威胁城市中心没有己方或同盟单位驻守 |
| resolved/worsened | 某个行动后城市威胁数量、危急威胁或 dangerScore 改善/恶化 |
| emergencyResponse | 有防守机会时 Emergency 决策的覆盖率 |
| defenderReturn | Emergency 中实际执行回防移动的次数 |
英雄和特色单位指标解释:
| 指标 | 含义 |
|---|---|
| styleBuckets | 把英雄 reason/action 归为 Defense、Recovery、Burst、Control、Summon、Economy、Mobility、HeroLifecycle、General |
| heroDefensiveUse | 英雄在防守、治疗、保护或 Emergency 中参与的次数 |
| heroPersonalExpression | 按英雄身份统计真实执行次数、击杀、伤害、治疗、移动、技能变化和 top actions,判断个人机制是否真的被使用 |
| unitRoleExpression | 按 Melee、Mobility、Ranged、Siege、Defender、Naval、Special、Summon 统计真实行为,判断小兵定位是否健康 |
| unitTypeExpression | 按具体 UnitType 统计行为,用来发现某个特色小兵只被生产但不行动、只移动不输出、或死亡过高 |
| unitSkillActions | 带技能签名的单位实际执行了哪些动作 |
| unitSkillChangedActions | 动作前后改变了单位或目标技能签名的动作 |
| actorSkillSignatures | 最常参与行动的技能组合,辅助判断新阵营小兵是否真的被用到 |
问题定位:
| 现象 | 优先检查 |
|---|---|
| 城市被偷 | CityThreat、Emergency、城市计划 |
| 能占不占 | UnitOpportunity、DevelopmentTarget |
| 英雄不放技能 | HeroState、HeroPlaybook、ActionPool |
| 单位乱走 | Front、GridThreat、MoveTarget |
| 过度防守 | CityThreat 是否把全玩家领土误算到每座城市 |
| Fallback 偏高 | Recover、特殊 UnitAction 是否应并入 UnitOpportunity 或 HeroPlaybook;UnitAttackAlly 不应出现在 Fallback |
| 城市不发展 | CityPlan、Growth、ActionPool |
| 科技乱学 | StrategicPosture、TechScore |
| 回合慢 | ActionPool、移动候选、局部搜索半径 |