aoi 九宫格 灯塔 区别

缘缘的问题:

有个我一直没想明白的问题,就是假如按照九宫格来作为玩家的视野范围的话,那在玩家人数填满视野,而且屏幕显示的区域大于了玩家的视野区域的话,玩家看到的现象不就是自己处在一个九宫格的中央吗?和玩家在游戏里面,认为视野应该是一个圆形不一样哦,而且实际上表现出来的还真就是一个圆形的感觉,这是怎么做到的呢。

例如我玩的坦克世界,他的视野就是一个圆,出了这个圈,我就看不到对方了对方围着我绕圈圈,我都能看到,但是有个特点就是,我看不到的对方,也能打到他,而且正常触发所有逻辑,除了我看不到

 

十字链表不适用的地方

来自缘缘的回答:

嗯,十字链表这个适用的游戏场景是假设对象经常静止或小幅移动,对于大幅移动和进出场景是小概率事件。相反情形,适合的算法就是九宫格,但是这种做法的一个小小缺点是客户端会收到一些屏幕外的对象消息,有点浪费带宽吧,如果我们把发消息做成批量加压缩的方式,这种浪费并不大。灯塔算法的特点是什么呢?

 

灯塔不适用的地方

我举了一个很不恰当的例子:

(比如玩解谜游戏,你到了一个房间,房间的灯被点亮,那个房间的视野你就可以看到,出了房间,灯熄灭,你看不到房间内的东西)

 

来自缘缘的回答:

唔,灯塔这个思路,感觉是引入了一个部落管理者的概念,而这个部落的管理范围,就是灯台的管理范围,这个范围可以根据实际情况进行自定义,就不是像九宫格一样固定死的管理范围,例如甚至因为主城玩家多,所以一个主城区域给一个灯塔,主城就有很多个灯塔,野外人少,一个灯塔就管一大块地图区域。这个管理者起到的作用,就是根据玩家目前能涉及到的区域,能直接找到每个管理者要到所有的关联对象,而不需要遍历大地图的所有玩家。但是有个缺点,就是当你的视野范围能触及到多个灯塔的时候,那么你需要处理的数据还是相当庞大的。所以灯塔比较适合的游戏场景,应该是玩家只能处于和看到单个灯塔的管理范围内,而不能涉及到多个灯塔的管理范围,例如你举例的房间解密游戏,玩家的可视范围和操作范围同时只有一个房间。但是aoi主要面对的是多人在线网游,房间解密游戏没有体现出多人的"多"来,因为一般房间游戏,人数都是有限的,而且不会太多,所以多人在线网游跑图的那种,还是九宫格和十字链表的设计更常用,灯塔存在太明显的缺陷了

 

来自参考链接1:

(细分:还可以分为“九宫格法”和“灯塔法”。“九宫格法”——每个区域中记录的是处在本区域的实体。“灯塔法”——每个区域中记录的是会观察到我的实体。“灯塔法”可以看做是“九宫格法”的进一步优化。)

 

 

波波的问题:

忽然想起 十字链越过大量聚集的点是不是只有遍历所有的聚集数据(例如大量玩家集中在x:2到x:3之间,一个实体从x:1移动到x:3)

来自缘缘的回答:

是啊,两种设计都不是为了避免这种玩家大量聚集的数据情况而设计的,这种大量玩家聚集在一个点上,要想优化,只能做分线处理,或者做格子人数上限的限制

 

总结精辟!专业!

 

 

相关讨论参考连接:

  1. http://www.mamicode.com/info-detail-2691887.html
  2. https://www.lmlphp.com/user/6329/article/item/343230/3
  3. https://zhuanlan.zhihu.com/p/201588990?utm_source=wechat_timeline
  4. https://www.cnblogs.com/silvermagic/p/9373414.html
  5. https://blog.codingnow.com/2012/03/dev_note_13.html
  6. https://blog.codingnow.com/2008/11/aoi_server.html
  7. https://blog.codingnow.com/2008/07/aoi.html
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值