欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種游戲用戶管理方法、游戲服務(wù)器及系統(tǒng)與流程

文檔序號(hào):11186113閱讀:1089來(lái)源:國(guó)知局
一種游戲用戶管理方法、游戲服務(wù)器及系統(tǒng)與流程

本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)及游戲領(lǐng)域,特別涉及一種游戲用戶管理方法、游戲服務(wù)器及系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來(lái)越多的游戲公司將目光從鎖定在網(wǎng)游市場(chǎng),開(kāi)發(fā)一款熱門(mén)的網(wǎng)絡(luò)游戲成為了很多游戲公司的首要目標(biāo)。而在搭建網(wǎng)絡(luò)游戲系統(tǒng)時(shí),通常是通過(guò)客戶端-服務(wù)器的形式來(lái)實(shí)現(xiàn)的。當(dāng)用戶打開(kāi)游戲客戶端中安裝的游戲軟件進(jìn)入游戲時(shí),相當(dāng)于登錄了游戲服務(wù)器,此時(shí)游戲服務(wù)器即會(huì)為用戶創(chuàng)建相關(guān)進(jìn)程,在用戶玩游戲的過(guò)程中,游戲客戶端與游戲服務(wù)器之間持續(xù)存在交互行為,如發(fā)送請(qǐng)求、傳遞數(shù)據(jù)等,以保持?jǐn)?shù)據(jù)的實(shí)時(shí)性,而這些與用戶關(guān)聯(lián)的交互行為會(huì)被上述進(jìn)程加以記錄。

就目前的游戲用戶管理系統(tǒng)而言,當(dāng)用戶進(jìn)入游戲并登錄到對(duì)應(yīng)的游戲服務(wù)器后,游戲服務(wù)器為用戶創(chuàng)建一個(gè)進(jìn)程,此后該進(jìn)程直到用戶退出游戲都一直存在,而一旦用戶退出游戲則隨即刪除該進(jìn)程。一般情況下,游戲客戶端與游戲服務(wù)器之間的數(shù)據(jù)傳送均是主動(dòng)進(jìn)行的,即游戲客戶端可主動(dòng)向游戲服務(wù)器發(fā)送數(shù)據(jù),游戲服務(wù)器也可以非依游戲客戶端請(qǐng)求,主動(dòng)向游戲客戶端推送消息,如活動(dòng)通知、好友郵件等。然而,過(guò)多的數(shù)據(jù)頻繁交互會(huì)給游戲服務(wù)器以及游戲客戶端帶來(lái)額外的負(fù)擔(dān),且當(dāng)用戶在非wi-fi環(huán)境下玩游戲時(shí),網(wǎng)絡(luò)中大量傳輸?shù)臄?shù)據(jù)量會(huì)造成數(shù)據(jù)流量的過(guò)多消耗。



技術(shù)實(shí)現(xiàn)要素:

為此,本發(fā)明提供一種游戲用戶管理方案,以力圖解決或者至少緩解上面存在的問(wèn)題。

根據(jù)本發(fā)明的一個(gè)方面,提供一種游戲用戶管理方法,適于在游戲用戶管理系統(tǒng)所分配的游戲服務(wù)器中執(zhí)行,游戲用戶管理系統(tǒng)包括多個(gè)游戲服務(wù)器及數(shù)據(jù)庫(kù)服務(wù)器,每個(gè)游戲服務(wù)器分別與多個(gè)游戲客戶端及數(shù)據(jù)庫(kù)服務(wù)器通信連接,數(shù)據(jù)庫(kù)服務(wù)器中存儲(chǔ)有多個(gè)用戶初始信息,用戶初始信息分別對(duì)應(yīng)于不同的游戲用戶,該方法包括如下步驟:接收游戲客戶端發(fā)送的登錄請(qǐng)求,登錄請(qǐng)求包括登錄驗(yàn)證信息;根據(jù)登錄驗(yàn)證信息進(jìn)行登錄驗(yàn)證,若驗(yàn)證成功,則獲取上次退出信息,根據(jù)上次退出信息判斷上次退出游戲時(shí)是否存在異常情形;若上次退出游戲時(shí)不存在異常情形,則直接創(chuàng)建與游戲客戶端對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,消息隊(duì)列適于存儲(chǔ)游戲服務(wù)器生成的消息;從數(shù)據(jù)庫(kù)服務(wù)器獲取與游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將用戶當(dāng)前信息發(fā)送至游戲客戶端;接收并處理游戲客戶端上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息;根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列;響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,還包括:接收游戲客戶端發(fā)送的退出請(qǐng)求,退出請(qǐng)求包括狀態(tài)標(biāo)識(shí),狀態(tài)標(biāo)識(shí)用于標(biāo)記本次退出游戲時(shí)是否存在異常情形將用戶當(dāng)前信息回寫(xiě)到數(shù)據(jù)庫(kù)服務(wù)器,以更新對(duì)應(yīng)的用戶初始信息;若本次退出游戲時(shí)不存在異常情形,則直接刪除虛擬進(jìn)程;若本次退出游戲時(shí)存在異常情形,則將虛擬進(jìn)程保留第一時(shí)間閾值后再進(jìn)行刪除。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,登錄驗(yàn)證信息包括登錄請(qǐng)求時(shí)間和游戲用戶標(biāo)識(shí),上次退出信息包括上次退出時(shí)間、上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)和上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí),該方法還包括:若上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)表明存在異常情形,則判斷登錄請(qǐng)求時(shí)間與上次退出時(shí)間的時(shí)間間隔是否大于第一時(shí)間閾值;若時(shí)間間隔不大于第一時(shí)間閾值,則通過(guò)服務(wù)器標(biāo)識(shí)查找到上次登錄游戲時(shí)分配的游戲服務(wù)器,獲取該游戲服務(wù)器中與游戲用戶標(biāo)識(shí)關(guān)聯(lián)的最新的用戶當(dāng)前信息,刪除該游戲服務(wù)器保留的與游戲用戶標(biāo)識(shí)對(duì)應(yīng)的虛擬進(jìn)程,并基于該用戶當(dāng)前信息在當(dāng)前分配的游戲服務(wù)器中重新創(chuàng)建關(guān)聯(lián)的虛擬進(jìn)程。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,還包括:若時(shí)間間隔大于第一時(shí)間閾值,則直接創(chuàng)建與游戲客戶端對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,游戲服務(wù)器中存儲(chǔ)有游戲配置數(shù)據(jù),接收并處理游戲客戶端上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息的步驟包括:接收游戲客戶端上報(bào)的操作數(shù)據(jù);根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息,對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn);若校驗(yàn)成功,則對(duì)操作數(shù)據(jù)進(jìn)行處理,以生成對(duì)應(yīng)的消息。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,操作數(shù)據(jù)包括道具使用信息、通關(guān)耗時(shí)、傷害量、生命值、攻擊強(qiáng)度、金幣數(shù)量和障礙物信息中至少一種。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,操作數(shù)據(jù)包括道具使用信息,道具使用信息包括道具標(biāo)識(shí)和與其關(guān)聯(lián)的已使用道具數(shù)量,用戶當(dāng)前信息包括道具標(biāo)識(shí)和與其對(duì)應(yīng)的剩余道具數(shù)量,游戲配置數(shù)據(jù)包括與道具標(biāo)識(shí)關(guān)聯(lián)的道具使用數(shù)量上限值,根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息,對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn)的步驟包括:對(duì)每一個(gè)道具,根據(jù)其道具標(biāo)識(shí)獲取該道具的已使用道具數(shù)量、剩余道具數(shù)量和道具使用數(shù)量上限值;判斷已使用道具數(shù)量是否滿足小于道具使用數(shù)量上限值、且小于剩余道具數(shù)量的條件;若滿足條件,則判斷校驗(yàn)成功,否則判斷校驗(yàn)失敗。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,對(duì)操作數(shù)據(jù)進(jìn)行處理,以生成對(duì)應(yīng)的消息的步驟包括:對(duì)每一個(gè)道具,計(jì)算該道具的剩余道具數(shù)量與已使用道具數(shù)量的差值;將剩余道具數(shù)量的值更新為該差值以作為對(duì)應(yīng)的消息。

