群体 AI指挥官与单位的层级决策架构一、一百个 AI 各自为战的灾难RTS 与大型战斗场景里常需同时驱动几十上百个 AI 单位。若每个单位都独立跑一套完整决策感知、规划、执行不单算力爆炸。行为也会混乱——各单位互相踩踏、抢同一目标、阵型全无。玩家盼着的是一支军队而非一百个散兵。群体 AI 的核心思路是层级化少数指挥官节点做宏观决策进攻、撤退、分兵大量单位节点只执行上级下达的简单指令。决策从人人都聪明变成少数聪明、多数听话既省算力又出阵型。二、指挥官 - 单位的层级决策流群体决策的层级分发流程如下全局状态先汇聚到指挥官指挥官产出宏观意图并分解到小队小队组长负责阵型与局部路径。单位只做最底层的移动与攻击执行。状态逐级上报形成闭环层级越深单节点决策越简单。三、生产级群体决策与指令分发实现下面是一段 C# 示例展示指挥官如何向单位广播简化指令单位只执行不规划。public enum Order { Hold, Advance, Attack, Retreat } public class Commander {private ListUnit units new(); // 指挥官每若干帧决策一次而非每帧降低宏观开销 public void Tick(float threatLevel) { Order o threatLevel 0.7f ? Order.Retreat : Order.Advance; foreach (var u in units) u.AssignOrder(o); // 广播简化指令 }}public class Unit {private Order order Order.Hold;public void AssignOrder(Order o) { order o; } // 只接收不质疑public void Tick() {switch (order) {case Order.Advance: MoveForward(); break;case Order.Attack: AttackNearest(); break;case Order.Retreat: MoveBack(); break;default: Idle(); break;}}private void MoveForward() { /* 底层移动含局部避障/ }private void AttackNearest() { /选最近目标攻击/ }private void MoveBack() { /后撤 */ }private void Idle() { }}这段代码的关键契约指挥官低频决策每若干帧或事件触发单位高频执行宏观开销被压到极低单位只接收简化指令、不做宏观规划行为一致且可预测。生产环境应把指挥官决策也建模为行为树或 GOAP使其宏观意图可解释可调单位执行层需保留局部避障避免群体在推进时互相卡死。指令分发宜批量广播并用 dirty 标记避免每帧重发未变化的指令。 指挥官节点的可靠性直接决定整支队伍的存续。一旦指挥官阵亡或掉线若没有接管机制下属单位会瞬间失去上级指令而陷入各自为战。稳妥的做法是预设副指挥选举当主指挥官失联超过阈值按距离或等级自动晋升新的指挥官。并把未完成任务重新分配下去。指令分发也要做去重避免新旧指挥官在同一帧下发冲突命令导致单位行为抖动。层级越深接管链路越要短否则指挥真空期会被玩家明显感知。 ## 四、指挥官瓶颈、阵型失真与可控性的代价 群体 AI 的代价先说集中在指挥官节点所有宏观决策汇聚于此一旦指挥官逻辑出错或卡顿。整个群体瞬间失智。指挥官必须高可靠、可热更且其决策需可观测否则群体行为异常时极难排查。单指挥官也是单点瓶颈超大规模时可分区域设多个指挥官并协调。 阵型失真是常见问题上层只下推进指令单位各自走直线会挤成一团或拉成直线丢失阵型美感。真实阵型需在单位层做编队偏移按小队槽位站位这增加了单位层复杂度。收尾是可控性层级化后玩家或策划想精确控制某个单位变得困难。因为微观行为被上层意图覆盖。因此需要支持临时接管机制让个别单位可被单独指令覆盖群体意图。 所以落地建议指挥官高可靠可热更可观测、超大规模分区域单位层做编队偏移保阵型支持临时接管覆盖群体意图指令批量广播加 dirty 标记。 ## 五、总结 群体 AI 通过指挥官-单位的层级决策把人人聪明降为少数聪明、多数执行。在省算力的同时产出阵型一致的群体行为。其代价是指挥官节点的单点风险与可观测压力、单位层阵型失真的修正成本、以及层级化对单个单位可控性的削弱。工程落地须保证指挥官高可靠、可热更、可观测超大规模分区域部署单位层做编队偏移保阵型并提供临时接管机制允许个别单位覆盖群体意图。指令应批量广播并以 dirty 标记避免无效重发。