游戏服务端逻辑模块处理框架
2010-03-10 16:36
253 查看
当游戏服务端启动时,服务端会根据配置文件中的信息,加载各个游戏逻辑处理模块的动态链接库,然后调用模块的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,然后处理消息.
配置文件可以像下面这样:
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,然后处理消息.
相关文章推荐
- 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器
- [py]彻底细究web框架的wsgi+逻辑处理模块
- 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
- android游戏开发框架libgdx的使用(十四)—TiledMap中视角完善和障碍物处理
- [游戏]服务端的逻辑分服与物理分服
- 传奇源码分析-客户端(游戏逻辑处理源分析五 服务器端响应)
- WeaveSocket框架-Unity太空大战游戏-服务端-1
- WeaveSocket框架-Unity太空大战游戏-服务端-1
- android游戏开发框架libgdx的使用(十四)—TiledMap中视角完善和障碍物处理
- 基于Lua的游戏服务端框架简介
- 12.8pygame游戏开发框架(8):游戏逻辑
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
- Thrift框架服务端并发处理模式的java示例
- 传奇源码分析-客户端(游戏逻辑处理源分析一)
- 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
- Golang网络游戏协议处理框架
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
- 开源分享 Unity3d客户端与C#分布式服务端游戏框架
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
- [Golang]网络游戏协议处理框架