可選地,在根據(jù)本發(fā)明的游戲用戶管理方法中,還包括:響應(yīng)游戲客戶端發(fā)送的心跳信息,將消息隊(duì)列中的所有消息發(fā)送至游戲客戶端。

根據(jù)本發(fā)明的又一個(gè)方面,提供一種游戲服務(wù)器,適于響應(yīng)游戲用戶管理系統(tǒng)的分配與對(duì)應(yīng)的游戲客戶端進(jìn)行數(shù)據(jù)交互,游戲用戶管理系統(tǒng)包括多個(gè)游戲服務(wù)器及數(shù)據(jù)庫(kù)服務(wù)器,每個(gè)游戲服務(wù)器分別與多個(gè)游戲客戶端及數(shù)據(jù)庫(kù)服務(wù)器通信連接,數(shù)據(jù)庫(kù)服務(wù)器中存儲(chǔ)有多個(gè)用戶初始信息,用戶初始信息分別對(duì)應(yīng)于不同的游戲用戶,游戲服務(wù)器包括接收模塊、驗(yàn)證模塊、判斷模塊、進(jìn)程管理模塊、獲取模塊、生成模塊、更新模塊和相應(yīng)模塊。其中,接收模塊適于接收游戲客戶端發(fā)送的登錄請(qǐng)求,登錄請(qǐng)求包括登錄驗(yàn)證信息;驗(yàn)證模塊適于根據(jù)登錄驗(yàn)證信息進(jìn)行登錄驗(yàn)證;判斷模塊適于當(dāng)驗(yàn)證成功時(shí),獲取上次退出信息,根據(jù)上次退出信息判斷上次退出游戲時(shí)是否存在異常情形;進(jìn)程管理模塊適于當(dāng)上次退出游戲時(shí)不存在異常情形時(shí),直接創(chuàng)建與游戲客戶端對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,消息隊(duì)列適于存儲(chǔ)游戲服務(wù)器生成的消息;獲取模塊適于從數(shù)據(jù)庫(kù)服務(wù)器獲取與游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將用戶當(dāng)前信息發(fā)送至游戲客戶端;生成模塊適于接收并處理游戲客戶端上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息;更新模塊適于根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列;響應(yīng)模塊適于響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,接收模塊還適于接收游戲客戶端發(fā)送的退出請(qǐng)求,退出請(qǐng)求包括狀態(tài)標(biāo)識(shí),狀態(tài)標(biāo)識(shí)用于標(biāo)記本次退出游戲時(shí)是否存在異常情形;進(jìn)程管理模塊還適于,將用戶當(dāng)前信息回寫(xiě)到數(shù)據(jù)庫(kù)服務(wù)器,以更新對(duì)應(yīng)的用戶初始信息當(dāng)本次退出游戲時(shí)不存在異常情形時(shí),直接刪除虛擬進(jìn)程,當(dāng)本次退出游戲時(shí)存在異常情形時(shí),將虛擬進(jìn)程保留第一時(shí)間閾值后再進(jìn)行刪除。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,登錄驗(yàn)證信息包括登錄請(qǐng)求時(shí)間和游戲用戶標(biāo)識(shí),上次退出信息包括上次退出時(shí)間、上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)和上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí),判斷模塊還適于當(dāng)上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)表明存在異常情形時(shí),判斷登錄請(qǐng)求時(shí)間與上次退出時(shí)間的時(shí)間間隔是否大于第一時(shí)間閾值;進(jìn)程管理模塊還適于當(dāng)時(shí)間間隔不大于第一時(shí)間閾值時(shí),通過(guò)服務(wù)器標(biāo)識(shí)查找到上次登錄游戲時(shí)分配的游戲服務(wù)器,獲取該游戲服務(wù)器中與游戲用戶標(biāo)識(shí)關(guān)聯(lián)的最新的用戶當(dāng)前信息,刪除該游戲服務(wù)器保留的與游戲用戶標(biāo)識(shí)對(duì)應(yīng)的虛擬進(jìn)程,并基于該用戶當(dāng)前信息在當(dāng)前分配的游戲服務(wù)器中重新創(chuàng)建關(guān)聯(lián)的虛擬進(jìn)程。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,進(jìn)程管理模塊還適于:當(dāng)時(shí)間間隔大于第一時(shí)間閾值時(shí),直接創(chuàng)建與游戲客戶端對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,游戲服務(wù)器中存儲(chǔ)有游戲配置數(shù)據(jù),生成模塊進(jìn)一步適于:接收游戲客戶端上報(bào)的操作數(shù)據(jù);根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息,對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn);當(dāng)校驗(yàn)成功時(shí),對(duì)操作數(shù)據(jù)進(jìn)行處理,以生成對(duì)應(yīng)的消息。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,操作數(shù)據(jù)包括道具使用信息、通關(guān)耗時(shí)、傷害量、生命值、攻擊強(qiáng)度、金幣數(shù)量和障礙物信息中至少一種。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,操作數(shù)據(jù)包括道具使用信息,道具使用信息包括道具標(biāo)識(shí)和與其關(guān)聯(lián)的已使用道具數(shù)量,用戶當(dāng)前信息包括道具標(biāo)識(shí)和與其對(duì)應(yīng)的剩余道具數(shù)量,游戲配置數(shù)據(jù)包括與道具標(biāo)識(shí)關(guān)聯(lián)的道具使用數(shù)量上限值,生成模塊進(jìn)一步適于:對(duì)每一個(gè)道具,根據(jù)其道具標(biāo)識(shí)獲取該道具的已使用道具數(shù)量、剩余道具數(shù)量和道具使用數(shù)量上限值;判斷已使用道具數(shù)量是否滿足小于道具使用數(shù)量上限值、且小于剩余道具數(shù)量的條件;當(dāng)滿足條件時(shí),判斷校驗(yàn)成功,否則判斷校驗(yàn)失敗。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,生成模塊進(jìn)一步適于:對(duì)每一個(gè)道具,計(jì)算該道具的剩余道具數(shù)量與已使用道具數(shù)量的差值;將剩余道具數(shù)量的值更新為該差值以作為對(duì)應(yīng)的消息。

