Games104学习笔记(19)
GAMES104:游戏引擎 Gameplay 玩法系统:基础 AI(下)
课程:GAMES104《现代游戏引擎:从入门到实践》
第 16 讲(下):游戏引擎 Gameplay 玩法系统:基础 AI
本地视频时长:约 1 小时 12 分钟
一、本讲的核心:让 AI 从“会走”变成“会行动”
上半部分的导航解决角色到达目标的大致路线;本讲继续处理三个问题:角色如何在局部空间自然移动,多个角色如何互相避让,以及 AI 如何感知环境并据此选择行为。
一个完整的基础 AI 闭环可以概括为:
- 感知系统提供世界信息。
- 决策系统根据目标和状态选择行为。
- 导航与转向系统将行为意图转成移动。
- 移动结果反过来改变下一次感知与决策。
这四部分需要彼此配合,任何一个环节失真,都可能出现“知道目标却走不到”“会走路却撞人”或“看见敌人却不改变行为”等问题。
二、学习目标
- 了解常见转向行为,以及全局寻路和局部移动的分工。
- 认识群体模拟中的规则模型、力模型与速度障碍方法。
- 理解静态空间信息、影响图和感官模拟如何为 AI 提供信息。
- 掌握有限状态机、层级状态机和行为树的组织方式与取舍。
三、转向行为:把路径变成自然运动
1. 全局路径与局部转向
全局寻路回答“经过哪些区域到达目标”;转向行为回答“当前这一小段如何调整速度和朝向”。转向输出通常不是位置,而是期望加速度、速度或角速度,再交由角色运动系统施加约束。
这种分层让 AI 可以遵循全局路径,同时应对附近角色、动态障碍和速度变化。
2. 常见转向行为
| 行为 | 意图 | 典型用途 |
|---|---|---|
| Seek | 朝目标加速 | 追赶固定目标 |
| Flee | 远离威胁 | 逃跑、保持安全距离 |
| Arrive | 接近目标时减速 | 停在交互点或巡逻点 |
| Pursue | 预测目标未来位置后追赶 | 追逐移动玩家 |
| Wander | 在局部范围生成平滑随机目标 | 待机游荡 |
| Path Following | 沿全局路径选取前瞻点 | 将寻路结果落实为移动 |
| Velocity Match | 匹配目标速度 | 编队、跟随、群体移动 |
| Align | 匹配目标朝向 | 队形、角色转身或镜头协同 |
这些行为可叠加,但需要明确权重和优先级。例如追逐行为与避障行为同时输出相反方向时,简单相加可能让角色抖动或停滞。
3. 速度匹配与朝向匹配
速度匹配根据目标速度与当前速度的差异计算调整量,使角色在有限时间内接近目标速度。朝向匹配以目标朝向为输入,输出角速度或角加速度。
两者常用于让多个角色看起来属于同一队伍,而非各自独立移动。它们需要遵守最大加速度、最大转向速度和减速距离等运动约束,否则会产生突然加速或不自然旋转。
四、群体模拟:多人移动而不互相穿透
1. 基于规则的微观模型
微观模型将每个角色视为独立个体,通过局部规则产生群体行为。经典的三类规则是:
| 规则 | 目标 | 直观效果 |
|---|---|---|
| Separation | 与过近邻居拉开距离 | 避免重叠和拥挤 |
| Cohesion | 朝附近成员的中心靠拢 | 保持群体聚合 |
| Alignment | 与邻居方向或速度趋同 | 形成同向流动 |
这种方法容易理解和扩展,适合鸟群、鱼群、小规模队伍等效果。缺点是局部规则在高密度或复杂约束下可能出现振荡、拥堵或无法预测的整体形态。
2. 宏观模型
宏观模型将人群视作连续介质,而非逐个模拟个体。它关注密度、流速和目标方向等整体量,更适合大规模人群或需要稳定流动效果的场景。
宏观模型减少了单个个体之间的直接交互计算,但不擅长表达少量关键角色的精细行为。因此实际系统常混合使用:远处人群采用宏观近似,近处可互动角色采用微观模型。
3. 基于力的避障
力模型将角色期望移动和邻居、墙体的排斥影响组合为合力。它容易融入物理或转向系统,也能表现紧急疏散等动态效果。
代价是需要谨慎调参:力过强会导致角色远离目标,过弱则会碰撞;在狭窄通道中,彼此排斥的角色可能原地抖动或形成堵塞。
4. 速度障碍
速度障碍方法不直接推开角色,而是分析在一段预测时间内哪些速度会导致与邻居碰撞,并从安全速度集合中选择合适速度。
它通常能比单纯力模型更准确地处理相向而行和动态避让,但实现复杂度更高,也可能在对称场景中产生左右摇摆。工程上需要配合优先级、偏好方向、预测范围和稳定化策略。
五、感知:让 AI 获取可用于决策的信息
1. 信息来源
AI 的信息可分为内部信息与外部信息:
| 类型 | 示例 |
|---|---|
| 内部信息 | 当前生命值、弹药、冷却、任务阶段、当前目标 |
| 静态空间信息 | 导航数据、掩体点、巡逻点、智能对象、战术区域 |
| 动态空间信息 | 敌人最近位置、威胁范围、可见区、声音来源、影响图 |
感知系统应避免把整个世界状态无差别送给每个 AI。信息获取的范围、精度、延迟和更新频率都是玩法设计的一部分。
2. 静态空间信息
导航网格之外,关卡通常还会预先标注掩体、伏击点、交互装置、巡逻路线和制高点。这类数据为 AI 决策提供语义:它不仅知道某处能走,还知道某处适合躲避、观察或执行特定动作。
将此类信息以智能对象或战术点形式暴露给 AI,能减少运行时昂贵的几何分析,也让关卡设计者直接参与 AI 行为质量的塑造。
3. 动态空间信息与影响图
影响图将世界离散为区域或网格,并在其中累积危险、可见度、友军控制、声音、资源价值等动态信号。AI 读取影响图时,不必逐一检查所有对象,而可快速得到某个区域的“风险”或“吸引力”。
影响图特别适合:
- 战术游戏中的威胁与控制区域。
- RTS 中的兵力密度、资源风险和进攻路线。
- 潜行游戏中的视线覆盖、警戒范围和最后已知位置。
影响图的分辨率、衰减方式和更新频率决定了精度与成本。过于频繁或过细的更新会接近直接查询全世界,失去聚合信息的优势。
4. 感官模拟
光、声音、气味等信号会随距离和遮挡衰减。游戏中的感官模拟通常不追求完整物理精度,而是提供足以支撑玩法的近似:
- 视觉可结合视锥、遮挡检测、照明强度与距离。
- 听觉可基于声源半径、传播时间、阻挡与事件强度。
- 气味或痕迹可随时间衰减,并向附近区域扩散。
将连续信号简化为区域值或影响图,能让大量 AI 在可控成本内共享感知结果。
六、决策系统:从信息到行动
本讲列出了有限状态机、行为树等常见决策方法。它们的共同目标是:在每次更新时,依据感知、内部状态和目标,选择下一步行动。
决策系统不应直接承担所有具体操作。更稳妥的结构是:决策层选择“追击、搜索、撤退、使用掩体”等意图,动作层再调用导航、动画、战斗和交互系统去实现。
七、有限状态机与层级状态机
1. 有限状态机
有限状态机将角色行为划分为有限状态,并用条件控制转移。例如守卫可处于巡逻、警戒、追击和搜索状态。
它的优点是直观、反应快,适合状态数较少、转移条件清晰的逻辑。问题在于状态增加后,状态之间的连线会迅速膨胀,转移规则难以维护。
2. 层级有限状态机
层级有限状态机通过父状态和子状态分组复杂行为。例如“战斗”可作为父状态,下方再区分接近、攻击、躲避和撤退。
| 优点 | 代价 |
|---|---|
| 将公共进入、退出和转移逻辑放到父层 | 层级关系增加理解成本 |
| 降低平铺状态图的连线数量 | 状态继承与优先级需要明确定义 |
| 保持较快的事件响应(?事实上难以快速切换相邻较远的状态) | 设计不当仍可能形成深层嵌套 |
层级并不能自动消除复杂性,但能把复杂性按语义拆分。关键是让每一层状态机有明确职责。
八、行为树:用控制节点组织反应与计划
1. 基本节点
行为树由条件、动作和控制节点组成。节点通常返回三种状态:成功、失败或运行中。
| 节点类型 | 作用 |
|---|---|
| 条件节点 | 判断敌人是否可见、是否有掩体、是否低血量等 |
| 动作节点 | 移动、攻击、装填、巡逻、等待等 |
| Sequence | 子节点依次执行,任一失败则停止当前序列 |
| Selector | 按优先级尝试子节点,直到某个节点成功或运行 |
| Parallel | 同时推进多个子任务,需要定义完成与失败规则 |
| Decorator | 包装节点,实现重复、反转、冷却或条件限制 |
2. Tick 驱动
行为树通常在每次 AI 更新时从根节点开始 Tick。控制节点根据子节点的返回状态决定继续、切换或重试;运行中的动作会在后续 Tick 中继续执行。
这种机制使 AI 能快速响应环境变化:条件不再满足时,上层选择器可以转去执行更高优先级行为。但过于频繁的切换也会导致角色反复打断动作,因此需要冷却、最小持续时间或中断策略。
3. Blackboard
Blackboard 是行为树共享的记忆空间,用键值方式保存目标、最后已知位置、当前路径、可用掩体、动作结果等数据。条件与动作节点通过 Blackboard 协作,而不需要彼此直接依赖。
Blackboard 的价值在于让行为树的输入和输出可观察、可调试;风险在于键名和数据来源失控后,会重新形成隐式全局状态。因此应明确每个键的所有者、生命周期和更新规则。
4. 行为树的优点与边界
行为树擅长表达“如果条件成立,就优先做某事;否则尝试下一种方案”的反应式逻辑,也便于设计人员通过节点组合调整行为。
它不一定适合长距离、多步骤、需要主动搜索行动序列的规划问题。此时可以结合规划、目标导向行动或更高层的任务网络。行为树更像一个可反应的执行框架,而不是所有 AI 问题的唯一答案。
九、从基础 AI 走向规划
基础 AI 的导航、转向、感知和行为树已经能构成许多敌人和 NPC 的行为闭环。更复杂的目标管理和多步骤行动编排,通常会进一步引入层级任务网络、目标导向行动规划、蒙特卡洛树搜索或机器学习等方法。
这些高级方法并不替代基础模块。没有可靠路径、稳定感知和可执行动作,规划出的高层目标也无法落地。
十、设计与工程原则
- 将全局路径、局部转向和群体避障分层,避免同一模块承担所有移动决策。
- 对大规模人群选择与规模匹配的微观、宏观或混合模型。
- 感知信息要有成本、范围和时效,不应无条件暴露真实世界状态。
- 用关卡标注、影响图和智能对象补充原始几何信息。
- 决策层选择意图,动作层实现意图;状态机与行为树都要控制状态和依赖的膨胀。
十一、要点回顾
- 转向行为把导航结果转化为受运动约束的局部移动。
- 群体模拟可使用局部规则、连续流模型、力模型或速度障碍,各自适用的规模与稳定性不同。
- 静态战术数据、动态影响图和感官模拟为 AI 提供不同粒度的信息。
- 有限状态机反应快且直观;层级状态机用语义分组缓解状态爆炸。
- 行为树通过条件、动作、控制节点和 Blackboard 组织可观察的反应式决策。