Skip to content
写作:待补充更新:2026-05-16字数:—阅读:—维护:Azek431

创游世界AI系统设计入门

一句话摘要

创游世界敌人 AI 行为设计的完整指南,涵盖 AI 状态机、巡逻路径、追击逻辑、攻击模式、技能使用等,帮助开发者做出有挑战性且有趣的敌人行为。

适合谁阅读

  • 想要设计敌人AI的开发者
  • 需要实现智能敌人行为的创作者
  • 想学习游戏AI设计技巧的进阶用户

你将学到什么

  • AI状态机的基本概念
  • 常见敌人行为模式
  • 巡逻、追击、攻击的实现方式
  • AI难度平衡技巧
  • 常见AI设计模式

AI系统基础概念

什么是AI系统

AI系统是指游戏中非玩家控制角色(NPC/敌人)的行为逻辑,让它们看起来「智能」。

AI系统的核心要素

AI系统
├── 感知(玩家在哪、距离多远)
├── 决策(该巡逻还是追击)
├── 执行(移动、攻击、使用技能)
└── 状态(巡逻中、追击中、攻击中)

一、状态机设计

1.1 什么是状态机

状态机是一种将AI行为分解为不同「状态」的设计模式,每个状态有特定的行为逻辑。

1.2 常见AI状态

状态说明触发条件
待机原地等待,不做动作无目标时
巡逻按路线移动待机超时/未发现目标
追击向玩家移动发现玩家
攻击执行攻击动作进入攻击范围
撤退后退或逃跑生命值低
发呆随机小动作巡逻暂停

1.3 状态转换图

待机 ←→ 巡逻
  ↓         ↓
追击 ←→ 攻击

撤退

1.4 状态机实现

// 状态机脚本
当开始时
  设置自身属性 "当前状态" 为 "待机"
  设置自身属性 "警戒范围" 为 200
  设置自身属性 "追击范围" 为 150
  设置自身属性 "攻击范围" 为 50
结束

重复执行(每秒1次)
  获取玩家距离
  
  如果 自身属性.当前状态 = "待机" 那么
    如果 玩家距离 < 警戒范围 那么
      设置自身属性 "当前状态" 为 "追击"
      发送广播 "敌人_发现玩家"
    结束
  
  如果 自身属性.当前状态 = "追击" 那么
    如果 玩家距离 > 追击范围 那么
      设置自身属性 "当前状态" 为 "待机"
    否则
      如果 玩家距离 < 攻击范围 那么
        设置自身属性 "当前状态" 为 "攻击"
      结束
    结束
  
  如果 自身属性.当前状态 = "攻击" 那么
    如果 玩家距离 > 攻击范围 那么
      设置自身属性 "当前状态" 为 "追击"
    结束
  结束
结束

二、巡逻行为

2.1 简单巡逻

当开始时
  设置自身属性 "巡逻点索引" 为 0
  设置自身属性 "巡逻点列表" 为 [点1坐标, 点2坐标, 点3坐标]
结束

重复执行(每秒)
  获取当前巡逻点坐标
  移动向 当前巡逻点
  
  如果 到达巡逻点 那么
    设置自身属性 "巡逻点索引" 为 (巡逻点索引 + 1) % 巡逻点数量
  结束
结束

2.2 条件巡逻

// 白天巡逻,夜晚待机
重复执行(每秒)
  获取当前时间
  
  如果 时间范围 = "白天" 那么
    如果 当前状态 = "待机" 那么
      切换为 "巡逻"
    结束
  否则
    如果 当前状态 = "巡逻" 那么
      切换为 "待机"
    结束
  结束
结束

2.3 随机巡逻

当开始时
  设置自身属性 "巡逻点列表" 为 [多个随机坐标]
结束

重复执行
  随机选择巡逻点
  移动向 巡逻点
  等待 随机秒数(3-8秒)
结束

三、追击行为

3.1 基础追击

当收到广播 "敌人_发现玩家" 时
  设置自身属性 "当前状态" 为 "追击"
结束

重复执行(每秒10次)
  如果 当前状态 = "追击" 那么
    获取玩家位置
    移动向 玩家位置
  结束
结束

3.2 追击速度控制

重复执行
  如果 当前状态 = "追击" 那么
    设置移动速度为 正常速度 * 1.5
  否则
    设置移动速度为 正常速度
  结束
end

3.3 追击范围限制

重复执行
  获取玩家距离
  
  如果 当前状态 = "追击" 那么
    如果 玩家距离 > 最大追击范围 那么
      设置自身属性 "当前状态" 为 "待机"
      返回巡逻点
    结束
  结束
end

四、攻击行为

4.1 近距离攻击

当收到广播 "敌人_进入攻击范围" 时
  设置自身属性 "当前状态" 为 "攻击"
  
  播放攻击动画
  造成伤害
  等待 攻击间隔
  
  如果 玩家仍在攻击范围 那么
    继续攻击
  否则
    设置自身属性 "当前状态" 为 "追击"
  结束
end

4.2 远程攻击

当收到广播 "敌人_进入射程" 时
  如果 当前状态 ≠ "攻击" 那么
    设置自身属性 "当前状态" 为 "攻击"
  结束
  
  播放远程攻击动画
  生成子弹 朝向 玩家位置
  等待 攻击间隔
end

4.3 攻击冷却

当执行攻击时
  如果 自身属性.攻击冷却 > 0 那么
    显示 "冷却中"
    停止
  结束
  
  执行攻击
  设置自身属性.攻击冷却 = 攻击间隔
  
  重复执行
    等待 0.1 秒
    设置自身属性.攻击冷却 = 攻击冷却 - 0.1
    如果 攻击冷却 <= 0 那么
      设置属性.攻击冷却 = 0
      停止循环
    结束
  结束
end

五、技能系统

5.1 技能触发条件

// 血量低于50%时使用技能
当生命值改变时
  如果 当前生命 < 最大生命 * 0.5 那么
    如果 技能冷却 = 0 那么
      使用技能 "狂暴"
      设置技能冷却 = 60
    结束
  结束
end

5.2 多种技能轮换

当开始时
  设置自身属性 "当前技能索引" 为 0
  设置自身属性 "技能列表" 为 [技能A, 技能B, 技能C]
end

当满足技能释放条件时
  获取当前技能
  使用当前技能
  设置自身属性 "当前技能索引" = (当前技能索引 + 1) % 技能数量
  设置当前技能冷却
end

5.3 特殊技能

// 召唤小怪技能
当生命值 < 30% 时
  如果 召唤冷却 = 0 那么
    生成 3 个 小怪 在 自身位置附近
    设置召唤冷却 = 30
    显示 "召唤支援!"
  结束
end

六、难度平衡

6.1 基础数值调整

数值简单普通困难
生命值100150200
攻击力101525
移动速度80%100%120%
攻击间隔1.5秒1秒0.7秒
警戒范围100150200

6.2 行为难度调整

// 简单AI:只追踪
如果 发现玩家
  移动向玩家
结束

// 普通AI:会攻击
如果 发现玩家
  如果 在攻击范围
    攻击
  否则
    移动向玩家
  结束
结束

// 困难AI:会预判、会闪避
如果 发现玩家
  预测玩家移动方向
  绕到玩家身后
  如果 在攻击范围 且 玩家正在施法
    使用破招技能
  结束
end

6.3 BOSS设计要点

要点说明
多阶段血量低于X%进入下一阶段
特殊机制每隔X秒召唤小怪
高伤害技能需要玩家躲避
攻击提示攻击前有明显预警
弱点设计特定状态下有加成伤害

七、常见AI模式

7.1 巡逻兵模式

状态机:
待机(3秒)→ 巡逻(随机点)→ 待机(3秒)→ ...
  ↓ 发现玩家
追击 → 攻击
  ↓ 玩家逃跑
返回待机

7.2 刺客模式

状态机:
待机(隐蔽处)
  ↓ 玩家靠近
快速冲刺 → 攻击 → 脱离
  ↓ 玩家反击
返回隐蔽处待机

7.3 射手模式

状态机:
保持距离(始终与玩家保持一定距离)
  ↓ 玩家靠近
后撤 → 远程攻击
  ↓ 玩家远离
继续追击

7.4 守护模式

状态机:
巡逻(守护区域)
  ↓ 玩家进入区域
追击 → 战斗
  ↓ 玩家离开区域
返回守护点

八、AI优化技巧

8.1 减少计算开销

技巧说明
分组检测每组选一个代表检测,其他跟随
间隔更新不需要每帧更新AI决策
距离判断先用简单距离判断,再用精确判断

8.2 优化寻路

// 简化寻路
如果 玩家在直线距离内
  直接移动
否则
  使用预设路径点
结束

8.3 批量AI管理

// 创建AI管理器
当收到广播 "更新AI" 时
  获取所有敌人物体列表
  遍历列表
    对每个敌人执行AI决策
  结束
end

AI系统速查

需求实现方式
状态机用属性记录当前状态,重复执行检查状态转换
巡逻按路径点移动,到达后切换下一个
追击获取玩家位置,持续向玩家移动
攻击在攻击范围内时执行攻击逻辑
技能根据条件触发,设置冷却时间
难度调整数值和行为复杂度

相关页面


待验证问题

以下问题需要进一步验证:

问题状态验证方向
具体寻路算法的实现细节🔄 待验证需要引擎文档确认
不同游戏类型的AI设计差异🔄 待验证需要多类型测试

📝 说明:AI系统设计核心方法已稳定,具体实现属于进阶内容。

后续优化方向

  • [ ] 补充更多AI行为模式
  • [ ] 增加群体AI协调说明
  • [ ] 完善BOSS战AI设计专题

参与维护

发现文档问题?

你可以编辑页面、提交反馈,或复制链接给维护者,帮助这个资料库继续变好。

由 Azek431 整理与维护 | 基于 MIT 许可证开源