可選地,在根據(jù)本發(fā)明的游戲服務(wù)器中,響應(yīng)模塊還適于:響應(yīng)游戲客戶端發(fā)送的心跳信息,將消息隊(duì)列中的所有消息發(fā)送至游戲客戶端。

根據(jù)本發(fā)明的又一個(gè)方面,還提供一種游戲用戶管理系統(tǒng),包括根據(jù)本發(fā)明的多個(gè)游戲服務(wù)器及數(shù)據(jù)庫(kù)服務(wù)器。

根據(jù)本發(fā)明的游戲用戶管理的技術(shù)方案,當(dāng)游戲用戶在游戲客戶端登錄游戲時(shí),游戲用戶系統(tǒng)向該游戲用戶分配的游戲服務(wù)器接收游戲客戶端發(fā)送的登錄請(qǐng)求,并創(chuàng)建與該游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,隨后從數(shù)據(jù)庫(kù)服務(wù)器獲取與游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將用戶當(dāng)前信息發(fā)送至游戲客戶端,在游戲用戶保持游戲狀態(tài)的過(guò)程中,游戲服務(wù)器接收并處理游戲客戶端上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息,根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列,響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端。在上述技術(shù)方案中,在創(chuàng)建虛擬進(jìn)程前,會(huì)先對(duì)登錄請(qǐng)求中的登錄驗(yàn)證信息進(jìn)行驗(yàn)證,若驗(yàn)證成功則判斷該游戲用戶上次退出游戲時(shí)是否存在異常情形,當(dāng)不存在異常情形時(shí)才直接創(chuàng)建與該游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,否則先根據(jù)異常情形進(jìn)行相應(yīng)的處理,比如保存最新的用戶當(dāng)前信息,再基于該用戶當(dāng)前信息創(chuàng)建虛擬進(jìn)程,從而避免如掉線、卡機(jī)等異常情形導(dǎo)致游戲用戶意外退出游戲而丟失游戲進(jìn)度的問(wèn)題,大幅度提升了用戶體驗(yàn)。同時(shí),在對(duì)操作數(shù)據(jù)進(jìn)行處理時(shí),會(huì)根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息來(lái)校驗(yàn)操作數(shù)據(jù),若校驗(yàn)成功才會(huì)執(zhí)行下一步處理以生成對(duì)應(yīng)的消息,降低了游戲作弊的可能性,打擊了外掛行為。由于只有當(dāng)游戲客戶端向游戲服務(wù)器上報(bào)操作數(shù)據(jù)時(shí),游戲服務(wù)器才進(jìn)行響應(yīng)將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端,使得兩者的數(shù)據(jù)交互行為大量減少,降低網(wǎng)絡(luò)連接中傳輸?shù)臄?shù)據(jù)量。此外,為防止游戲客戶端長(zhǎng)時(shí)間不上報(bào)操作數(shù)據(jù)的問(wèn)題,在游戲客戶端設(shè)置一定頻率的心跳信息來(lái)觸發(fā)游戲服務(wù)器自動(dòng)下發(fā)消息,達(dá)到獲取推送消息的目的。

附圖說(shuō)明

為了實(shí)現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來(lái)描述某些說(shuō)明性方面,這些方面指示了可以實(shí)踐本文所公開(kāi)的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護(hù)的主題的范圍內(nèi)。通過(guò)結(jié)合附圖閱讀下面的詳細(xì)描述,本公開(kāi)的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯。遍及本公開(kāi),相同的附圖標(biāo)記通常指代相同的部件或元素。

圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的游戲用戶管理系統(tǒng)100的示意圖;

圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的游戲用戶管理方法200的流程圖;以及

圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的游戲服務(wù)器300的示意圖。

具體實(shí)施方式

下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的游戲用戶管理系統(tǒng)100的示意圖。如圖1所示,游戲用戶管理系統(tǒng)100包括游戲服務(wù)器300、游戲服務(wù)器400和數(shù)據(jù)庫(kù)服務(wù)器500,游戲服務(wù)器300和游戲服務(wù)器400均與數(shù)據(jù)庫(kù)服務(wù)器500通信連接,數(shù)據(jù)庫(kù)服務(wù)器500中存儲(chǔ)有多個(gè)用戶初始信息,每個(gè)用戶初始信息分別對(duì)應(yīng)于不同的游戲用戶,需要說(shuō)明的是游戲服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的數(shù)量并無(wú)限制。在圖1中,與游戲服務(wù)器300通信連接的還有游戲客戶端610和游戲客戶端620,與游戲服務(wù)器400通信連接的還有游戲客戶端630和游戲客戶端640,游戲客戶端610~640可實(shí)現(xiàn)為移動(dòng)終端,如智能手機(jī)、平板電腦等,也可實(shí)現(xiàn)為計(jì)算設(shè)備,如pc機(jī)等,但均不限于此,數(shù)量上也未作任何限制。

根據(jù)本發(fā)明的一個(gè)實(shí)施例,游戲服務(wù)器300通過(guò)通信網(wǎng)絡(luò)分別與數(shù)據(jù)庫(kù)服務(wù)器500、游戲客戶端610和游戲客戶端620交換數(shù)據(jù)信息,而游戲服務(wù)器400則是通過(guò)通信網(wǎng)絡(luò)分別與數(shù)據(jù)庫(kù)服務(wù)器500、游戲客戶端630和游戲客戶端640交換數(shù)據(jù)信息,以下將以游戲服務(wù)器300與數(shù)據(jù)庫(kù)服務(wù)器500及游戲客戶端610之間的交互為例進(jìn)行說(shuō)明。具體來(lái)說(shuō),當(dāng)游戲用戶登錄安裝于游戲客戶端610中的游戲應(yīng)用時(shí),游戲用戶管理系統(tǒng)100會(huì)向該游戲用戶分配一個(gè)游戲服務(wù)器,即如圖1所示的游戲服務(wù)器300,此時(shí)游戲服務(wù)器300接收游戲客戶端610發(fā)送的登錄請(qǐng)求,根據(jù)該登錄請(qǐng)求來(lái)創(chuàng)建與游戲客戶端610對(duì)應(yīng)的該游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,游戲服務(wù)器300從數(shù)據(jù)庫(kù)服務(wù)器500獲取與該游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將該用戶當(dāng)前信息發(fā)送至游戲客戶端610。游戲客戶端610接收到用戶當(dāng)前信息后,將游戲中的用戶數(shù)據(jù)進(jìn)行初始化更新,并開(kāi)始收集游戲用戶的操作行為所對(duì)應(yīng)的操作數(shù)據(jù),將操作數(shù)據(jù)上報(bào)至游戲服務(wù)器300。游戲服務(wù)器300接收并處理游戲客戶端610上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息,根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列,再響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端610。

圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的游戲用戶管理方法200的流程圖。游戲用戶管理方法200適于在游戲服務(wù)器(例如圖1所示的游戲服務(wù)器300)中執(zhí)行。

