01 / SYSTEM OVERVIEW
集群的聪明,来自分层
这套系统不是一个“万能算法”。它把感知、选择、资源控制、站位和移动拆开,每一层只回答一个问题,因此更容易调试,也更容易解释。
附近有谁
空间 Hash 或九宫格先缩小候选范围,再做精确判断。
谁更合适
距离、等待、类型、少量随机与历史惩罚形成偏好。
谁能进攻
最高偏好获得下一张攻击票,但仍受节奏限制。
其他怪做什么
Orbit、Threaten、Reposition 让等待不等于发呆。
怎样移动
RVO / ORCA 在局部范围内选择更安全的速度。
02 / INTERACTIVE WALKTHROUGH
用四只怪,看完整条决策链
这是概念演示,不代表项目生产参数。手动模式用于逐步调试;自动模式每两秒推进一步,到末尾停止。
SPATIAL QUERY
先缩小候选范围
空间结构只负责找出附近成员。进入查询范围不代表一定能攻击。
03 / FILTER · SCORE · SELECT
先问“能不能”,再问“合不合适”
过滤解决资格问题,评分解决偏好问题。把两者拆开,可以避免非法对象参与排序,也能让每个加分和扣分来源保持可解释。
距离越近通常越有优势;笔记中使用 1 / distance 强化近距离差异。
等待越久逐渐获得补偿,但需要上限,避免单一因素压倒策略。
刚攻击过的怪或角色类型受到惩罚,让机会能够温和轮换。
Filter:谁有资格?
Score:谁更合适?
Select:谁分最高?
Guard:现在真的能执行吗?
Execute:发放令牌,并记录历史。04 / SLOT · NON-ATTACK INTENT
槽位给秩序,意图给生命
槽位不是地图上的固定点,而是玩家周围动态生成的“座位编号”。编号尽量稳定,世界坐标跟随目标移动,把连续空间里的混乱竞争变成离散槽位分配。
沿目标外围游走和包围,改变观察角度,同时保持空间压力。
靠近并施压,但不真正出手,让玩家感到危险而不是同时受击。
离开不合适的位置,重新寻找更合理的槽位或准备点。
同样输入得到同样结果,输入变化才变化。它让队形带有自然感,却不会像普通随机那样每帧跳动。
05 / LOCAL AVOIDANCE
避让改变的是速度向量
RVO / ORCA 不负责决定最终目的地。它们预测继续使用某个速度是否会发生重叠,再从安全速度里选择一个尽量接近期望速度的结果。
路径层希望角色朝哪个方向、以多快速度移动。
附近角色、墙体、NavMesh 边界和角色半径排除危险速度。
选择最接近期望值的安全方向和大小,再交给表现层转向。
RVO / ORCA 解决“空间够时怎么绕”。窄门或走廊需要通行权、等待队列、优先级或重新寻路。
06 / ENGINEERING BOUNDARY
不要让一个算法承担所有责任
空间结构负责减少查询量,评分负责偏好,令牌负责稀缺资源,槽位负责秩序,局部避障负责短时移动安全。
NavMesh:哪里能走
A*:从起点到终点经过哪些区域
空间 Hash:附近有哪些对象
候选评分:谁更适合获得机会
攻击令牌:同一时刻允许多少怪进攻
槽位 / 意图:未进攻的怪站哪里、做什么
RVO / ORCA:下一小段时间选择什么速度
通道规则:空间不够时谁先走
物理碰撞:最后的穿模与重叠兜底内容依据本地笔记《集群 AI 槽位分配与非攻击意图》《启发式决策模型:怪物集群候选打分》《局部避障:RVO 与 ORCA》《空间划分:九宫格与四叉树》整理。演示只表达关系,不代替项目配置和生产实现。