Pokerogue项目中的敌人AI决策机制深度解析
pokerogue 项目地址: https://gitcode.com/gh_mirrors/po/pokerogue
前言
在回合制战斗游戏中,一个设计精良的AI系统能极大提升游戏体验。本文将深入分析Pokerogue项目中敌人AI的决策机制,包括换位判断和技能选择两个核心环节,帮助开发者理解如何构建一个智能且富有挑战性的战斗AI系统。
敌人AI决策流程概述
Pokerogue中的敌人AI决策分为两个主要阶段:
- 换位判断阶段:评估当前场上宝可梦与后备宝可梦的匹配度,决定是否需要换位
- 技能选择阶段:当不换位时,从可用技能中选择最优技能攻击目标
第一阶段:换位决策机制
匹配度评分系统
换位决策的核心是计算每个宝可梦的匹配度评分(Matchup Score),公式如下:
MUScore = (atkScore + defScore) * hpDiffRatio
攻击评分(atkScore)
- 计算攻击方宝可梦所有属性对防御方的总效果
- 类型克制效果:2倍克制得2分,4倍克制得4分
- 速度加成:若攻击方速度更快,得分增加25%
防御评分(defScore)
- 计算防御方宝可梦对攻击方的防御效果
- 公式为攻击方atkScore的倒数
- 防御评分上限为4分
HP差异比率(hpDiffRatio)
hpDiffRatio = sourceHpRatio - oppHpRatio + 1
- 若攻击方速度更快,此值乘以1.5
- 最大值限制为1
换位决策流程
-
前置条件检查:
- 是否有已排队的技能(如使用破坏光线后的休息回合)
- 是否被束缚(如绑紧、沙穴等效果)
-
评分计算:
- 计算队伍中每个宝可梦对敌方宝可梦的匹配度评分
- 若敌方有两只宝可梦在场,则评分相加
-
换位判定:
- 对最高评分宝可梦应用换位频率修正系数
- 普通训练家:当后备宝可梦评分≥当前3倍时换位
- 高级训练家(道馆馆主等):当≥2倍时换位
第二阶段:技能选择机制
当决定不换位时,AI需要选择最优技能进行攻击。
技能选择流程
-
可用技能筛选:
- 排除PP不足或被禁用的技能
- 若无可用技能,则使用挣扎
-
技能评分计算:
- 对每个技能计算技能评分(Move Score)
- 技能评分等于该技能对所有可能目标的最高目标评分(Target Score)
-
技能评分调整:
- 未实现的技能(N结尾):评分设为-20
- 使用条件不满足的技能:评分设为-20
- 目标评分为0或NaN:视为未实现,评分设为-20
-
技能选择算法:
- 按评分降序排序技能
- 根据AI类型选择技能:
- SMART_RANDOM:5/8概率选最高分,3/8概率考虑次优
- SMART:基于评分比例选择,评分相近时随机性更高
目标评分系统
目标评分(TS)由用户收益评分(UBS)和目标收益评分(TBS)组成:
TS = UBS + (TBS × 目标系数)
- 敌方目标:目标系数为-1
- 友方目标:目标系数为1
攻击技能评分计算
对于攻击技能,额外计算attackScore:
attackScore = (typeMult × statMult) + floor(威力/5)
- typeMult:克制为2,不克制为-2
- statMult:基于攻击/特攻属性匹配度(0.75-2倍)
最终TBS计算:
TBS = baseScore - attackScore
最终评分调整
- 对敌方:TS乘以克制系数和本系加成(1.5倍)
- 对友方:TS除以这些系数
- 若TS=0,设为-20
目标选择机制
目标选择基于目标选择评分(TSS):
TSS = TBS × 目标系数
选择流程:
- 按TSS降序排序目标
- 标准化权重(确保最小权重≥0)
- 过滤掉权重<最高权重/2的目标
- 基于剩余权重随机选择目标
实战案例分析
假设对战场景:
- 敌方训练家:龙头地鼠(钢/地面) vs 我方麻花犬(妖精)
换位决策
-
计算龙头地鼠匹配度:
- atkScore:钢系克制妖精(2倍),若速度更快→2.5
- defScore:钢抵抗妖精→2
- hpDiffRatio:1(双方满HP)
- 总评分:4.5
-
计算后备宝可梦(熔蚁兽)匹配度:
- atkScore:火系被免疫→0
- defScore:火抵抗妖精→2
- 总评分:2
-
决策:龙头地鼠评分更高,不换位
技能选择
- 可用技能:地面冲击、铁头、抓狂、剑舞
- 评分计算:
- 地面冲击:
- 攻击评分:-2×2 + 20 = 16
- 最终评分:16 × 1.5(STAB) = 24
- 铁头:
- 攻击评分:2×2 + 16 = 20
- 目标评分:-(-5-20)=25
- 最终评分:25 × 2(克制) × 1.5(STAB) = 75
- 剑舞:非攻击技能,基于属性评分
- 地面冲击:
- 选择结果:铁头(评分最高)
总结
Pokerogue的AI系统通过精细的评分机制和概率选择,既保证了战斗的智能性,又保留了适当的随机性。关键设计要点包括:
- 多维度的评分系统(攻击、防御、HP、速度等)
- 不同类型的训练家采用不同的决策阈值
- 基于评分的概率选择而非绝对最优
- 完善的技能属性效果评估
这种设计既符合宝可梦系列的对战策略深度,又能适应roguelike游戏的随机性需求,值得同类游戏开发者参考借鉴。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考