如圖2所示,方法200始于步驟s20。在步驟s210中,接收游戲客戶端610發(fā)送的登錄請(qǐng)求,登錄請(qǐng)求包括登錄驗(yàn)證信息。游戲服務(wù)器300在接收到上述登錄請(qǐng)求后,執(zhí)行步驟s220,根據(jù)登錄驗(yàn)證信息進(jìn)行登錄驗(yàn)證,若驗(yàn)證成功,則獲取上次退出信息,根據(jù)上次退出信息判斷上次退出游戲時(shí)是否存在異常情形。其中,登錄驗(yàn)證信息包括登錄請(qǐng)求時(shí)間和游戲用戶標(biāo)識(shí),上次退出信息包括上次退出時(shí)間、上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)和上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí)。上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)適于表明是否游戲用戶在上次退出游戲時(shí),其退出狀態(tài)是正常退出還是存在異常情形,如果該狀態(tài)標(biāo)識(shí)為true,則說(shuō)明游戲用戶是正常退出游戲,如果該狀態(tài)標(biāo)識(shí)為false,則說(shuō)明游戲用戶退出游戲存在異常情形。需要說(shuō)明的是,上次退出信息是與游戲客戶端610中當(dāng)前登錄的游戲用戶關(guān)聯(lián)的,其可以是由游戲用戶上次退出游戲時(shí)所連接的服務(wù)器保存,也可以由數(shù)據(jù)庫(kù)服務(wù)器500保存,當(dāng)然,還可以由游戲客戶端610本地保存,若由游戲客戶端610保存,則登錄請(qǐng)求包括登錄驗(yàn)證信息和上次退出信息。

根據(jù)本發(fā)明的一個(gè)實(shí)施例,登錄請(qǐng)求時(shí)間為2017年3月22日17時(shí)35分22秒,游戲用戶標(biāo)識(shí)為user1,上次退出時(shí)間為2017年3月21日11時(shí)13分39秒,上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)為true,上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí)為server1。由狀態(tài)標(biāo)識(shí)為true可知,游戲用戶上次退出游戲時(shí)是正常退出,不存在異常情形。

若上次退出游戲時(shí)不存在異常情形,則進(jìn)入步驟s230,直接創(chuàng)建與游戲客戶端610對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,消息隊(duì)列適于存儲(chǔ)游戲服務(wù)器300生成的消息。根據(jù)本發(fā)明的一個(gè)實(shí)施例,由于上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)為true,則游戲服務(wù)器300直接創(chuàng)建與游戲客戶端610對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程pro1,虛擬進(jìn)程pro1中包括消息隊(duì)列,消息隊(duì)列適于存儲(chǔ)游戲服務(wù)器300生成的消息。在該實(shí)施方式中,虛擬進(jìn)程pro1是erlang虛擬機(jī)級(jí)別的,可以通過(guò)spawn函數(shù)創(chuàng)建,創(chuàng)建時(shí)間是微秒級(jí)別,初始占用內(nèi)存2kb左右。實(shí)際上,對(duì)每一個(gè)游戲用戶而言,在其登錄游戲并通過(guò)登錄驗(yàn)證后,會(huì)根據(jù)相應(yīng)的處理來(lái)為其創(chuàng)建一個(gè)包含該游戲用戶所有操作行為的狀態(tài)機(jī)虛擬進(jìn)程,用于處理其所有操作行為,比如簽到、戰(zhàn)斗等。此虛擬進(jìn)程的生命周期一般是從游戲用戶登錄游戲到退出游戲,在游戲用戶的游戲過(guò)程中不斷接收由游戲客戶端發(fā)來(lái)的操作數(shù)據(jù),并進(jìn)行處理以生成對(duì)應(yīng)的消息,實(shí)時(shí)進(jìn)行狀態(tài)的切換,返回消息給游戲客戶端,可以說(shuō)游戲客戶端所展示的內(nèi)容就是游戲用戶的虛擬進(jìn)程中數(shù)據(jù)和狀態(tài)的反射。以上創(chuàng)建虛擬進(jìn)程的相關(guān)代碼如下所示:

handle({#user_login_c2s{openid=openid,openkey=openkey,serverid=serverid,mac=macaddress,

pf=pf,audlt=isaudlt,client_version=clientversion,hardware=hardware,

telecom=telecom,network=network,regchannel=regchannel,

pay_pf=paypf,pay_pfkey=paypfkey,pay_token=paytoken,name=name,

activation_code=activationcode,icon_url=iconurl,login_source=loginsource,

gender=gender,refresh_token=refreshtoken},ipstr,cookievalue})->

player_login_op:http_proc_user_login_c2s({openid,openkey,serverid,macaddress,pf,isaudlt,clientversion,

hardware,telecom,network,regchannel,paypf,paypfkey,paytoken,

name,activationcode,iconurl,loginsource,gender,refreshtoken},ipstr,cookievalue);

childspec={roleid,{role_processor,start_link,[roledb,roleid]},temporary,

2000,worker,[role_processor]},supervisor:start_child({?module,node},childspec).

以上對(duì)上次退出游戲時(shí)不存在異常情形而創(chuàng)建虛擬進(jìn)程的情況進(jìn)行了說(shuō)明,那么若上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)表明存在異常情形,則關(guān)于創(chuàng)建虛擬進(jìn)程的過(guò)程是有所不同的。根據(jù)本發(fā)明的又一個(gè)實(shí)施例,若上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)表明存在異常情形,則判斷登錄請(qǐng)求時(shí)間與上次退出時(shí)間的時(shí)間間隔是否大于第一時(shí)間閾值,若時(shí)間間隔不大于第一時(shí)間閾值,則通過(guò)服務(wù)器標(biāo)識(shí)查找到上次登錄游戲時(shí)分配的游戲服務(wù)器,獲取該游戲服務(wù)器中與游戲用戶標(biāo)識(shí)關(guān)聯(lián)的最新的用戶當(dāng)前信息,刪除該游戲服務(wù)器保留的與游戲用戶標(biāo)識(shí)對(duì)應(yīng)的虛擬進(jìn)程,并基于該用戶當(dāng)前信息在當(dāng)前分配的游戲服務(wù)器中重新創(chuàng)建關(guān)聯(lián)的虛擬進(jìn)程,若時(shí)間間隔大于第一時(shí)間閾值,則直接創(chuàng)建與游戲客戶端對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程。

在該實(shí)施方式中,登錄請(qǐng)求時(shí)間為2017年4月12日9時(shí)30分12秒,游戲用戶標(biāo)識(shí)為user1,上次退出時(shí)間為2017年4月12日9時(shí)28分55秒,上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)為false,上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí)為server2,第一時(shí)間閾值優(yōu)選為5分鐘。由狀態(tài)標(biāo)識(shí)為false可知,游戲用戶上次退出游戲時(shí)是非正常退出,存在異常情形,則判斷登錄請(qǐng)求時(shí)間與上次退出時(shí)間的時(shí)間間隔是否大于第一時(shí)間閾值。此時(shí),該時(shí)間間隔為1分17秒,不大于第一時(shí)間閾值,則通過(guò)服務(wù)器標(biāo)識(shí)server2查找到上次登錄游戲時(shí)分配的游戲服務(wù)器為游戲服務(wù)器400,獲取游戲服務(wù)器400中與游戲用戶標(biāo)識(shí)user2關(guān)聯(lián)的最新的用戶當(dāng)前信息,刪除游戲服務(wù)器400保留的與游戲用戶標(biāo)識(shí)user2對(duì)應(yīng)的虛擬進(jìn)程pro0,并基于該用戶當(dāng)前信息在當(dāng)前分配的游戲服務(wù)器300中重新創(chuàng)建關(guān)聯(lián)的虛擬進(jìn)程pro2。

接下來(lái),執(zhí)行步驟s240,從數(shù)據(jù)庫(kù)服務(wù)器500獲取與游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將用戶當(dāng)前信息發(fā)送至游戲客戶端610。根據(jù)本發(fā)明的一個(gè)實(shí)施例,用戶初始信息一般包括游戲用戶的基礎(chǔ)信息和游戲系統(tǒng)信息,游戲用戶的基礎(chǔ)信息是可以反映出游戲用戶自身水平的數(shù)據(jù),包括如在游戲中的用戶信息界面上顯示的內(nèi)容,比如游戲用戶名稱、頭像、性別、金幣數(shù)量、道具數(shù)量、等級(jí)和經(jīng)驗(yàn)值等,而游戲系統(tǒng)信息則是與游戲系統(tǒng)自身相關(guān)的如游戲簽到系統(tǒng)數(shù)據(jù)、游戲好友系統(tǒng)數(shù)據(jù)等數(shù)據(jù)。從數(shù)據(jù)庫(kù)服務(wù)器500中獲取到與游戲用戶標(biāo)識(shí)為user1的游戲用戶關(guān)聯(lián)的用戶初始信息,將該用戶初始信息作為用戶當(dāng)前信息并發(fā)送至游戲客戶端610,以便游戲客戶端610根據(jù)該用戶當(dāng)前信息更新本地?cái)?shù)據(jù)并向游戲用戶展示。

在步驟s250中,接收并處理游戲客戶端610上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息。根據(jù)本發(fā)明的一個(gè)實(shí)施例,游戲服務(wù)器中存儲(chǔ)有游戲配置數(shù)據(jù),消息的生成可通過(guò)以下方式來(lái)實(shí)現(xiàn)。首先,接收游戲客戶端上報(bào)的操作數(shù)據(jù),操作數(shù)據(jù)包括道具使用信息、通關(guān)耗時(shí)、傷害量、生命值、攻擊強(qiáng)度、金幣數(shù)量和障礙物信息中至少一種,然后,根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息,對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn),若校驗(yàn)成功,則對(duì)操作數(shù)據(jù)進(jìn)行處理,以生成對(duì)應(yīng)的消息。在該實(shí)施方式中,游戲配置數(shù)據(jù)是預(yù)先配置好的、可用于對(duì)操作數(shù)據(jù)中具有數(shù)值上限的數(shù)據(jù)進(jìn)行限制的數(shù)據(jù),比如操作數(shù)據(jù)包括道具使用信息,道具使用信息包括道具標(biāo)識(shí)和與其關(guān)聯(lián)的已使用道具數(shù)量,則對(duì)應(yīng)的游戲配置數(shù)據(jù)包括與道具標(biāo)識(shí)關(guān)聯(lián)的道具使用數(shù)量上限值,此時(shí)用戶當(dāng)前信息包括道具標(biāo)識(shí)和與其對(duì)應(yīng)的剩余道具數(shù)量。

進(jìn)而,在上述情況下,可通過(guò)下列方式對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn)。對(duì)每一個(gè)道具,根據(jù)其道具標(biāo)識(shí)獲取該道具的已使用道具數(shù)量、剩余道具數(shù)量和道具使用數(shù)量上限值,判斷已使用道具數(shù)量是否滿足小于道具使用數(shù)量上限值、且小于剩余道具數(shù)量的條件,若滿足該條件,則判斷校驗(yàn)成功,否則判斷校驗(yàn)失敗。在該實(shí)施方式中,共計(jì)有3種不同的道具,道具標(biāo)識(shí)依次為d1、d2和d3,將各道具分別記為道具d1、道具d2和道具d3,道具d1的已使用道具數(shù)量為2,剩余道具數(shù)量為3,道具使用數(shù)量上限值為3,道具d2的已使用道具數(shù)量為0,剩余道具數(shù)量為1,道具使用數(shù)量上限值為1,道具d3的已使用道具數(shù)量為1,剩余道具數(shù)量為4,道具使用數(shù)量上限值為2。對(duì)道具d1、d2和d3而言,其已使用道具數(shù)量均滿足小于道具使用數(shù)量上限值、且小于剩余道具數(shù)量的條件,因此判斷校驗(yàn)成功。

在對(duì)游戲客戶端610上報(bào)的操作數(shù)據(jù)完成校驗(yàn)后,繼續(xù)對(duì)其進(jìn)行處理以生成對(duì)應(yīng)的消息。根據(jù)上述實(shí)施例,對(duì)每一個(gè)道具,計(jì)算該道具的剩余道具數(shù)量與已使用道具數(shù)量的差值,將剩余道具數(shù)量的值更新為該差值以作為對(duì)應(yīng)的消息。那么,道具d1的剩余道具數(shù)量的值應(yīng)更新為3-2=1,道具d2的剩余道具數(shù)量的值應(yīng)更新為1-0=1,道具d3的剩余道具數(shù)量的值應(yīng)更新為4-1=3,將各道具的新的剩余道具數(shù)量與道具標(biāo)識(shí)關(guān)聯(lián)起來(lái)以生成與道具相關(guān)的消息。

需要說(shuō)明的是,由于不同的游戲系統(tǒng)的玩法設(shè)置和運(yùn)行規(guī)則均有所不同,則在上述對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn)的過(guò)程中,校驗(yàn)規(guī)則的制定也是千差萬(wàn)別的,不僅與游戲系統(tǒng)自身及上報(bào)的具體的操作數(shù)據(jù)相關(guān),還會(huì)涉及到各方面因素的考慮來(lái)進(jìn)行校驗(yàn)規(guī)則的更改,在本發(fā)明中對(duì)于校驗(yàn)規(guī)則的設(shè)定不進(jìn)行限制,根據(jù)不同的游戲系統(tǒng)進(jìn)行適應(yīng)性調(diào)整即可。此外,對(duì)于虛擬進(jìn)程而言,當(dāng)其進(jìn)入游戲狀態(tài)后,自身也會(huì)相應(yīng)運(yùn)轉(zhuǎn),如果觸發(fā)了一些時(shí)效性的功能,比如游戲活動(dòng)刷新、體力回復(fù)等,虛擬進(jìn)程還會(huì)自行產(chǎn)生消息來(lái)推送到消息隊(duì)列。

在消息生成后,執(zhí)行步驟s260,根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列。根據(jù)本發(fā)明的一個(gè)實(shí)施例,生成的消息是與道具相關(guān)的,具體為更新剩余道具數(shù)量的消息,則對(duì)于游戲用戶標(biāo)識(shí)為user1的游戲用戶的用戶當(dāng)前信息,其中道具d1的剩余道具數(shù)量的值更新為1,道具d2的剩余道具數(shù)量的值更新為1,道具d3的剩余道具數(shù)量的值更新為3,至此完成了用戶當(dāng)前信息的更新,隨后將上述消息推送至消息隊(duì)列。

