我自闲庭信步,悠然自得,不亦乐乎.

                                       ------ Keep life simple
GMail/GTalk/MSN:huyi.zg@gmail.com

 

About MMORPG的逻辑层构架

Ghost Cheng “为了暖场”而提出的议题,引发了大家热烈讨论。
Hi all:

这两天maillist好像有点冷清了,我来立个靶子,大家讨论一下MMORPG的逻辑层构架。

所谓逻辑层构架,就是指MMORPG的跑地图、聊天转发、好友上线通知、交易事件等,
比如玩家或NPC跑地图的时候,以什么样的方式通知场景周围的玩家、转发聊天对话与好友上线通知的时候,如何才能尽量不去遍历玩家链表。

先说说我的想法,我处理的方式是基于EventEngine的,所谓EventEngine其实就是一个独立的线程,维护一个Event队列,
当对列中有事件的时候就处理。这里的事件包括:玩家动作(移动、攻击)、NPC动作(移动、攻击)、聊天、上线、下线等。

当数据包处理线程,收到玩家上线的数据包,就提交一个事件到队列,
同样,玩家发来攻击、聊天的数据后,也提交一个事件到队列。
NPC的事件触发时间,由另一个线程计算,一旦这个NPC到了需要移动或攻击的时候,就提交一个事件到队列。

这样确保所有的资源,都只有EventEngine一个线程访问,比如地图上的玩家链表等。

我遇到的问题:目前主要是聊天、或好友上线,这些事件处理的时候,需要遍历整个玩家链表,
这个链表就是网络层的session list,访问的时候需要锁定,如果有大量锁定遍历的操作,性能感觉会比较底,
不知道大家有什么好的方案?

希望大家踊跃发言哦!

http://groups.google.com/group/dev4server/browse_thread/thread/de6320c499f6dc3d/becf3963881399c8#becf3963881399c8

posted on 2006-03-07 11:28 HuYi 阅读(321) 评论(0)  编辑 收藏 引用 所属分类: 邮件列表精选


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

统计

常用链接

留言簿(12)

随笔分类

相册

收藏夹

友情链接

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