游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7503|回复: 5

也说aoi

[复制链接]

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2012-3-21 08:05:00 | 显示全部楼层 |阅读模式
刚巧这两天调整aoi就随便说说,
因为aoi是一个中间功能层“空间管理”的一个子功能,
具体如何实现依赖到底层是如何实现的,
aoi也体现了游戏的空间观,
像mudos,cs等就简单的使用房间的概念,
在有限的空间里遍历所有对象。
那样aoi就不单控制可见对象,
其实也就等同于空间的分配管理。
对于非房间类的网络游戏分两种方案,
大格子和小格子,所谓格子就是把空间划分为等距矩阵。
大格子就是矩阵的孔比较大,可以放入多个玩家,
小格子是孔比较小一般只放一个玩家,
小格子的代表是传奇,一个玩家占一个格子,可以把其他玩家挤出去。
大格子像是魔兽,玩家不占地盘可以重叠。
小格子的算法很容易理解,根据坐标遍历周围的格子找到一定范围的玩家。
大格子也差不多,遍历周围的格子找到玩家。
说到这各位看官可能恍然大悟,所谓aoi就是对"空间-玩家"的索引。
所要解决的问题是像玩家的可见对象?指定给定坐标范围的可见对象等等。
不画格子把所有玩家循环一遍不就知道了吗?
因为aoi使用非常频繁,每次循环几百,几千人实在吃不消。
举例来说,玩家移动后,要把同步信息更新到周围的玩家,
就要知道周围有哪些玩家,并把位置同步信息更新过去。
如果每次都先判断周围有哪些玩家这要循环一堆人,
然后再发生同步信息,可想而知工作量有多大,
例如跳起,就可能分为3个封包,升,落,停,都涉及位置移动和同步广播。
几乎1秒钟内一个跳起的动作就要3次的区域广播。
而几乎同样的时间,玩家可能在区域进入,离开。
区域内的玩家数量还是在不断的变化中。
虽然只是空间管理的子功能但却是对速度要求最高的部分,
aoi不单涉及到位置同步,还比如npc的攻击事件,玩家聊天,各种动作同步等等的上层功能。
更新aoi过程中还涉及到玩家对象的和其他对象在客户端的是否可见。
如果是动态的创建npc而不是在创建地图的时候创建npc,
aoi还担负着触发npc创建和删除的工作。
因为牵扯的东西太多,对效率要求也太高,我不觉得单独放到一个服上是好主意。
网络通信的压包,解包,即使是内网也很难接受。

9

主题

476

帖子

477

积分

中级会员

Rank: 3Rank: 3

积分
477
发表于 2012-3-21 13:38:00 | 显示全部楼层

Re:也说aoi

倒杯水慢慢来

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
 楼主| 发表于 2012-3-21 15:44:00 | 显示全部楼层

Re: Re:也说aoi

因为不想涉及具体的工作内容,可说的东西真不太多,
像小格子的寻路就可以用A+,大格子就得用NAVMesh,
NAVMesh是比较新的技术和A+完全不一样,
涉及到客户端模型的生成和服务器物理算法。
也可以大格子套小格子,当然是用房间的方法也可以,
比如把一个map当作一个房间,上限定在几十个人,
开发休闲类网游性能也是没有问题的。
并没有说确定哪个技术更好,只有合适的和更合适的。
heery1234: Re:也说aoi

倒杯水慢慢来

4

主题

1111

帖子

1498

积分

金牌会员

Rank: 6Rank: 6

积分
1498
发表于 2012-3-21 20:27:00 | 显示全部楼层

Re:也说aoi

导航网格和a star差不多吧,只不过是多了一个生成导航网格

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
 楼主| 发表于 2012-3-22 14:35:00 | 显示全部楼层

Re: Re:也说aoi

嗯嗯都差不多吧,寻路是能不用就不用,因为cpu消耗太大,
但aoi无论在3D还是2D模式下都涉及到遮挡的问题,
技能穿越房子总不是好事情,所以最基本的物理碰撞检测还是要有的。
当然是在aoi之前检查碰撞,还是aoi之后检查碰撞,就要看仁者见仁,智者见智。
好在物理碰撞检测技术是比较成熟的,很多开源库可以选择。
不过aoi一旦定性选择那种技术做一般是不会再半路更改,
更换中间层的代价是非常大,蛋痛的话也可以几个技术一起用,
navmesh看起来就和格子的关系不大,不象a+依赖于格子。
像mangos比较特殊,虽然是大格子,但实际上是由Gird和Cell组成,
在大格子的外面还有一个更大的格子,Gird的划分更多的代表一个区域的地带,
比如丘陵啊,平地啊,[em7]一层就很复杂,二层就容易被搞晕。
SITT: Re:也说aoi

导航网格和a star差不多吧,只不过是多了一个生成导航网格

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
 楼主| 发表于 2012-3-24 00:33:00 | 显示全部楼层

Re:也说aoi

虽说有点自私,从另一方讲我现在考虑的东西也不见得对,
不过开发过程中遇到那些问题和概念拿出来也给大家说说,
至于最后如何解决的仁者见仁,智者见智。
网游服务器就是一个数据洪流,
但从广义上来说任何程序也都可以这么说。
每段数据有两属性,时效和数据本身。
以aoi的坐标数据为例,
这个数据是指玩家放入世界时产生,离开世界时无效。
宽泛一点来说,这个数据随玩家的进入产生,玩家的离开而无效。
场景虽然使用这段数据但并没有随着数据时间属性而共同消亡。
场景数据时效的产生以第一进入场景的玩家开始,
到最后一个离开场景的玩家结束。
问题:如何根据数据的时效来对网游的数据洪流进行管理?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 16:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表