中EN
精修课概念页

群体与阵型:鸟群、小队和队形

Group & Formation Behaviors

更新于 2026-10-19 约 13 分钟游戏AI群体阵型Boids小队flocking

没有领头的鸟群

一大群鸟在天上转弯,看起来像是有谁在指挥。其实没有:每只鸟只盯着身边的几只同伴,按几条简单的规则调整自己的方向和速度,整群的运动就「冒」了出来。这种现象叫涌现 (Emergence)。

游戏里的群体行为大致分两路:

  • 涌现式:每个个体只遵守局部规则,适合鱼群、鸟群和背景人流;
  • 编排式:由小队命令、阵型槽位、订单和风格来组织,适合需要战术配合的敌人。

Boids:三条局部规则

Craig Reynolds 在 1986 年前后提出了 Boids 模型。每个个体只看自己邻域里的同伴,遵守三条规则:

  1. 分离 (Separation):离同伴太近就躲开,免得挤成一团;
  2. 对齐 (Alignment):把方向调得和同伴差不多;
  3. 聚合 (Cohesion):往同伴们的中心靠。
分离:离太近的躲开对齐:朝大家的方向转聚合:往邻居的中心靠(× 是中心)
三条规则都只看虚线圈(邻域)里的同伴。橙色是正在做决定的那一只,橙色箭头是这条规则给它的转向。

没有哪条规则提到「整群往哪飞」,可三条规则一起作用,复杂的整体运动就从局部规则里涌现出来。在这个基础上,还可以再加上躲避障碍、跟随目标,用在动画和游戏的背景群体上。

动手:调一群 Boids

下面这群小三角形,每一只都只遵守上面三条规则。橙色那只画出了它的邻域(虚线圈)和它此刻看到的同伴(连线)。拖动滑块试试:

  • 把分离拖到 0:同伴之间不再保持距离,很快挤成一团;
  • 把对齐拖到 0:大家不再统一方向,群体显得乱糟糟;
  • 把聚合拖到 0:没有了向心力,群体慢慢散开;
  • 把邻域半径调小:每只看到的同伴变少,群体碎成很多小团。
Boids:分离、对齐、聚合

橙色那只的虚线圈是它的邻域:它只看圈里的同伴。拖动权重,或者把某一项拖到 0,看群体怎么变。

演示里的权重、速度上限和转向力上限都是为了好看自己取的示意值,不是 Reynolds 或其他资料给出的参数。

Boids 和局部避障不是一回事

Boids 的「分离」是一种启发式的转向:靠得近就往反方向推一把。上一课的 RVO / ORCA 则是基于速度障碍的防撞,在论文条件下有安全保证。

人群导航里两者常常分工:阵型或流场负责给出每个个体的期望速度,ORCA 负责防撞。别把 Boids 的分离当成防撞来用,也别指望 ORCA 去保持队形。

战术小队:命令加个体判断

《游戏引擎架构》(GEA) 把协调、包抄、人群与鸟群这类群体行为,放在角色 AI 的最上层。和背景里的鸟群不同,战术小队需要编排。

Jeff Orkin 在《F.E.A.R.》里的做法相当轻:简单的小队行为——一起找掩体、一人压制其他人推进、两人一组搜索——向成员发出命令;每个成员再按自己目标的优先级决定服不服从,比如逃命的优先级就比前进高。玩家看到的「包抄」「钳形攻势」,很多时候并没有专门的包抄状态机,而是可用掩体的分布加上各自寻路的结果。

Damian Isla 在 Halo 2 里则给了设计师更多的手柄:小队 (Squad)、区域 (Area)——也就是一组射击位置——再加上订单 (Order) 和风格 (Style),让关卡设计师在高层上决定「这队人占哪片地方」「允不允许冲锋」。

阵型:槽位

阵型常见的实现是槽位:以领袖为参照,给每个成员分配一个固定的偏移,比如楔形、横队。每个成员把自己槽位的位置当作目标点,再交给寻路和局部避障走过去。

领袖槽位
楔形阵型:黄色是领袖,虚线圈是相对领袖固定偏移的槽位。成员把各自的槽位当作目标点,再交给寻路和避障走过去。

两个成员抢同一个槽位时,可以按优先级分配,也可以用效用分数来抢点。

在游戏里怎么用

取舍与常见的坑

小结与练习

  • 群体行为有涌现式和编排式两路:前者靠局部规则,后者靠命令、区域、订单和阵型;
  • Boids 的三条规则是分离、对齐、聚合,每个个体只看邻域里的同伴;
  • 邻居查询要靠空间划分,否则是 O(n2)O(n^2);Boids 的分离不等于局部避障的防撞;
  • 阵型用相对领袖的槽位,槽位的位置再交给寻路和避障。

练习:在演示里找一组权重,让群体像「一大团慢慢转圈的鱼」;再找一组,让它像「受惊后四散的鸟」。想一想:如果要给这群鸟加一个「躲开鼠标」的规则,它该和三条规则怎么组合?

  1. Boids(笔记) Craig Reynolds Boids
  2. www.red3d.com/cwr/boids
  3. GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记) GEA4(群体/flocking 作为上层能力)
  4. Three States and a Plan: The A.I. of F.E.A.R.(笔记) Orkin 小队与涌现侧翼
  5. Handling Complexity in the Halo 2 AI(笔记) Isla 小队 / Orders

相关页面

游戏开发局部避障Local Collision Avoidance局部避障处理「附近智能体/动态障碍怎么挤得开」:在全局路径给出的期望速度上,用 VO / RVO / ORCA 等选一个短期内不撞的速度。它不替代 A/NavMesh,也不能独自解决大尺度绕路。游戏开发寻路与导航理论基础Pathfinding & Navigation Theory寻路是在图上找代价可接受的路径:BFS / Dijkstra / A 是同一家族;NavMesh、路点、格子是不同的图构建方式。分层(走廊↔房间、扇区↔网格)与「全局路径 + 局部避障」把大规模导航拆开。A 本身不管编队、动态挤让与动画根运动。游戏开发游戏 AI 决策管线Game AI Sense-Decide-Act Pipeline游戏 AI(与生成式 DNN 不同)通常按 感知 → 决策 → 执行 分层:底层是寻路、感知与记忆;中层是角色控制(对接动画/物理);上层是目标与决策(行为树、效用、规划等)。GEA 强调「perception is reality」——玩家看不见的内部聪明不算数。游戏开发目标导向行动规划 GOAPGoal-Oriented Action PlanningGOAP 把「如何满足目标」交给运行时规划:行动带前提与效果,用 A 在世界状态空间搜索最低成本动作序列。F.E.A.R. 用极薄 FSM(Goto/Animate)执行计划,换来目标与行动解耦、行为可叠加、失败可重规划。游戏开发行为树原理Behavior Tree Fundamentals行为树 (Behavior Tree, BT) 用层级节点控制决策流:叶子做动作或条件,Sequence / Selector 等组合节点决定子节点如何推进;节点返回 Success / Failure / Running,从而自然跨多帧。相对 FSM,BT 更易用优先级回退表达「失败了还有 Plan B」。游戏开发 · UE5AI 感知、EQS 与导航AI Perception, EQS & NavigationAI 的感官层由三块组成:AI 感知 (AI Perception) 组件挂在 AIController 上监听视觉/听觉/伤害等刺激并更新黑板;环境查询系统 (EQS) 用生成器产生候选项、先过滤后打分,回答「哪里最好」;导航系统从碰撞几何生成分瓦片的导航网格 (NavMesh),按多边形代价寻路,并提供 RVO 与 Detour Crowd 避让。它们为行为树/StateTree 提供输入。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原