本文主要是介绍KBEngine源码剖析1——角色账号登录和管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
写在前面
登录时序图
流程分析
胡言乱语
写在前面
这个系列的博客,主要记录自己看CBE(原名KBE)源码的一些阅读笔记和心得,个人在看源码前比较喜欢先那那套源码做出个有可见性效果的产品demo来,然后根据demo在逐渐深入源码,所以在此之前先做了个联机版坦克大战,想先看看CBE怎么做游戏服务器的具体业务功能的,可以先瞅瞅之前的那三篇博客。
基于ComblockEngine+Unity的联机版坦克大战(一)
基于ComblockEngine+Unity的联机版坦克大战(二)
基于ComblockEngine+Unity的联机版坦克大战(三)
我主要是为了看源码,实现,所以后续的博客,我应该都主要写自己的源码阅读情况了~
登录时序图
先贴上一张新账号登录的时序图。
流程分析
一次登陆请求,从客户端发起,到服务器响应,涉及到至少5个进程间的交互通信。
Client最先向Loginapp发起登录请求
具体代码参见Loginapp::login
Loginapp会对账号名、消息包体数据做基本的合法性验证。
由于在之后的流程中需要dbmgr来完成角色数据从db的读取,以及baseappmgr和baseapp的响应,所以,在此,必须保证dbmgr和baseappmgr进程已经启动完毕。
对于这些进程的状态数据,CBE都是由Components这个单例类来维护。
Components::ComponentInfos* baseappmgrinfos = Components::getSingleton().getBaseappmgr();
if(baseappmgrinfos == NULL || baseappmgrinfos->pChannel == NULL || baseappmgrinfos->cid == 0)
{
datas = "";
_loginFailed(pChannel, loginName, SERVER_ERR_SRV_NO_READY, datas, true);
s.done();
return;
}
这篇关于KBEngine源码剖析1——角色账号登录和管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!