Pokerogue项目中的敌人AI决策机制深度解析

Pokerogue项目中的敌人AI决策机制深度解析

pokerogue pokerogue 项目地址: https://gitcode.com/gh_mirrors/po/pokerogue

前言

在回合制战斗游戏中,一个设计精良的AI系统能极大提升游戏体验。本文将深入分析Pokerogue项目中敌人AI的决策机制,包括换位判断和技能选择两个核心环节,帮助开发者理解如何构建一个智能且富有挑战性的战斗AI系统。

敌人AI决策流程概述

Pokerogue中的敌人AI决策分为两个主要阶段:

  1. 换位判断阶段:评估当前场上宝可梦与后备宝可梦的匹配度,决定是否需要换位
  2. 技能选择阶段:当不换位时,从可用技能中选择最优技能攻击目标

第一阶段:换位决策机制

匹配度评分系统

换位决策的核心是计算每个宝可梦的匹配度评分(Matchup Score),公式如下:

MUScore = (atkScore + defScore) * hpDiffRatio
攻击评分(atkScore)
  • 计算攻击方宝可梦所有属性对防御方的总效果
  • 类型克制效果:2倍克制得2分,4倍克制得4分
  • 速度加成:若攻击方速度更快,得分增加25%
防御评分(defScore)
  • 计算防御方宝可梦对攻击方的防御效果
  • 公式为攻击方atkScore的倒数
  • 防御评分上限为4分
HP差异比率(hpDiffRatio)
hpDiffRatio = sourceHpRatio - oppHpRatio + 1
  • 若攻击方速度更快,此值乘以1.5
  • 最大值限制为1

换位决策流程

  1. 前置条件检查

    • 是否有已排队的技能(如使用破坏光线后的休息回合)
    • 是否被束缚(如绑紧、沙穴等效果)
  2. 评分计算

    • 计算队伍中每个宝可梦对敌方宝可梦的匹配度评分
    • 若敌方有两只宝可梦在场,则评分相加
  3. 换位判定

    • 对最高评分宝可梦应用换位频率修正系数
    • 普通训练家:当后备宝可梦评分≥当前3倍时换位
    • 高级训练家(道馆馆主等):当≥2倍时换位

第二阶段:技能选择机制

当决定不换位时,AI需要选择最优技能进行攻击。

技能选择流程

  1. 可用技能筛选

    • 排除PP不足或被禁用的技能
    • 若无可用技能,则使用挣扎
  2. 技能评分计算

    • 对每个技能计算技能评分(Move Score)
    • 技能评分等于该技能对所有可能目标的最高目标评分(Target Score)
  3. 技能评分调整

    • 未实现的技能(N结尾):评分设为-20
    • 使用条件不满足的技能:评分设为-20
    • 目标评分为0或NaN:视为未实现,评分设为-20
  4. 技能选择算法

    • 按评分降序排序技能
    • 根据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 × 目标系数

选择流程:

  1. 按TSS降序排序目标
  2. 标准化权重(确保最小权重≥0)
  3. 过滤掉权重<最高权重/2的目标
  4. 基于剩余权重随机选择目标

实战案例分析

假设对战场景:

  • 敌方训练家:龙头地鼠(钢/地面) vs 我方麻花犬(妖精)

换位决策

  1. 计算龙头地鼠匹配度:

    • atkScore:钢系克制妖精(2倍),若速度更快→2.5
    • defScore:钢抵抗妖精→2
    • hpDiffRatio:1(双方满HP)
    • 总评分:4.5
  2. 计算后备宝可梦(熔蚁兽)匹配度:

    • atkScore:火系被免疫→0
    • defScore:火抵抗妖精→2
    • 总评分:2
  3. 决策:龙头地鼠评分更高,不换位

技能选择

  1. 可用技能:地面冲击、铁头、抓狂、剑舞
  2. 评分计算:
    • 地面冲击:
      • 攻击评分:-2×2 + 20 = 16
      • 最终评分:16 × 1.5(STAB) = 24
    • 铁头:
      • 攻击评分:2×2 + 16 = 20
      • 目标评分:-(-5-20)=25
      • 最终评分:25 × 2(克制) × 1.5(STAB) = 75
    • 剑舞:非攻击技能,基于属性评分
  3. 选择结果:铁头(评分最高)

总结

Pokerogue的AI系统通过精细的评分机制和概率选择,既保证了战斗的智能性,又保留了适当的随机性。关键设计要点包括:

  1. 多维度的评分系统(攻击、防御、HP、速度等)
  2. 不同类型的训练家采用不同的决策阈值
  3. 基于评分的概率选择而非绝对最优
  4. 完善的技能属性效果评估

这种设计既符合宝可梦系列的对战策略深度,又能适应roguelike游戏的随机性需求,值得同类游戏开发者参考借鉴。

pokerogue pokerogue 项目地址: https://gitcode.com/gh_mirrors/po/pokerogue

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞锦宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值