记录一下 aoi 的 一些常识。

几个常规算法:九宫格、灯塔法、十字链表。


1. aoi 算法

aoi 最基本的做法是,每个实体维护一个视野列表,里面存放自己视野范围内的实体,实体的进入、离开、移动,都会造成各个实体的视野列表里的元素变更。

而视野列表的作用,就是当实体有属性变化或发生动作时,可以只通知视野列表里的实体。

而根据算法的不同,视野列表有可能挂在实体身上,也可能不挂。不挂的情况,一般是可以从另外地方计算得出,比如九宫格,每次需要的时候,就再算一遍。


1.1 九宫格

把地图进行网格化,分成很多个小格子,限制实体的视野在 9 个格子范围内,即以实体所在的格子为中心,周围加起来总共9个格子。

视野对象存在各个格子里,不存在实体的视野列表里。

进入:

移动:

离开:


1.2 灯塔法


1.3 十字链表


2. 对比

2.1 灯塔与九宫格的对比

灯塔相比于九宫格,每个玩家都维护了自己的视野对象列表。


3. 拓展阅读


4. 参考