GAME AI / MONSTER CLUSTER

怪物不是一群独立单位

集群 AI 的重点不是让每只怪都变聪明,而是让群体共享秩序:先缩小候选范围,再决定谁进攻,最后让没有攻击权的怪物继续包围、施压和避让。

空间粗筛只看附近成员
过滤与打分资格和偏好分开
攻击令牌限制同时进攻数量
槽位与意图等待也保持压力
局部避障选择更安全的速度

集群的聪明,来自分层

这套系统不是一个“万能算法”。它把感知、选择、资源控制、站位和移动拆开,每一层只回答一个问题,因此更容易调试,也更容易解释。

FILTER

附近有谁

空间 Hash 或九宫格先缩小候选范围,再做精确判断。

SCORE

谁更合适

距离、等待、类型、少量随机与历史惩罚形成偏好。

TOKEN

谁能进攻

最高偏好获得下一张攻击票,但仍受节奏限制。

INTENT

其他怪做什么

Orbit、Threaten、Reposition 让等待不等于发呆。

MOVE

怎样移动

RVO / ORCA 在局部范围内选择更安全的速度。

用四只怪,看完整条决策链

这是概念演示,不代表项目生产参数。手动模式用于逐步调试;自动模式每两秒推进一步,到末尾停止。

MONSTER CLUSTER · CONCEPT DEBUGGERSTEP 01 / 05
PLAYER
A附近成员
B附近成员
C附近成员
D附近成员

SPATIAL QUERY

先缩小候选范围

空间结构只负责找出附近成员。进入查询范围不代表一定能攻击。

MODE · MANUAL

先问“能不能”,再问“合不合适”

过滤解决资格问题,评分解决偏好问题。把两者拆开,可以避免非法对象参与排序,也能让每个加分和扣分来源保持可解释。

最终分 = 距离优势 + 等待补偿 + 类型偏好 + 少量随机 − 最近攻击惩罚 − 最近角色惩罚
DISTANCE / 距离

距离越近通常越有优势;笔记中使用 1 / distance 强化近距离差异。

WAIT / 等待

等待越久逐渐获得补偿,但需要上限,避免单一因素压倒策略。

HISTORY / 历史

刚攻击过的怪或角色类型受到惩罚,让机会能够温和轮换。

Filter:谁有资格?
Score:谁更合适?
Select:谁分最高?
Guard:现在真的能执行吗?
Execute:发放令牌,并记录历史。

槽位给秩序,意图给生命

槽位不是地图上的固定点,而是玩家周围动态生成的“座位编号”。编号尽量稳定,世界坐标跟随目标移动,把连续空间里的混乱竞争变成离散槽位分配。

ORBIT

沿目标外围游走和包围,改变观察角度,同时保持空间压力。

THREATEN

靠近并施压,但不真正出手,让玩家感到危险而不是同时受击。

REPOSITION

离开不合适的位置,重新寻找更合理的槽位或准备点。

STABLE RANDOM / 稳定随机

同样输入得到同样结果,输入变化才变化。它让队形带有自然感,却不会像普通随机那样每帧跳动。

避让改变的是速度向量

RVO / ORCA 不负责决定最终目的地。它们预测继续使用某个速度是否会发生重叠,再从安全速度里选择一个尽量接近期望速度的结果。

DESIRED VELOCITY

路径层希望角色朝哪个方向、以多快速度移动。

CONSTRAINTS

附近角色、墙体、NavMesh 边界和角色半径排除危险速度。

SAFE VELOCITY

选择最接近期望值的安全方向和大小,再交给表现层转向。

IMPORTANT LIMIT

RVO / ORCA 解决“空间够时怎么绕”。窄门或走廊需要通行权、等待队列、优先级或重新寻路。

不要让一个算法承担所有责任

空间结构负责减少查询量,评分负责偏好,令牌负责稀缺资源,槽位负责秩序,局部避障负责短时移动安全。

NavMesh:哪里能走
A*:从起点到终点经过哪些区域
空间 Hash:附近有哪些对象
候选评分:谁更适合获得机会
攻击令牌:同一时刻允许多少怪进攻
槽位 / 意图:未进攻的怪站哪里、做什么
RVO / ORCA:下一小段时间选择什么速度
通道规则:空间不够时谁先走
物理碰撞:最后的穿模与重叠兜底

内容依据本地笔记《集群 AI 槽位分配与非攻击意图》《启发式决策模型:怪物集群候选打分》《局部避障:RVO 与 ORCA》《空间划分:九宫格与四叉树》整理。演示只表达关系,不代替项目配置和生产实现。

BACK TO KNOWLEDGE MAP继续选择下一个可视化专题
返回知识地图 →