群体与阵型:鸟群、小队和队形
Group & Formation Behaviors
没有领头的鸟群
一大群鸟在天上转弯,看起来像是有谁在指挥。其实没有:每只鸟只盯着身边的几只同伴,按几条简单的规则调整自己的方向和速度,整群的运动就「冒」了出来。这种现象叫涌现 (Emergence)。
游戏里的群体行为大致分两路:
- 涌现式:每个个体只遵守局部规则,适合鱼群、鸟群和背景人流;
- 编排式:由小队命令、阵型槽位、订单和风格来组织,适合需要战术配合的敌人。
Boids:三条局部规则
Craig Reynolds 在 1986 年前后提出了 Boids 模型。每个个体只看自己邻域里的同伴,遵守三条规则:
- 分离 (Separation):离同伴太近就躲开,免得挤成一团;
- 对齐 (Alignment):把方向调得和同伴差不多;
- 聚合 (Cohesion):往同伴们的中心靠。
没有哪条规则提到「整群往哪飞」,可三条规则一起作用,复杂的整体运动就从局部规则里涌现出来。在这个基础上,还可以再加上躲避障碍、跟随目标,用在动画和游戏的背景群体上。
动手:调一群 Boids
下面这群小三角形,每一只都只遵守上面三条规则。橙色那只画出了它的邻域(虚线圈)和它此刻看到的同伴(连线)。拖动滑块试试:
- 把分离拖到 0:同伴之间不再保持距离,很快挤成一团;
- 把对齐拖到 0:大家不再统一方向,群体显得乱糟糟;
- 把聚合拖到 0:没有了向心力,群体慢慢散开;
- 把邻域半径调小:每只看到的同伴变少,群体碎成很多小团。
橙色那只的虚线圈是它的邻域:它只看圈里的同伴。拖动权重,或者把某一项拖到 0,看群体怎么变。
Boids 和局部避障不是一回事
Boids 的「分离」是一种启发式的转向:靠得近就往反方向推一把。上一课的 RVO / ORCA 则是基于速度障碍的防撞,在论文条件下有安全保证。
人群导航里两者常常分工:阵型或流场负责给出每个个体的期望速度,ORCA 负责防撞。别把 Boids 的分离当成防撞来用,也别指望 ORCA 去保持队形。
战术小队:命令加个体判断
《游戏引擎架构》(GEA) 把协调、包抄、人群与鸟群这类群体行为,放在角色 AI 的最上层。和背景里的鸟群不同,战术小队需要编排。
Jeff Orkin 在《F.E.A.R.》里的做法相当轻:简单的小队行为——一起找掩体、一人压制其他人推进、两人一组搜索——向成员发出命令;每个成员再按自己目标的优先级决定服不服从,比如逃命的优先级就比前进高。玩家看到的「包抄」「钳形攻势」,很多时候并没有专门的包抄状态机,而是可用掩体的分布加上各自寻路的结果。
Damian Isla 在 Halo 2 里则给了设计师更多的手柄:小队 (Squad)、区域 (Area)——也就是一组射击位置——再加上订单 (Order) 和风格 (Style),让关卡设计师在高层上决定「这队人占哪片地方」「允不允许冲锋」。
阵型:槽位
阵型常见的实现是槽位:以领袖为参照,给每个成员分配一个固定的偏移,比如楔形、横队。每个成员把自己槽位的位置当作目标点,再交给寻路和局部避障走过去。
两个成员抢同一个槽位时,可以按优先级分配,也可以用效用分数来抢点。
在游戏里怎么用
取舍与常见的坑
小结与练习
- 群体行为有涌现式和编排式两路:前者靠局部规则,后者靠命令、区域、订单和阵型;
- Boids 的三条规则是分离、对齐、聚合,每个个体只看邻域里的同伴;
- 邻居查询要靠空间划分,否则是 ;Boids 的分离不等于局部避障的防撞;
- 阵型用相对领袖的槽位,槽位的位置再交给寻路和避障。
练习:在演示里找一组权重,让群体像「一大团慢慢转圈的鱼」;再找一组,让它像「受惊后四散的鸟」。想一想:如果要给这群鸟加一个「躲开鼠标」的规则,它该和三条规则怎么组合?
群体行为分两路:涌现式(Boids 分离/对齐/聚合)适合鱼群鸟群与背景人流;编排式(小队命令、阵型槽位、订单/风格)适合战术 AI。F.E.A.R. 表明复杂「侧翼」常可由个体目标 + 导航涌现,不必重型小队规划器。
Boids:三条局部规则
Reynolds(约 1986):每个体只看邻域内同伴——
- Separation 防挤;
- Alignment 齐朝向;
- Cohesion 靠拢质心。
复杂全局运动从局部规则涌现;朴素 O(n²),空间划分可近 O(n)。(Boids(笔记))
可加障碍躲避与目标追随,用于动画与游戏背景群。
与局部避障的关系
Boids 的分离力是启发式转向;RVO/ORCA 是基于速度障碍的防撞。人群导航常:阵型/流场给 preferred velocity,ORCA 做防撞(见 局部避障)。二者勿混为一谈。
战术小队(编排)
GEA 上层列举协调、侧翼、crowd/flocking。(GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记))
Orkin:简单小队行为(一起找掩体、一人压制他人推进、搜索分对)发命令;个体目标优先级可抗命(逃命 > 前进)。「侧翼/钳形」常是可用掩体分布 + 寻路结果,而非显式侧翼状态机。(Three States and a Plan: The A.I. of F.E.A.R.(笔记))
Isla:Squad + Area(firing positions) + Order/Style 让设计师高层导控「占哪片地、允不许冲锋」。(Handling Complexity in the Halo 2 AI(笔记))
阵型
常见实现:相对领袖的槽位偏移(楔形、横队);槽位目标点再进寻路/避障。槽位冲突用优先级或效用抢点。
取舍
| 涌现 Boids | 编排小队 |
|---|---|
| 实现轻、观感活 | 可控、可叙事 |
| 难下精确战术命令 | 作者成本高、易脚本味 |
| 适合数量大、个体弱 | 适合少量精英敌人 |
对话与广播可强化「有配合」的错觉(Orkin),仍服从 perception is reality。
出处
- Boids(笔记) Craig Reynolds Boids
- www.red3d.com/cwr/boids
- GEA4 Vol II §18.2.3 Artificial Intelligence(摘录笔记) GEA4(群体/flocking 作为上层能力)
- Three States and a Plan: The A.I. of F.E.A.R.(笔记) Orkin 小队与涌现侧翼
- Handling Complexity in the Halo 2 AI(笔记) Isla 小队 / Orders