专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 软件架构设计

[dika记要] 游戏地图模块 的初步模型

发布时间:2011-06-20 02:11:38 文章来源:www.iduyao.cn 采编人员:星星草
[dika记录] 游戏地图模块 的初步模型

 erlang 游戏没有什么开源的,可以借鉴的并不多.可能很多处理得不好.但是也是可以自己尝试以下的.


rpg游戏的地图模块,是广播量压力最大的. 首要的目标是减少地图模块的压力.思考过几个模型.最后敲定了一个.



先从集群层面说明:

集群中的每一个节点都有完整的地图信息(地图进程),   把地图分块--单元模块(单元进程).  玩家进程在单元进程上标示自己位置.

在单元进程角度看:玩家进程有两种 :本节点玩家进程,其他节点玩家进程  .(为什么区分,我后说)



地图进程:M

单元进程:U

玩家进程有两种:   本节点玩家:LP     其它节点玩家:RP


初始化:

M初始化时候,把世界切分,创建全部的U.  U会初始化具体的信息(地形场景,npc位置之类)


工作流程:  (假设节点A,B)

玩家随机登录到一个节点A,那么这个玩家进程对于A来说是LP,对B来说是RP.

每个玩家都会有一个地点(上次退出坐标)注册到M,  M会把LP注册到对应的U上.



接下来要同步各节点中的信息:

U的信息要更新了(因为有个玩家加入,要告诉附近玩家),U会把信息汇总给M.  节点A的M会通知B节点的M,B节点的M再通知对应的U


接下来要通知附近玩家有人登录了:

假设这个玩家附近有两个人,一个的进程在A节点,一个的进程在B节点.

新增玩家在A节点,它发出信号给U,U通知了在节点A的那个玩家进程 LP.

同时A节点的U会汇总信息给A节点的M,      A节点的M会通知B节点的M,     B节点M通知B节点的U,     B节点的U会通知另外一个运行在节点B的玩家



简单概况就是:

地图进程负责节点间同步.   玩家进程与单元进程交互而且 单元进程之和属于同节点的玩家进程交互(U和LP).只发布属于同节点的玩家进程信息



为什么这样做?

我不知道行内怎么做法,但是我这个模型可以做到的是:

把广播信息放在节点内部.

夸节点的广播由地图进程管理,变成了单点通讯.

地图进程同步的策略可以调优.(按时间间隔,按信息量)


先这样做吧


~~by dp


友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: