專利名稱:一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及網(wǎng)絡(luò)在線游戲的算法設(shè)計(jì)領(lǐng)域,特別涉及一種網(wǎng)絡(luò)游戲服務(wù)器
端行走系統(tǒng)的解決方法和裝置。
背景技術(shù):
角色扮演類多人在線網(wǎng)絡(luò)游戲(匪0RPG)中,行走是最基本的功能之一。由于玩家 的行走需要具備連續(xù)性,客戶端需要向服務(wù)器端不斷的發(fā)送玩家行走動(dòng)作的實(shí)時(shí)參數(shù),以 便保證玩家的動(dòng)作可以正常的在服務(wù)器端被實(shí)現(xiàn)。同時(shí),為了客戶端能夠及時(shí)的將服務(wù)器 的實(shí)現(xiàn)結(jié)果傳遞給玩家,服務(wù)器端在行走指令被實(shí)現(xiàn)之后必須通知客戶端實(shí)現(xiàn)后的結(jié)果。
由于服務(wù)器所需要承載大量的玩家同時(shí)在線游戲,而游戲中各種動(dòng)作指令及服務(wù) 器對(duì)其作出的響應(yīng)所帶來(lái)的頻繁數(shù)據(jù)發(fā)送,會(huì)在大量玩家的同時(shí)作用下帶來(lái)極其龐大的網(wǎng) 絡(luò)流量,甚至超出服務(wù)器硬件的承載能力。就目前的研究表明,用于網(wǎng)絡(luò)游戲服務(wù)器端支持 的服務(wù)器,其網(wǎng)卡承載能力往往是限制服務(wù)器承載能力的瓶頸。當(dāng)網(wǎng)卡達(dá)到滿負(fù)荷運(yùn)轉(zhuǎn)時(shí), 服務(wù)器的CPU和內(nèi)存的占用率僅僅會(huì)達(dá)到上限10% 20%。因此,任何對(duì)于網(wǎng)絡(luò)通信進(jìn)行 的優(yōu)化和算法都會(huì)很大程度的為運(yùn)營(yíng)商帶來(lái)成本上的節(jié)約,而作為游戲中最頻繁出現(xiàn)的行 走指令無(wú)疑是最好的優(yōu)化點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決方法和裝置,以提高服 務(wù)器的實(shí)際處理效果,減輕服務(wù)器的網(wǎng)絡(luò)壓力。 為了達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決 方法,包括 指令接收,通過(guò)指令鑒定環(huán)節(jié)來(lái)確定指令的合法性; 指令處理,依照指令的內(nèi)容和傳輸?shù)臄?shù)據(jù)調(diào)用動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢測(cè)算法 函數(shù),完成指令的處理; 指令接收確認(rèn),通過(guò)結(jié)果應(yīng)答算法函數(shù)來(lái)實(shí)現(xiàn)指令的接收確認(rèn)。 其中動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢測(cè)算法函數(shù)使一個(gè)行走處理流程可以處理一次
行走的連續(xù)指令; 其中結(jié)果應(yīng)答算法函數(shù)將指令接收到的回復(fù)數(shù)據(jù)與指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行 整合。 另一方面本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決裝置,包 括 指令接收模塊,用于通過(guò)指令鑒定模塊來(lái)確定指令的合法性; 指令處理模塊,用于依照指令的內(nèi)容和傳輸?shù)臄?shù)據(jù)調(diào)用動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí) 檢測(cè)算法函數(shù),完成指令的處理; 指令接收確認(rèn)模塊,用于通過(guò)結(jié) 應(yīng)答算法函數(shù)來(lái)實(shí)現(xiàn)指令的接收確認(rèn)。
其中,所述指令處理模塊,具體用于依照動(dòng)作預(yù)測(cè)算法和延時(shí)檢測(cè)算法使一個(gè)行 走處理流程可以處理一次行走的連續(xù)指令; 其中,所述指令接收模塊,具體用于通過(guò)結(jié)果應(yīng)答算法函數(shù)將指令接收到的回復(fù) 數(shù)據(jù)與指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行整合后發(fā)送。 與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)本發(fā)明實(shí)施例,通過(guò)動(dòng)作預(yù)測(cè)算法 來(lái)達(dá)到將原有持續(xù)性指令變?yōu)殚g斷性指令的效果,通過(guò)延時(shí)檢測(cè)算法來(lái)達(dá)到行走系統(tǒng)在間 斷性指令系統(tǒng)下的網(wǎng)絡(luò)適應(yīng)性,通過(guò)結(jié)果應(yīng)答算法來(lái)達(dá)到減少反饋用數(shù)據(jù)包的目的,使服 務(wù)器處理壓力小,網(wǎng)絡(luò)占用少,玩家體驗(yàn)效果好。
圖1為本發(fā)明實(shí)施例整個(gè)過(guò)程的流程圖; 圖2為本發(fā)明實(shí)施例指令接收階段的流程圖; 圖3為本發(fā)明實(shí)施例指令處理階段的流程圖; 圖4為本發(fā)明實(shí)施例指令校驗(yàn)的流程圖; 圖5為本發(fā)明實(shí)施例指令接收確階段認(rèn)的流程圖; 圖6為本發(fā)明實(shí)施例裝置的流程圖。
具體實(shí)施例方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;?于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其 他實(shí)施例,都屬于本發(fā)明的范圍。 本發(fā)明提供了一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決方法和裝置。對(duì)于網(wǎng)絡(luò)游戲 服務(wù)器端行走系統(tǒng),現(xiàn)有技術(shù)中,每一條行走指令的處理都要開啟一個(gè)新的行走流程來(lái)處 理,本實(shí)施例中,行走流程是按照"一次行走"來(lái)開啟的,并通過(guò)算法對(duì)指令和移動(dòng)校驗(yàn)進(jìn)行 優(yōu)化,具體包括以下步驟 如圖1所示,為本發(fā)明實(shí)施例整個(gè)過(guò)程的流程圖,具體包括 步驟101,指令接收階段通過(guò)指令鑒定環(huán)節(jié)來(lái)確定指令的合法性; 步驟102,指令處理階段通過(guò)依照指令的內(nèi)容以及動(dòng)作預(yù)測(cè)算法和延時(shí)檢測(cè)算法
來(lái)完成指令的處理; 步驟103,指令接收確認(rèn)階段通過(guò)結(jié)果應(yīng)答算法來(lái)完成指令接收確認(rèn)。 如圖2所述,為本發(fā)明實(shí)施例指令接收階段的流程圖,具體包括 步驟201,客戶端向服務(wù)器端發(fā)送移動(dòng)指令數(shù)據(jù)包,服務(wù)器端對(duì)數(shù)據(jù)包進(jìn)行解析并
發(fā)送至服務(wù)器游戲處理軟件的接收模塊; 步驟202,接收模塊對(duì)接收到的數(shù)據(jù)進(jìn)行解析,分析該數(shù)據(jù)的合法性,并將合法的 數(shù)據(jù)依照指令發(fā)送至用戶指令接口模塊; 步驟203,用戶指令接口模塊在獲得指令輸入后,檢查指令的格式,解析并檢查指
令參數(shù)。當(dāng)格式正確,參數(shù)合理時(shí)調(diào)用行走指令內(nèi)部函數(shù)接口,傳遞參數(shù)。 上述指令鑒定流程,客戶端向服務(wù)器端發(fā)送行走指令數(shù)據(jù)包,服務(wù)器端系統(tǒng)對(duì)獲得的數(shù)據(jù)包進(jìn)行解析并發(fā)送到接收模塊,接收模塊對(duì)數(shù)據(jù)解析并分析數(shù)據(jù)的合法性,然后 發(fā)送至用戶指令接口 ,用戶指令接口對(duì)數(shù)據(jù)包解析并分析數(shù)據(jù)結(jié)構(gòu)和參數(shù)的合法性,最后 將參數(shù)發(fā)送至行走指令內(nèi)部函數(shù)接口。 如圖3所示,為本發(fā)明實(shí)施例指令處理階段的流程圖,具體包括 步驟301,行走指令內(nèi)部函數(shù)通過(guò)接口獲得參數(shù)后,檢查該玩家的行走狀態(tài)。具體
包括 (1)當(dāng)玩家處于停止?fàn)顟B(tài)時(shí),函數(shù)會(huì)啟動(dòng)玩家的行走循環(huán)流程,實(shí)現(xiàn)玩家的行走動(dòng) 作; (2)當(dāng)玩家處于行走狀態(tài)時(shí),函數(shù)會(huì)向行走循環(huán)流程檢查當(dāng)前指令與預(yù)測(cè)指令的 相符性,如果相符,則繼續(xù)該循環(huán);如果不符,則停止該循環(huán),并使用新的指令參數(shù)重新啟動(dòng) 行走循環(huán)。 其中,預(yù)測(cè)指令指的就是動(dòng)作預(yù)測(cè)算法。當(dāng)玩家在行走狀態(tài)時(shí),允許服務(wù)器端在未 收到客戶端發(fā)送的繼續(xù)運(yùn)動(dòng)指令前,繼續(xù)讓玩家沿現(xiàn)有方向和速度進(jìn)行前進(jìn),并在指令實(shí) 際獲得時(shí)將其作為已處理指令進(jìn)行操作。 步驟302,當(dāng)行走循環(huán)運(yùn)行時(shí),會(huì)依照設(shè)定時(shí)間來(lái)發(fā)送玩家現(xiàn)在所處位置的數(shù)據(jù)包
給客戶端,同時(shí)根據(jù)延時(shí)檢測(cè)的具體設(shè)定,來(lái)判斷是否停止該行走循環(huán)的運(yùn)行。 其中,延時(shí)檢測(cè)是根據(jù)延時(shí)檢測(cè)算法來(lái)實(shí)現(xiàn)的。當(dāng)一個(gè)動(dòng)作預(yù)測(cè)被執(zhí)行后,我們
會(huì)檢測(cè)該指令的預(yù)測(cè)是否正確,如果在延時(shí)檢測(cè)時(shí)間內(nèi)未發(fā)現(xiàn)指令或者發(fā)現(xiàn)指令與要求不
同,則立刻停止移動(dòng),從而修正動(dòng)作預(yù)測(cè)的錯(cuò)誤結(jié)果。即行走動(dòng)作是靠指令發(fā)出的,而停止
行走的動(dòng)作是自動(dòng)生效的。 具體的,指令校驗(yàn)的方法分為單步校驗(yàn)和歷史校驗(yàn)兩部分
如圖4所示,為本發(fā)明實(shí)施例指令校驗(yàn)的流程圖。 步驟401,單步校驗(yàn)校驗(yàn)?zāi)K將會(huì)對(duì)現(xiàn)有數(shù)據(jù)和上一條數(shù)據(jù)相比,并判斷以下條 件 (1)在連續(xù)觸發(fā)的情況下,行走方向是相同的;
(2)位置是相鄰的; (3)收到指令的時(shí)刻與上條的時(shí)刻的間隔,和連續(xù)行走的指令間理論時(shí)間間隔之 偏差,在合理范圍以內(nèi)(比如[士100ms])的,則認(rèn)為校驗(yàn)通過(guò)。否則認(rèn)為未通過(guò)。
如果上述(1)條件成立,且(3)中的時(shí)間間隔偏差超過(guò)了某一較理想的限度(比 如士[50ms,100ms]),則認(rèn)為出現(xiàn)了一次不良數(shù)據(jù),并將出現(xiàn)次數(shù)進(jìn)行累計(jì),用于歷史校驗(yàn)。
同時(shí),換算獲得該時(shí)刻的瞬時(shí)速度,記錄以備歷史校驗(yàn)過(guò)程查驗(yàn)。
步驟402,歷史校驗(yàn) 速度檢查檢測(cè)出此刻的行走速度,如果速度大于理想值一定程度(如X = 10% ),則不能通過(guò)歷史校驗(yàn)。檢測(cè)速度的方法為 方法l :將當(dāng)次數(shù)據(jù)與之前第n次的數(shù)據(jù)比較,將位置偏差和時(shí)間間隔之比作為行 走至該點(diǎn)時(shí)以及行走該段路程的平均速度。 方法2 :對(duì)近n步的單步校驗(yàn)所保存的各點(diǎn)瞬時(shí)速度求平均值,作為行走該段路程 的平均速度。 上述X值可根據(jù)近n步中產(chǎn)生不良數(shù)據(jù)的次數(shù)多少而動(dòng)態(tài)調(diào)整。
5
穿越檢查僅在單步校驗(yàn)條件(2)不滿足,即指令消息丟失時(shí),且僅當(dāng)與上調(diào)指令 相差在3格以內(nèi)的情況下,才進(jìn)行穿越檢查。否則不能通過(guò),并直接拉回到歷史數(shù)據(jù)中最新 的位置。 在當(dāng)次數(shù)據(jù)與歷史數(shù)據(jù)中最新位置數(shù)據(jù)對(duì)應(yīng)的兩個(gè)位置中間,如果沒(méi)有阻擋性障 礙,則檢查通過(guò)。否則不能通過(guò)。 通過(guò)了速度檢查和穿越檢查的數(shù)據(jù),可以通過(guò)歷史校驗(yàn)。 總體來(lái)說(shuō)動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢測(cè)算法函數(shù)共同使一個(gè)行走處理流程可以 處理一次行走的連續(xù)指令。 如圖5所示,為本發(fā)明指令接收確階段認(rèn)的流程圖,具體包括 步驟501,整合指令接收到的回復(fù)數(shù)據(jù)和指令執(zhí)行后的效果數(shù)據(jù)。 其中,整合指令接收到的回復(fù)數(shù)據(jù)和指令執(zhí)行后的效果數(shù)據(jù)是通過(guò)結(jié)果應(yīng)答算法
實(shí)現(xiàn)的。 步驟502,將整合后的數(shù)據(jù)發(fā)送給服務(wù)器。 上述指令接收確認(rèn)流程,將指令接收到的回復(fù)數(shù)據(jù)和指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行
整合后發(fā)送,通過(guò)對(duì)兩個(gè)數(shù)據(jù)的整合,使得服務(wù)器發(fā)送的數(shù)據(jù)包數(shù)量降低,從而減輕了服務(wù)
器的網(wǎng)絡(luò)流量負(fù)擔(dān),很大程度上減少了網(wǎng)絡(luò)延時(shí)對(duì)于玩家體驗(yàn)的影響。 如圖6所示,為本發(fā)明實(shí)施例裝置的流程圖,具體包括 指令接收模塊601,用于通過(guò)指令鑒定來(lái)確定指令的合法性; 指令處理模塊602,用于依照指令的內(nèi)容和傳輸?shù)臄?shù)據(jù)調(diào)用動(dòng)作預(yù)測(cè)算法函數(shù)和 延時(shí)檢測(cè)算法函數(shù),完成指令的處理; 指令接收確認(rèn)模塊603,用于通過(guò)結(jié)果應(yīng)答算法函數(shù)來(lái)實(shí)現(xiàn)指令的接收確認(rèn)。
其中,指令處理模塊602,具體用于依照動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢測(cè)算法函數(shù)使 一個(gè)行走處理流程可以處理一次行走的連續(xù)指令。 其中,指令接收確認(rèn)模塊603,具體用于通過(guò)結(jié)果應(yīng)答算法函數(shù)將指令接收到的回 復(fù)數(shù)據(jù)與指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行整合后發(fā)送。 上述實(shí)施例中,客戶端向服務(wù)器端發(fā)送數(shù)據(jù)包,數(shù)據(jù)通過(guò)服務(wù)器端指令接收模塊 601接收并鑒定其合法性;如果合法則將指令傳送到指令處理模塊602,通過(guò)動(dòng)作預(yù)測(cè)算法 函數(shù)和延時(shí)檢測(cè)算法函數(shù)完成對(duì)指令的處理;最后將處理后的指令發(fā)送到指令接收確認(rèn)模 塊603,通過(guò)結(jié)果應(yīng)答算法函數(shù)將指令接收到的回復(fù)數(shù)據(jù)與指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行整 合后發(fā)送,完成一次行走處理流程。 最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制, 盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依 然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這些修改或者等同替換亦不能使修 改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決方法,其特征在于,包括指令接收,通過(guò)指令鑒定環(huán)節(jié)來(lái)確定指令的合法性;指令處理,依照指令的內(nèi)容和傳輸?shù)臄?shù)據(jù)調(diào)用動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢測(cè)算法函數(shù),完成指令的處理;指令接收確認(rèn),通過(guò)結(jié)果應(yīng)答算法函數(shù)來(lái)實(shí)現(xiàn)指令的接收確認(rèn)。
2. 如權(quán)利要求1所述行走系統(tǒng)的解決方法,其特征在于,動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢 測(cè)算法函數(shù)使一個(gè)行走處理流程可以處理一次行走的連續(xù)指令。
3. 如權(quán)利要求1所述行走系統(tǒng)的解決方法,其特征在于,結(jié)果應(yīng)答算法函數(shù)將指令接 收到的回復(fù)數(shù)據(jù)與指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行整合。
4. 一種網(wǎng)絡(luò)游戲游戲服務(wù)器端行走系統(tǒng)的解決裝置,其特征在于,包括 指令接收模塊,用于通過(guò)指令鑒定來(lái)確定指令的合法性;指令處理模塊,用于依照指令的內(nèi)容和傳輸?shù)臄?shù)據(jù)調(diào)用動(dòng)作預(yù)測(cè)算法函數(shù)和延時(shí)檢測(cè) 算法函數(shù),完成指令的處理;指令接收確認(rèn)模塊,用于通過(guò)結(jié)果應(yīng)答算法函數(shù)來(lái)實(shí)現(xiàn)指令的接收確認(rèn)。
5. 如權(quán)利要求4所述行走系統(tǒng)的解決裝置,其特征在于,所述指令處理模塊,具體用于依照動(dòng)作預(yù)測(cè)算法和延時(shí)檢測(cè)算法使一個(gè)行走處理流程可以處理一次行走的連續(xù)指令。
6. 如權(quán)利要求4所述行走系統(tǒng)的解決裝置,其特征在于,所述指令接收模塊,具體用于 通過(guò)結(jié)果應(yīng)答算法函數(shù)將指令接收到的回復(fù)數(shù)據(jù)與指令執(zhí)行后的效果數(shù)據(jù)進(jìn)行整合后發(fā)
全文摘要
本發(fā)明實(shí)施例公開了一種網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決方法和裝置,所述網(wǎng)絡(luò)游戲服務(wù)器端行走系統(tǒng)的解決方法包括通過(guò)指令鑒定環(huán)節(jié)確定指令的合法性;依照指令的內(nèi)容和傳輸?shù)臄?shù)據(jù)調(diào)用相關(guān)聯(lián)的函數(shù),完成指令的處理;通過(guò)結(jié)果應(yīng)答算法來(lái)達(dá)到減少反饋用數(shù)據(jù)包的目的,使服務(wù)器處理壓力小,網(wǎng)絡(luò)占用少,玩家體驗(yàn)效果好。
文檔編號(hào)G06F9/44GK101788909SQ20101010265
公開日2010年7月28日 申請(qǐng)日期2010年1月28日 優(yōu)先權(quán)日2010年1月28日
發(fā)明者祝強(qiáng) 申請(qǐng)人:北京天空堂科技有限公司