目录
前言
AOI 算法是大型多人在线的游戏服务器中一个非常重要的基础模块,它很大程度上决定了服务器的运行效率。那么什么是AOI呢?AOI全称为Area Of Interest
,翻译过来叫感兴趣的区域
,通俗的讲是一个游戏对象在场景中的视野,这个视野可以大到整个场景,也可以小到周围几米;它能观察到视野中的其它对象的一举一动,同时它也在某些对象的视野中,也被这些对象观察着。
每个对象需要维护到两个集合:
-
观察者集合:就是关注我的对象集合,我的所有AOI行为都需要向这个集合发送事件,以便让他们观察到我的变化。
-
被观察者集合:就是被我关注的对象集合,理论上只要有
观察者集合
就够了,为什么还需要维护一个被观察者集合
呢?因为有时候想主动检查对象的状态,比如怪物AI会定时检查被观察者集合的距离,决定是否发动攻击;又比如释放技能需要遍历被观察者集合,判断它们是否命中。如果没有被观察者集合,