0x00 回顧
上一篇文章中我們講到了游戲中的區(qū)服劃分酿傍,其中也提到了一些賬號(hào)登陸的流程。那這個(gè)小節(jié)我們好好梳理一下登陸的流程,以及登陸中遇到的一些異常情況,到最后的成功獲取角色列表餐禁。
還記得我們上個(gè)小節(jié)中講到的,賬號(hào)密碼驗(yàn)證成功后突照,登陸網(wǎng)關(guān)服務(wù)器(LoginGateServer)會(huì)獲取到這個(gè)ack的信息,并且向中心服務(wù)器(CenterServer)去查詢當(dāng)前賬號(hào)狀態(tài)氧吐,并由CenterServer分配下一階段的路由讹蘑。這里大概會(huì)遇到以下的幾種異常:
1,賬號(hào)異常
這里的異常一般是針對賬號(hào)安全所做的一些保護(hù)措施筑舅,可以做分級(jí)處理座慰。舉個(gè)例子,當(dāng)發(fā)現(xiàn)與上次登陸的城市不同的時(shí)候翠拣,或是與上次登陸的設(shè)備ID不同的時(shí)候版仔,就要給玩家發(fā)出安全確認(rèn)的請求,常見的如各種奇葩的驗(yàn)證碼误墓,或是手機(jī)pin碼蛮粮,游戲采取實(shí)名制之后,后者最為常見谜慌。
另一種異常是運(yùn)營中的常見手段然想,如封號(hào),或是禁言等欣范,當(dāng)然也可以針對角色來做变泄,那樣更靈活,不過以國內(nèi)的網(wǎng)游環(huán)境來講恼琼,一般就是直接封賬號(hào)妨蛹,沒啥好商量的。一個(gè)角色出現(xiàn)問題晴竞,同一個(gè)游戲世界內(nèi)的其他角色都會(huì)受到牽連蛙卤。
2,游戲人數(shù)擁擠噩死,沒有坑位
CenterServer會(huì)定時(shí)的去采集每一個(gè)與游戲服務(wù)器相連的網(wǎng)關(guān)服務(wù)器(GameGateServer)的負(fù)載情況表窘。如果有空閑的坑位典予,CenterServer會(huì)把新的鏈接路由過去。如果當(dāng)前游戲很火爆乐严,如開服的第一天瘤袖,很可能所有服務(wù)器都沒有坑位了,那么CenterServer就會(huì)把當(dāng)前的鏈接放到一個(gè)隊(duì)列里昂验,并且每隔一段時(shí)間會(huì)把當(dāng)前隊(duì)列的狀態(tài)廣播給所有的排隊(duì)玩家捂敌,大家最關(guān)心的就是前面還有多少人。
如果當(dāng)前賬號(hào)一切正常既琴,那么中心服務(wù)器會(huì)給當(dāng)前鏈接分配一個(gè)新的游戲網(wǎng)關(guān)GameGateServer占婉,包括這個(gè)服務(wù)器的ID,IP甫恩,Port逆济,用戶就會(huì)嘗試去鏈接該GameGateServer,連接成功后磺箕,原來與LoginGateServer的鏈接就會(huì)關(guān)閉掉奖慌,空出資源。
到此為止松靡,賬號(hào)處理的相關(guān)流程简僧,基本完畢,開始進(jìn)行游戲內(nèi)的數(shù)據(jù)加載雕欺。當(dāng)然第一步就是加載當(dāng)前游戲世界內(nèi)的所有角色信息岛马。
0x01 角色列表
我們回憶一下,在通常的角色列表界面屠列,我們能看到什么啦逆?
1,角色名稱
2笛洛,角色等級(jí)
3蹦浦,角色性別
4,角色職業(yè)
5撞蜂,角色裝備
6盲镶,角色時(shí)裝
這些是最基礎(chǔ)的,通常也是必須顯示的蝌诡,其他還有一些策劃會(huì)按照自己的習(xí)慣來要求的溉贿,各不相同,比如有:
1浦旱,角色工會(huì)
2宇色,角色VIP等級(jí)
3,角色寵物
4,角色坐騎
5宣蠕,...
那有哪些字段我們不需要呢例隆?
1,角色屬性
2抢蚀,角色貨幣信息
3镀层,角色好友信息
4,角色郵箱信息
5皿曲,...
類似于這種只有在游戲場景中才使用到的字段唱逢,在當(dāng)前界面并不需要展示,所以也不用添加在通訊協(xié)議中屋休。
針對上面所述坞古,我們應(yīng)該也能設(shè)計(jì)出前后臺(tái)的通訊協(xié)議了。
還有一些我們必需的字段劫樟,是我們看不到的痪枫,比如角色上次下線時(shí)所在的地圖ID,以及在該地圖的坐標(biāo)(X叠艳,Y奶陈,Z),角色再次上線虑绵,我們要把它擺放在原來的位置。當(dāng)然這是下一步的事情闽烙,到目前為止翅睛,我們已經(jīng)登陸成功,并且把角色列表成功顯示黑竞,本小節(jié)的任務(wù)也就完成了捕发。
0x03 總結(jié)
游戲的登陸邏輯不復(fù)雜,但需要注意的點(diǎn)會(huì)很瑣碎很魂,異常分級(jí)要做配置扎酷,避免硬編碼。最后遏匆,留一個(gè)小問題法挨,就是在游戲中什么時(shí)候需要重新驗(yàn)證登陸,什么時(shí)候只是切換服務(wù)器連接幅聘。這個(gè)問題考慮清楚了凡纳,對登陸流程也就沒什么問題了。下一個(gè)小節(jié)帝蒿,我們來探討一下角色場景加載荐糜。