记录一下 aoi 的 一些常识。
几个常规算法:九宫格、灯塔法、十字链表。
1. aoi 算法
aoi 最基本的做法是,每个实体维护一个视野列表,里面存放自己视野范围内的实体,实体的进入、离开、移动,都会造成各个实体的视野列表里的元素变更。
而视野列表的作用,就是当实体有属性变化或发生动作时,可以只通知视野列表里的实体。
而根据算法的不同,视野列表有可能挂在实体身上,也可能不挂。不挂的情况,一般是可以从另外地方计算得出,比如九宫格,每次需要的时候,就再算一遍。
1.1 九宫格
把地图进行网格化,分成很多个小格子,限制实体的视野在 9 个格子范围内,即以实体所在的格子为中心,周围加起来总共9个格子。
视野对象存在各个格子里,不存在实体的视野列表里。
进入:
移动:
离开:
1.2 灯塔法
1.3 十字链表
2. 对比
2.1 灯塔与九宫格的对比
灯塔相比于九宫格,每个玩家都维护了自己的视野对象列表。