接下來(lái),進(jìn)入步驟s270,響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端610。根據(jù)本發(fā)明的一個(gè)實(shí)施例,將消息隊(duì)列中包括以上與道具相關(guān)的消息在內(nèi)的所有消息,均發(fā)送給游戲客戶端610,以便其更新本地?cái)?shù)據(jù)。考慮到游戲客戶端610可能會(huì)存在長(zhǎng)時(shí)間不上報(bào)操作數(shù)據(jù)的情況,為避免數(shù)據(jù)更新不及時(shí),根據(jù)本發(fā)明的一個(gè)實(shí)施例,在游戲客戶端610中設(shè)置預(yù)定時(shí)間間隔的心跳來(lái)觸發(fā)游戲服務(wù)器300下發(fā)消息,則游戲客戶端300響應(yīng)游戲客戶端610發(fā)送的心跳信息,將消息隊(duì)列中的所有消息發(fā)送至游戲客戶端610。在該實(shí)施方式中,預(yù)定時(shí)間間隔優(yōu)選為180秒。消息推送過(guò)程的相關(guān)代碼如下所示:

//push消息

push_msg(pushmsg)->

put(?dict_push_msg_list,[pushmsg|get(?dict_push_msg_list)]).

//get消息

get_push_msg_list()->

msglist=get(?dict_push_msg_list),

reinit(),

lists:reverse(msglist).

//發(fā)送組合消息

encode_msg_list(msglist)->

lists:foldl(fun(msg,acc)->

bsize=size(msg),

<<acc/binary,bsize:16/unsigned,msg/binary>>

end,<<>>,msglist).

當(dāng)游戲用戶退出當(dāng)前游戲時(shí),游戲客戶端610會(huì)向游戲服務(wù)器300發(fā)送退出請(qǐng)求,此時(shí)游戲服務(wù)器300接收游戲客戶端610發(fā)送的退出請(qǐng)求,退出請(qǐng)求包括狀態(tài)標(biāo)識(shí),狀態(tài)標(biāo)識(shí)用于標(biāo)記本次退出游戲時(shí)是否存在異常情形,并將用戶當(dāng)前信息回寫(xiě)到數(shù)據(jù)庫(kù)服務(wù)器500,以更新對(duì)應(yīng)的用戶初始信息。若本次退出游戲時(shí)不存在異常情形,則直接刪除虛擬進(jìn)程,若本次退出游戲時(shí)存在異常情形,則將虛擬進(jìn)程保留第一時(shí)間閾值后再進(jìn)行刪除。在游戲用戶退出游戲時(shí),通過(guò)狀態(tài)標(biāo)識(shí)來(lái)標(biāo)記是否異常退出,對(duì)于異常退出的游戲用戶,保留其關(guān)聯(lián)的虛擬進(jìn)程,以便游戲用戶在第一時(shí)間閾值內(nèi)再次登錄游戲時(shí),不會(huì)失去原本的游戲數(shù)據(jù)。

圖3示出了本發(fā)明一個(gè)實(shí)施例的游戲服務(wù)器300的示意圖。如圖3所示,游戲服務(wù)器300包括接收模塊310、驗(yàn)證模塊320、判斷模塊330、進(jìn)程管理模塊340、獲取模塊350、生成模塊360、更新模塊370和響應(yīng)模塊380。

接收模塊310適于接收游戲客戶端610發(fā)送的登錄請(qǐng)求,登錄請(qǐng)求包括登錄驗(yàn)證信息。接收模塊310還適于接收游戲客戶端610發(fā)送的退出請(qǐng)求,退出請(qǐng)求包括狀態(tài)標(biāo)識(shí),狀態(tài)標(biāo)識(shí)用于標(biāo)記本次退出游戲時(shí)是否存在異常情形。

驗(yàn)證模塊320與接收模塊310相連,適于根據(jù)登錄驗(yàn)證信息進(jìn)行登錄驗(yàn)證。

判斷模塊330分別與接收模塊310和驗(yàn)證模塊320相連,適于當(dāng)驗(yàn)證成功時(shí),獲取上次退出信息,根據(jù)上次退出信息判斷上次退出游戲時(shí)是否存在異常情形。登錄驗(yàn)證信息包括登錄請(qǐng)求時(shí)間和游戲用戶標(biāo)識(shí),上次退出信息包括上次退出時(shí)間、上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)和上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí),判斷模塊330還適于當(dāng)上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)表明存在異常情形時(shí),判斷登錄請(qǐng)求時(shí)間與上次退出時(shí)間的時(shí)間間隔是否大于第一時(shí)間閾值。

進(jìn)程管理模塊340與判斷模塊330相連,適于當(dāng)上次退出游戲時(shí)不存在異常情形時(shí),直接創(chuàng)建與游戲客戶端610對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,消息隊(duì)列適于存儲(chǔ)游戲服務(wù)器300生成的消息。進(jìn)程管理模塊340還適于將用戶當(dāng)前信息回寫(xiě)到數(shù)據(jù)庫(kù)服務(wù)器500,以更新對(duì)應(yīng)的用戶初始信息,當(dāng)本次退出游戲時(shí)不存在異常情形時(shí),直接刪除虛擬進(jìn)程,當(dāng)本次退出游戲時(shí)存在異常情形時(shí),將虛擬進(jìn)程保留第一時(shí)間閾值后再進(jìn)行刪除。登錄驗(yàn)證信息包括登錄請(qǐng)求時(shí)間和游戲用戶標(biāo)識(shí),上次退出信息包括上次退出時(shí)間、上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)和上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí),進(jìn)程管理模塊340還適于當(dāng)時(shí)間間隔不大于第一時(shí)間閾值時(shí),通過(guò)服務(wù)器標(biāo)識(shí)查找到上次登錄游戲時(shí)分配的游戲服務(wù)器,獲取該游戲服務(wù)器中與游戲用戶標(biāo)識(shí)關(guān)聯(lián)的最新的用戶當(dāng)前信息,刪除該游戲服務(wù)器保留的與游戲用戶標(biāo)識(shí)對(duì)應(yīng)的虛擬進(jìn)程,并基于該用戶當(dāng)前信息在當(dāng)前分配的游戲服務(wù)器300中重新創(chuàng)建關(guān)聯(lián)的虛擬進(jìn)程。進(jìn)程管理模塊340還適于當(dāng)時(shí)間間隔大于第一時(shí)間閾值時(shí),直接創(chuàng)建與游戲客戶端610對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程。

獲取模塊350與進(jìn)程管理模塊340相連,適于從數(shù)據(jù)庫(kù)服務(wù)器500獲取與游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將用戶當(dāng)前信息發(fā)送至游戲客戶端610。

