中国教育在线 中国教育网 加入收藏 设为首页

游戏服务端逻辑模块处理框架

http://itpx.eol.cn  来源:  作者:CSDN  2010-06-03    

  当游戏服务端启动时,服务端会根据配置文件中的信息,加载各个游戏逻辑处理模块的动态链接库,然后调用模块的DllCreate函数对模块进行初始化。

  配置文件可以像下面这样:

  ModuleCount = 30

  Module1 = battlesys

  Module2 = equipsys

  Module3 = friendsys

  Module4 = shopsys

  Module5 = skilllsys

  ……

  模块中DllCreate函数的原型可能像这样:

  IModule* DllCreate()

  {

  return new CModule();

  }

  函数的返回值是IModule接口类的指针,这个接口类是每个游戏逻辑处理模块都需要提供的,并且在每个模块中都会有个继续自IModule接口类的具体类CModule。

  返回的IModule将被保存到游戏逻辑管理类CLogicManager中。

  std::map<IModule*> mapAllModule;

  等加载完全部的模块后,就调用IModule::Init函数。伪码如下:

  foreach  IModule* p  in mapAllModule

  p->Init((ILogicManager*)this);

  这个时候每个模块的初始化函数都将被调用,在初始化函数中,每个模块向ILogicManager中注册自己感兴趣的消息编号,并且保存到

  ILogicManager的std::hash_multimap<MSGID,IModule*> mapMsgHandler;

  完成初始化工作之后,每当服务端的网络模块收到消息后,会把消息传递给ILogicManager。然后ILogicManager在mapMsgHandler找到相关的IModule;

  IModule::RecvMessage(MSG* pMsg,Player* pPlayer);

  每个模块都将在CModule:: RecvMessage中收到自己感兴趣的消息。然后可以根据MSG中的typeid生成相应的消息处理器CXXXHandler,然后处理消息.

  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/deletex/archive/2010/03/10/5365545.aspx

推荐给好友    我要收藏    我要纠错    分享到

免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

内容推荐
eol.cn简介 | 联系方式 | 网站声明 | 京ICP证140769号 | 京ICP备12045350号 | 京公网安备 11010802020236号
版权所有 北京中教双元科技集团有限公司 EOL Corporation
Mail to: webmaster@eol.cn