生成模塊360與進(jìn)程管理模塊340相連,適于接收并處理游戲客戶端610上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息。游戲服務(wù)器300中存儲(chǔ)有游戲配置數(shù)據(jù),生成模塊360進(jìn)一步適于接收游戲客戶端610上報(bào)的操作數(shù)據(jù);根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息,對(duì)操作數(shù)據(jù)進(jìn)行校驗(yàn);當(dāng)校驗(yàn)成功時(shí),對(duì)操作數(shù)據(jù)進(jìn)行處理,以生成對(duì)應(yīng)的消息。其中,操作數(shù)據(jù)包括道具使用信息、通關(guān)耗時(shí)、傷害量、生命值、攻擊強(qiáng)度、金幣數(shù)量和障礙物信息中至少一種。操作數(shù)據(jù)包括道具使用信息,道具使用信息包括道具標(biāo)識(shí)和與其關(guān)聯(lián)的已使用道具數(shù)量,用戶當(dāng)前信息包括道具標(biāo)識(shí)和與其對(duì)應(yīng)的剩余道具數(shù)量,游戲配置數(shù)據(jù)包括與道具標(biāo)識(shí)關(guān)聯(lián)的道具使用數(shù)量上限值,生成模塊360進(jìn)一步適于對(duì)每一個(gè)道具,根據(jù)其道具標(biāo)識(shí)獲取該道具的已使用道具數(shù)量、剩余道具數(shù)量和道具使用數(shù)量上限值;判斷已使用道具數(shù)量是否滿足小于道具使用數(shù)量上限值、且小于剩余道具數(shù)量的條件;當(dāng)滿足條件時(shí),判斷校驗(yàn)成功,否則判斷校驗(yàn)失敗。生成模塊360進(jìn)一步適于對(duì)每一個(gè)道具,計(jì)算該道具的剩余道具數(shù)量與已使用道具數(shù)量的差值;將剩余道具數(shù)量的值更新為該差值以作為對(duì)應(yīng)的消息。

更新模塊370與生成模塊360相連,適于根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列。

響應(yīng)模塊380與更新模塊370相連,適于響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端610。響應(yīng)模塊380還適于響應(yīng)游戲客戶端610發(fā)送的心跳信息,將消息隊(duì)列中的所有消息發(fā)送至游戲客戶端610。

關(guān)于游戲用戶管理的具體步驟以及實(shí)施例,在基于圖2的描述中已經(jīng)詳細(xì)公開(kāi),此處不再贅述。

現(xiàn)有的游戲用戶管理方案中,游戲服務(wù)器為游戲用戶創(chuàng)建的游戲進(jìn)程在用戶退出游戲時(shí)即刻刪除,且游戲客戶端與游戲服務(wù)器之間的數(shù)據(jù)傳送均是主動(dòng)進(jìn)行的,過(guò)多的數(shù)據(jù)頻繁交互會(huì)給游戲服務(wù)器以及游戲客戶端帶來(lái)額外的負(fù)擔(dān),且當(dāng)用戶在非wi-fi環(huán)境下玩游戲時(shí),網(wǎng)絡(luò)中大量傳輸?shù)臄?shù)據(jù)量會(huì)造成數(shù)據(jù)流量的過(guò)多消耗。根據(jù)本發(fā)明實(shí)施例的游戲用戶管理的技術(shù)方案,當(dāng)游戲用戶在游戲客戶端登錄游戲時(shí),游戲用戶系統(tǒng)向該游戲用戶分配的游戲服務(wù)器接收游戲客戶端發(fā)送的登錄請(qǐng)求,并創(chuàng)建與該游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,虛擬進(jìn)程中包括消息隊(duì)列,隨后從數(shù)據(jù)庫(kù)服務(wù)器獲取與游戲用戶關(guān)聯(lián)的用戶初始信息作為用戶當(dāng)前信息,將用戶當(dāng)前信息發(fā)送至游戲客戶端,在游戲用戶保持游戲狀態(tài)的過(guò)程中,游戲服務(wù)器接收并處理游戲客戶端上報(bào)的操作數(shù)據(jù),以生成對(duì)應(yīng)的消息,根據(jù)消息更新用戶當(dāng)前信息,并將消息推送至消息隊(duì)列,響應(yīng)操作數(shù)據(jù)的上報(bào),將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端。在上述技術(shù)方案中,在創(chuàng)建虛擬進(jìn)程前,會(huì)先對(duì)登錄請(qǐng)求中的登錄驗(yàn)證信息進(jìn)行驗(yàn)證,若驗(yàn)證成功則判斷該游戲用戶上次退出游戲時(shí)是否存在異常情形,當(dāng)不存在異常情形時(shí)才直接創(chuàng)建與該游戲用戶關(guān)聯(lián)的虛擬進(jìn)程,否則先根據(jù)異常情形進(jìn)行相應(yīng)的處理,比如保存最新的用戶當(dāng)前信息,再基于該用戶當(dāng)前信息創(chuàng)建虛擬進(jìn)程,從而避免如掉線、卡機(jī)等異常情形導(dǎo)致游戲用戶意外退出游戲而丟失游戲進(jìn)度的問(wèn)題,大幅度提升了用戶體驗(yàn)。同時(shí),在對(duì)操作數(shù)據(jù)進(jìn)行處理時(shí),會(huì)根據(jù)游戲配置數(shù)據(jù)和用戶當(dāng)前信息來(lái)校驗(yàn)操作數(shù)據(jù),若校驗(yàn)成功才會(huì)執(zhí)行下一步處理以生成對(duì)應(yīng)的消息,降低了游戲作弊的可能性,打擊了外掛行為。由于只有當(dāng)游戲客戶端向游戲服務(wù)器上報(bào)操作數(shù)據(jù)時(shí),游戲服務(wù)器才進(jìn)行響應(yīng)將消息隊(duì)列中的所有消息發(fā)送給游戲客戶端,使得兩者的數(shù)據(jù)交互行為大量減少,降低網(wǎng)絡(luò)連接中傳輸?shù)臄?shù)據(jù)量。此外,為防止游戲客戶端長(zhǎng)時(shí)間不上報(bào)操作數(shù)據(jù)的問(wèn)題,在游戲客戶端設(shè)置一定頻率的心跳信息來(lái)觸發(fā)游戲服務(wù)器自動(dòng)下發(fā)消息,達(dá)到獲取推送消息的目的。

a9.如a1-8中任一項(xiàng)所述的方法,還包括:

響應(yīng)所述游戲客戶端發(fā)送的心跳信息,將所述消息隊(duì)列中的所有消息發(fā)送至所述游戲客戶端。

b11.如b10所述的游戲服務(wù)器,其中:

所述接收模塊還適于,接收游戲客戶端發(fā)送的退出請(qǐng)求,所述退出請(qǐng)求包括狀態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)用于標(biāo)記本次退出游戲時(shí)是否存在異常情形;

所述進(jìn)程管理模塊還適于,將所述用戶當(dāng)前信息回寫(xiě)到數(shù)據(jù)庫(kù)服務(wù)器,以更新對(duì)應(yīng)的用戶初始信息,當(dāng)本次退出游戲時(shí)不存在異常情形時(shí),直接刪除所述虛擬進(jìn)程,當(dāng)本次退出游戲時(shí)存在異常情形時(shí),將所述虛擬進(jìn)程保留第一時(shí)間閾值后再進(jìn)行刪除。

b12.如b10或11所述的游戲服務(wù)器,登錄驗(yàn)證信息包括登錄請(qǐng)求時(shí)間和游戲用戶標(biāo)識(shí),上次退出信息包括上次退出時(shí)間、上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)和上次登錄游戲時(shí)連接的游戲服務(wù)器對(duì)應(yīng)的服務(wù)器標(biāo)識(shí),其中:

所述判斷模塊還適于,當(dāng)上次退出游戲時(shí)的狀態(tài)標(biāo)識(shí)表明存在異常情形時(shí),判斷所述登錄請(qǐng)求時(shí)間與所述上次退出時(shí)間的時(shí)間間隔是否大于第一時(shí)間閾值;

所述進(jìn)程管理模塊還適于,當(dāng)所述時(shí)間間隔不大于第一時(shí)間閾值時(shí),通過(guò)所述服務(wù)器標(biāo)識(shí)查找到上次登錄游戲時(shí)分配的游戲服務(wù)器,獲取該游戲服務(wù)器中與所述游戲用戶標(biāo)識(shí)關(guān)聯(lián)的最新的用戶當(dāng)前信息,刪除該游戲服務(wù)器保留的與所述游戲用戶標(biāo)識(shí)對(duì)應(yīng)的虛擬進(jìn)程,并基于該用戶當(dāng)前信息在當(dāng)前分配的游戲服務(wù)器中重新創(chuàng)建關(guān)聯(lián)的虛擬進(jìn)程。

b13.如b12所述的游戲服務(wù)器,所述進(jìn)程管理模塊還適于:

當(dāng)所述時(shí)間間隔大于第一時(shí)間閾值時(shí),直接創(chuàng)建與所述游戲客戶端對(duì)應(yīng)的游戲用戶關(guān)聯(lián)的虛擬進(jìn)程。

b14.如b10-13中任一項(xiàng)所述的游戲服務(wù)器,所述游戲服務(wù)器中存儲(chǔ)有游戲配置數(shù)據(jù),所述生成模塊進(jìn)一步適于:

接收所述游戲客戶端上報(bào)的操作數(shù)據(jù);

根據(jù)所述游戲配置數(shù)據(jù)和所述用戶當(dāng)前信息,對(duì)所述操作數(shù)據(jù)進(jìn)行校驗(yàn);

當(dāng)校驗(yàn)成功時(shí),對(duì)所述操作數(shù)據(jù)進(jìn)行處理,以生成對(duì)應(yīng)的消息。

b15.如b10-14中任一項(xiàng)所述的游戲服務(wù)器,所述操作數(shù)據(jù)包括道具使用信息、通關(guān)耗時(shí)、傷害量、生命值、攻擊強(qiáng)度、金幣數(shù)量和障礙物信息中至少一種。

b16.如b10-15中任一項(xiàng)所述的游戲服務(wù)器,所述操作數(shù)據(jù)包括道具使用信息,所述道具使用信息包括道具標(biāo)識(shí)和與其關(guān)聯(lián)的已使用道具數(shù)量,所述用戶當(dāng)前信息包括道具標(biāo)識(shí)和與其對(duì)應(yīng)的剩余道具數(shù)量,所述游戲配置數(shù)據(jù)包括與道具標(biāo)識(shí)關(guān)聯(lián)的道具使用數(shù)量上限值,所述生成模塊進(jìn)一步適于:

對(duì)每一個(gè)道具,根據(jù)其道具標(biāo)識(shí)獲取該道具的已使用道具數(shù)量、剩余道具數(shù)量和道具使用數(shù)量上限值;

判斷所述已使用道具數(shù)量是否滿足小于所述道具使用數(shù)量上限值、且小于所述剩余道具數(shù)量的條件;

當(dāng)滿足所述條件時(shí),判斷校驗(yàn)成功,否則判斷校驗(yàn)失敗。

b17.如b16所述的游戲服務(wù)器,所述生成模塊進(jìn)一步適于:

對(duì)每一個(gè)道具,計(jì)算該道具的剩余道具數(shù)量與已使用道具數(shù)量的差值;

將所述剩余道具數(shù)量的值更新為該差值以作為對(duì)應(yīng)的消息。

b18.如b10-17中任一項(xiàng)所述的游戲服務(wù)器,所述響應(yīng)模塊還適于:

響應(yīng)所述游戲客戶端發(fā)送的心跳信息,將所述消息隊(duì)列中的所有消息發(fā)送至所述游戲客戶端。在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下被實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。

類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。

本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開(kāi)的示例中的設(shè)備的模塊或單元或組件可以布置在如該實(shí)施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個(gè)或多個(gè)設(shè)備中。前述示例中的模塊可以組合為一個(gè)模塊或者此外可以分成多個(gè)子模塊。

本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。

此外,所述實(shí)施例中的一些在此被描述成可以由計(jì)算機(jī)系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實(shí)施的方法或方法元素的組合。因此,具有用于實(shí)施所述方法或方法元素的必要指令的處理器形成用于實(shí)施該方法或方法元素的裝置。此外,裝置實(shí)施例的在此所述的元素是如下裝置的例子:該裝置用于實(shí)施由為了實(shí)施該發(fā)明的目的的元素所執(zhí)行的功能。

這里描述的各種技術(shù)可結(jié)合硬件或軟件,或者它們的組合一起實(shí)現(xiàn)。從而,本發(fā)明的方法和設(shè)備,或者本發(fā)明的方法和設(shè)備的某些方面或部分可采取嵌入有形媒介,例如軟盤(pán)、cd-rom、硬盤(pán)驅(qū)動(dòng)器或者其它任意機(jī)器可讀的存儲(chǔ)介質(zhì)中的程序代碼(即指令)的形式,其中當(dāng)程序被載入諸如計(jì)算機(jī)之類的機(jī)器,并被所述機(jī)器執(zhí)行時(shí),所述機(jī)器變成實(shí)踐本發(fā)明的設(shè)備。

在程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情況下,計(jì)算設(shè)備一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件),至少一個(gè)輸入裝置,和至少一個(gè)輸出裝置。其中,存儲(chǔ)器被配置用于存儲(chǔ)程序代碼;處理器被配置用于根據(jù)該存儲(chǔ)器中存儲(chǔ)的所述程序代碼中的指令,執(zhí)行本發(fā)明的游戲用戶管理方法。

以示例而非限制的方式,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息。通信介質(zhì)一般以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。以上的任一種的組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。

如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來(lái)描述普通對(duì)象僅僅表示涉及類似對(duì)象的不同實(shí)例,并且并不意圖暗示這樣被描述的對(duì)象必須具有時(shí)間上、空間上、排序方面或者以任意其它方式的給定順序。

盡管根據(jù)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是受益于上面的描述,本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設(shè)想其它實(shí)施例。此外,應(yīng)當(dāng)注意,本說(shuō)明書(shū)中使用的語(yǔ)言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權(quán)利要求書(shū)的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。對(duì)于本發(fā)明的范圍,對(duì)本發(fā)明所做的公開(kāi)是說(shuō)明性的,而非限制性的,本發(fā)明的范圍由所附權(quán)利要求書(shū)限定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
扬中市| 高台县| 民丰县| 汪清县| 南皮县| 东台市| 灯塔市| 旬阳县| 子长县| 绩溪县| 营山县| 武乡县| 竹山县| 广水市| 杭锦后旗| 蓬安县| 万山特区| 久治县| 永吉县| 霍林郭勒市| 伊金霍洛旗| 宣化县| 麻阳| 阜新| 监利县| 米易县| 宁海县| 涿州市| 博罗县| 济源市| 潼关县| 凤台县| 甘孜县| 南丹县| 轮台县| 轮台县| 建始县| 临安市| 务川| 富民县| 长兴县|