專利名稱:在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種圖像處理技術(shù),特別是一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng)和方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)游戲逐漸取代單機(jī)游戲成為電腦游戲的主流,并且仍在高速發(fā)展中。其中大型多人在線角色扮演網(wǎng)絡(luò)游戲(MMORPG,Massive Multiplayer Online Role-Playing Game)是目前最受廣大玩家推崇的網(wǎng)絡(luò)游戲形式。在MMORPG中通常會有很多游戲場景,在游戲場景中,每個玩家可以看到他附近的其他玩家的很多游戲行為,比如其他玩家的移動和戰(zhàn)斗。舉例如玩家扮演的角色Henry (相對于該玩家是主角)可以在場景中可以看到其他玩家,有的玩家在打坐有的玩家在奔跑,有的玩家騎著龍,有的玩家騎著虎。一個游戲場景要比玩家的顯示屏大得多,玩家所能看到的只是他附近的這些玩家,而不是整個游戲場景。通常將玩家所能看到的范圍稱為玩家的視野。主角Henry自己位于自己視野的中心,每當(dāng)主角Henry移動位置之后,玩家所能看到的視野可能將發(fā)生變化,有的玩家扮演的角色從自己的視野中消失了,而又有其他的玩家扮演的角色進(jìn)入了玩家的視野(也就是Henry的視野)。作為網(wǎng)絡(luò)游戲,MMORPG包括服務(wù)器和客戶端,客戶端負(fù)責(zé)將游戲場景的展現(xiàn)給玩家,服務(wù)器負(fù)責(zé)控制所有在線的玩家以及游戲邏輯的計算和處理,也就是說,玩家所能看到各種玩家角色和非玩家角色均是由該網(wǎng)絡(luò)游戲的服務(wù)器控制的,服務(wù)器控制并管理著各玩家的視野??蛻舳撕头?wù)器之間通過收發(fā)游戲的數(shù)據(jù)消息,相互傳遞游戲的控制邏輯。目前MMORPG中的玩家的視野處理的慣用流程如圖I所示,在玩家進(jìn)入場景之前,先由客戶端向服務(wù)器發(fā)送進(jìn)入場景請求,服務(wù)器收到該請求信息后向客戶端發(fā)送批準(zhǔn)信息,即告訴玩家所在客戶端可以進(jìn)入場景;當(dāng)玩家進(jìn)入游戲場景后,服務(wù)器會告之該玩家的客戶端,有哪些角色目前可以看到,如顯示玩家A、顯示玩家B以及顯示玩家A攜帶的坐騎,客戶端收到消息后,將這個角色顯示出來,當(dāng)有角色走遠(yuǎn)離開或下線不在游戲中時,服務(wù)器會通知客戶端將已經(jīng)顯示的這個角色刪除,如服務(wù)器向客戶端發(fā)送玩家A下線需將其從視野中刪除的信息。服務(wù)器控制著客戶端的顯示,因此可以理解為是客戶端的眼睛。在MMORPG中,角色移動是游戲中最頻繁的處理業(yè)務(wù)之一。角色移動會引發(fā)玩家自己的視野區(qū)域的變化,而玩家的視野區(qū)域如果變化,又會引發(fā)一系列的角色進(jìn)入與角色離開的通知消息,服務(wù)器需要對角色移動后的玩家的視野區(qū)域重新進(jìn)行計算和處理,這對服務(wù)器性能的影響是比較大的。采用這種玩家的視野的處理技術(shù)存在的弊端是,在MMORPG中,單臺服務(wù)器的同時在線人數(shù)超過千人,服務(wù)器控制并管理著上千玩家的視野,或者說是管理著上千人的眼睛,并且需要實(shí)時的根據(jù)每個玩家位置的移動重新進(jìn)行其視野的計算和處理,并及時告之客戶端什么時候有角色進(jìn)入,什么時候有角色離開,這種計算量和處理量是十分龐大的,尤其在線人數(shù)越多,服務(wù)器的計算量和數(shù)據(jù)處理量更大,使得服務(wù)器負(fù)荷過重造成其運(yùn)算處理速度逐漸緩慢,從而導(dǎo)致服務(wù)器性能下降,進(jìn)一步影響了各在線玩家在游戲時整體的視覺感受,造成玩家在游戲時畫面不流暢、無法順利進(jìn)行游戲任務(wù),使得玩家無法體驗順暢游戲的樂趣。為避免這些問題,通常在MMORPG中提高服務(wù)器配置以提升其綜合性能,但這無疑提高了成本。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有的MMORPG中的玩家的視野處理技術(shù)由于服務(wù)器的計算量和數(shù)據(jù)處理量龐大導(dǎo)致服務(wù)器性能下降而提高服務(wù)器配置又會導(dǎo)致成本高的問題,提供一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng),通過在玩家的視野區(qū)域變化的基礎(chǔ)上進(jìn)行視野的計算處理,能夠減少服務(wù)器計算量和數(shù)據(jù)處理量,提高服務(wù)器性能,本發(fā)明還提供一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法。本發(fā)明的技術(shù)方案如下一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng),包括服務(wù)器和客戶端,其特征在于,所述服務(wù)器包括依次連接的分配和存儲模塊、視野區(qū)域計算模塊、檢測模塊、視野變化計算 模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊,所述服務(wù)器還包括服務(wù)器數(shù)據(jù)庫,所述服務(wù)器數(shù)據(jù)庫分別與分配和存儲模塊、視野區(qū)域計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連;所述客戶端包括終端數(shù)據(jù)接收和處理模塊,所述終端數(shù)據(jù)接收和處理模塊與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連;所述分配和存儲模塊將整個場景劃分為若干相同大小的視野單元格并進(jìn)行標(biāo)識,所述視野單元格存儲位于其內(nèi)的角色集合,所述視野區(qū)域計算模塊將主角放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,所述檢測模塊檢測主角的移動是否帶來其所在視野單元格的變化,當(dāng)存在變化時,視野變化計算模塊計算得到增加和減少的視野單元格區(qū)域,所述服務(wù)器數(shù)據(jù)發(fā)送和處理模塊根據(jù)增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況向客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送控制指令,所述終端數(shù)據(jù)接收和處理模塊接收所述控制指令并執(zhí)行相應(yīng)動作。所述分配和存儲模塊按照二維坐標(biāo)系的坐標(biāo)的方式標(biāo)示各視野單元格;當(dāng)所述視野單元格內(nèi)的角色位于兩相鄰視野單元格的公共側(cè)邊時,所述角色屬于兩相鄰視野單元格中處于左側(cè)或上側(cè)的視野單元格內(nèi)。所述視野區(qū)域計算模塊計算玩家的視野區(qū)域的大小是預(yù)設(shè)固定值并且所述玩家的視野以玩家所在位置為中心。所述視野變化計算模塊根據(jù)主角移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的幾何計算得到增加和減少的視野單元格區(qū)域。所述服務(wù)器數(shù)據(jù)發(fā)送和處理模塊調(diào)用服務(wù)器數(shù)據(jù)庫后將增加的視野單元格區(qū)域內(nèi)的角色進(jìn)入的消息和減少的視野單元格區(qū)域內(nèi)的角色離開的消息發(fā)送至客戶端的終端數(shù)據(jù)接收和處理模塊。所述視野區(qū)域計算模塊與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連以進(jìn)行玩家的視野初始化,在主角剛進(jìn)入場景時,所述視野區(qū)域計算模塊將計算的玩家的視野區(qū)域傳輸至服務(wù)器數(shù)據(jù)發(fā)送和處理模塊,所述服務(wù)器數(shù)據(jù)發(fā)送和處理模塊從服務(wù)器數(shù)據(jù)庫中查找所述玩家的視野區(qū)域內(nèi)的視野單元格內(nèi)的角色,并向客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送查找到的角色進(jìn)入玩家的視野的控制指令。一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法,其特征在于,所述方法通過服務(wù)器先將整個場景劃分為若干相同大小的視野單元格并進(jìn)行標(biāo)識,以將整個場景中的各角色集合存儲于所述視野單元格內(nèi),再將主角放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,然后檢測主角的移動是否帶來其所在視野單元格的變化,當(dāng)存在變化時就計算得到增加和減少的視野單元格區(qū)域,并根據(jù)增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況向客戶端發(fā)送控制指令,客戶端接收控制指令并執(zhí)行相應(yīng)動作。所述服務(wù)器按照二維坐標(biāo)系的坐標(biāo)的方式標(biāo)示各視野單元格;當(dāng)所述視野單元格內(nèi)的角色位于兩相鄰視野單元格的公共側(cè)邊時,所述角色屬于兩相鄰視野單元格中處于左側(cè)或上側(cè)的視野單元格內(nèi)。所述服務(wù)器計算玩家的視野區(qū)域的大小是預(yù)設(shè)固定值并且所述玩家的視野以玩家所在位置為中心。所述服務(wù)器根據(jù)主角移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的幾何計算得到增加和減少的視野單元格區(qū)域。 所述服務(wù)器調(diào)用自身數(shù)據(jù)庫后將增加的視野單元格區(qū)域內(nèi)的角色進(jìn)入的消息和減少的視野單元格區(qū)域內(nèi)的角色離開的消息發(fā)送至客戶端。在主角剛進(jìn)入場景時先進(jìn)行玩家的視野初始化,服務(wù)器在計算的玩家的視野區(qū)域后查找所述玩家的視野區(qū)域內(nèi)的視野單元格內(nèi)的角色,并向客戶端發(fā)送查找到的角色進(jìn)入玩家的視野的控制指令。本發(fā)明的技術(shù)效果如下本發(fā)明提供的在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng),在服務(wù)器中設(shè)置分配和存儲模塊、視野區(qū)域計算模塊、檢測模塊、視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊,通過分配和存儲模塊將整個場景劃分為若干相同大小的視野單元格并通過調(diào)用服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)使得場景中的各玩家扮演的角色被存儲到各視野單元格中,設(shè)置檢測模塊檢測主角的移動是否帶來所在視野單元格的變化,只有當(dāng)檢測到視野單元格存在變化時才通過視野變化計算模塊計算得到增加和減少的視野單元格區(qū)域,這樣,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊只需要將增加和減少的視野單元格區(qū)域中的角色變化情況向客戶端發(fā)送控制指令即可。本發(fā)明的視野處理系統(tǒng)通過分配和存儲模塊劃分視野單元格,視野區(qū)域計算模塊計算玩家的視野區(qū)域,檢測模塊、視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊配合工作,使得玩家移動引發(fā)視野單元格的變化時僅針對變化的視野單元格區(qū)域的角色變化情況進(jìn)行計算和處理,而當(dāng)主角移動不會引發(fā)視野單元格的變化時,視野變化計算模塊不工作即不進(jìn)行視野單元格區(qū)域的變化計算,這樣,在主角短距離移動不會引發(fā)視野單元格變化時服務(wù)器無需考慮其他角色是否進(jìn)入和離開玩家的視野,也無需向客戶端發(fā)送消息通知,而當(dāng)主角長距離移動引發(fā)視野單元格變化時服務(wù)器只需計算變化的視野單元格區(qū)域內(nèi)的角色變化情況即可,避免了現(xiàn)有技術(shù)中在玩家移動時需實(shí)時計算玩家視野區(qū)域內(nèi)的所有角色變化情況帶來的計算量和數(shù)據(jù)處理量龐大的問題,本發(fā)明在主角長距離移動時未變化的視野單元格區(qū)域以及主角短距離移動時服務(wù)器都不進(jìn)行角色變化的計算和處理,所以能夠減少服務(wù)器計算量和數(shù)據(jù)處理量,有效優(yōu)化服務(wù)器的性能,并可提升MMORPG中同時在線人數(shù),故降低了對服務(wù)器性能的要求,也無需再配備高成本高配置的服務(wù)器,使玩家順暢網(wǎng)游。分配和存儲模塊按照二維坐標(biāo)系的坐標(biāo)的方式標(biāo)示各視野單元格,使得分配和存儲模塊工作快速簡單直觀地完成視野單元格的標(biāo)記,也使得后續(xù)的視野區(qū)域計算模塊的工作變得簡單易行,降低了其計算難度和計算量,提高了玩家的視野處理的效率。視野區(qū)域計算模塊以玩家所在位置為中心并按照預(yù)設(shè)的固定值計算玩家的視野區(qū)域的大小,這樣使得視野區(qū)域計算模塊計算原理簡單,提高了視野區(qū)域計算模塊的工作效率,減少服務(wù)器計算量,同時也更符合了游戲設(shè)置時玩家自己位于自己視野的中心的原則。視野變化計算模塊根據(jù)主角移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的幾何計算得到增加和減少的視野單元格區(qū)域,由于視野單元格是按照二維坐標(biāo)系的坐標(biāo)的方式表示,故主角移動前后所在視野單元格具有不同的坐標(biāo),只需將兩視野單元格的坐標(biāo)簡單的 幾何計算即可得到視野單元格變化的部分,即得到增加和減少的視野單元格區(qū)域,該計算簡單快速,提高了視野變化計算模塊的計算速度和信息處理速度,進(jìn)一步提高了視野處理的效率。服務(wù)器數(shù)據(jù)發(fā)送和處理模塊接收到視野變化計算模塊得到的增加和減少的視野單元格區(qū)域后,調(diào)用服務(wù)器數(shù)據(jù)庫,得到在增加的視野單元格區(qū)域內(nèi)的角色進(jìn)入的消息以及在減少的視野單元格區(qū)域內(nèi)的角色離開的消息,并將該角色進(jìn)入和角色離開的消息發(fā)送至客戶端,這種只計算變化的視野單元格區(qū)域的處理方式減少了服務(wù)器計算量和數(shù)據(jù)處理量,使得服務(wù)器簡單高效地實(shí)行視野的處理,并可以取得良好的視野處理效果,提高了服務(wù)器的性能。本發(fā)明涉及的在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法,通過服務(wù)器將整個場景劃分為若干相同大小的視野單元格以支持在整個場景中選擇一定區(qū)域的玩家,各玩家扮演的角色集合存儲在所劃分的各視野單元格內(nèi),通過檢測主角的移動是否帶來其所在視野單元格的變化,以決定是否進(jìn)行視野單元格區(qū)域變化的計算,只有在視野單元格發(fā)生變化時,才進(jìn)行視野單元格區(qū)域變化的計算,計算得到增加和減少的視野單元格區(qū)域并根據(jù)這些視野單元格區(qū)域內(nèi)的角色變化情況向客戶端發(fā)送控制指令,避免了玩家扮演的主角在移動時實(shí)時計算玩家全部視野區(qū)域內(nèi)的角色的情況造成的計算處理量龐大的問題,玩家扮演的主角在移動但沒發(fā)生視野單元格變化時不進(jìn)行視野范圍的計算,故玩家的視野內(nèi)的角色的信息不變,即不會對自己和其他玩家扮演的角色產(chǎn)生角色進(jìn)入或角色離開的信息,所以減少了信息傳遞量,玩家扮演的主角在移動并發(fā)生視野單元格變化時僅進(jìn)行變化的視野單元格區(qū)域內(nèi)的角色變化情況的處理,即僅對增加和減少的視野單元格區(qū)域內(nèi)的角色變化產(chǎn)生信息,同樣減少了信息傳遞量,本發(fā)明的所述方法減少服務(wù)器計算量和數(shù)據(jù)處理量,有效優(yōu)化服務(wù)器的性能,并可提升MMORPG中同時在線人數(shù)。
圖I為現(xiàn)有的在線角色扮演網(wǎng)絡(luò)游戲中的玩家的視野處理的流程圖。圖2為本發(fā)明在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng)的優(yōu)選結(jié)構(gòu)示意圖。圖3為本發(fā)明視野處理系統(tǒng)中的分配和存儲模塊以及視野區(qū)域計算模塊的工作示意圖。圖4為本發(fā)明視野處理系統(tǒng)初始化流程圖。圖5為本發(fā)明視野處理系統(tǒng)中的檢測模塊檢測主角的移動不會引起視野單元格變化時的工作示意圖。
圖6為本發(fā)明視野處理系統(tǒng)中的檢測模塊檢測主角的移動引起視野單元格變化時的工作示意圖。圖7為本發(fā)明視野處理系統(tǒng)中的視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊在圖6所示狀態(tài)發(fā)生時的工作流程圖。圖8為本發(fā)明在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法的流程圖。圖9為本發(fā)明在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法的優(yōu)選流程圖。圖中各標(biāo)號列示如下I 一整個場景;2 —玩家的視野;3 —視野單元格;4 一減少的視野單元格區(qū)域;5 —增加的視野單元格區(qū)域。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明進(jìn)行說明。本發(fā)明涉及一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng),其優(yōu)選結(jié)構(gòu)示意圖如圖2所示,該視野處理系統(tǒng)包括服務(wù)器和客戶端,其中,服務(wù)器包括分配和存儲模塊、視野區(qū)域計算模塊、檢測模塊、視野變化計算模塊、服務(wù)器數(shù)據(jù)發(fā)送和處理模塊以及服務(wù)器數(shù)據(jù)庫,分配和存儲模塊、視野區(qū)域計算模塊、檢測模塊、視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊依次連接,服務(wù)器數(shù)據(jù)庫分別與分配和存儲模塊、視野區(qū)域計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連,視野區(qū)域計算模塊還優(yōu)選與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連;客戶端包括終端數(shù)據(jù)接收和處理模塊,該終端數(shù)據(jù)接收和處理模塊與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連。圖3為分配和存儲模塊以及視野區(qū)域計算模塊的工作示意圖,圖中標(biāo)示為A、B、C、D、E、F、G和H等的人物均為MMORPG中的角色,其中標(biāo)示D代表的人物是玩家扮演的角色,即主角D,其他人物是非玩家扮演的角色。整個場景I所示的區(qū)域塊是單個游戲場景的區(qū)域大小。分配和存儲模塊將整個場景I劃分為若干相同大小的視野單元格3并進(jìn)行標(biāo)識,各視野單元格3如圖3所示的在整個場景I中用虛線劃分的眾多小格,分配和存儲模塊調(diào)用服務(wù)器數(shù)據(jù)庫使得劃分的視野單元格3存儲當(dāng)前位于視野單元格3內(nèi)的角色集合,該實(shí)施例中的分配和存儲模塊按照二維坐標(biāo)系的坐標(biāo)的方式標(biāo)示視野單元格3,比如整個場景I中最左上角的視野單元格在二維坐標(biāo)系中標(biāo)示為(1,I ),該視野單元格中存儲兩個角色A和B,而主角D位于(4,2)坐標(biāo)的視野單元格中。如果有角色恰巧位于兩相鄰視野單元格的公共側(cè)邊的時候,則可設(shè)定此時該角色屬于兩相鄰視野單元格中處于左側(cè)或上側(cè)的視野單元格內(nèi),以使得每個角色所屬視野單元格是唯一確定的。
視野區(qū)域計算模塊將主角放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,客戶端坐標(biāo)觸發(fā)位置即為玩家的位置,也就是主角D所處位置,視野區(qū)域計算模塊是以玩家所在位置為中心計算玩家的視野區(qū)域,如標(biāo)示2所示的區(qū)域塊是主角D的視野,即玩家的視野。玩家的視野2的區(qū)域的大小優(yōu)選為預(yù)設(shè)的固定值,該固定值可選擇為通用的客戶端的顯示屏的大小,如預(yù)設(shè)采用15寸顯示屏的大小作為玩家視野2的區(qū)域大小,此時如果有在線玩家所在客戶端采用19寸的顯示屏,則該玩家的視野也僅為15寸顯示屏的視野,特別說明的是,所述的玩家的視野僅針對其他玩家或者玩家的坐騎等,并不包括花園、涼亭等場景背景,因為場景背景是靜止不動的,玩家看到的場景背景以及玩家的移動帶來的場景背景的變化只需采用簡單的圖像處理和顯示技術(shù)。故即便客戶端采用19寸的顯示屏,玩家能夠看到19寸的顯示屏顯示的場景背景,但是看到其他玩家以及其坐騎的情況仍為預(yù)設(shè)的15寸顯示屏的大小的視野范圍。如果主角D所處位置在左上角的視野單元格內(nèi),視野區(qū)域計算模塊以主角D所在的位置為中心計算玩家的視野2,則計算得到的玩家的視野僅為圖3所示玩家的視野區(qū)域大小的四分之一。視野區(qū)域計算模塊優(yōu)選與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連以進(jìn)行玩家的視野初始化,初始化流程圖如圖4所示,客戶端的終端數(shù)據(jù)接收和處理模塊向服務(wù)器數(shù)據(jù)發(fā)送和處理模塊發(fā)送數(shù)據(jù)信息以告知主角D請求進(jìn)入游戲場景,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊再向客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送主角D可以進(jìn)入場景的控制指令,在主角剛進(jìn)入場景時,通過視野區(qū)域計算模塊將主角D放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端當(dāng)前坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,再由服務(wù)器數(shù)據(jù)發(fā)送和處理模塊從服務(wù)器數(shù)據(jù)庫中查找所述玩家的視野區(qū)域內(nèi)的各視野單元格內(nèi)的角色,如圖3所示,數(shù)據(jù)發(fā)送和處理模塊查 找玩家的視野區(qū)域內(nèi)的視野單元格,再向查找到的這些視野單元格中的角色C、E和G所代表的玩家(或者說是玩家C、E和G)發(fā)送角色D進(jìn)入場景的數(shù)據(jù)信息(對于玩家而言,自己扮演的角色為主角,主角D是針對扮演該角色的玩家而言,相對于扮演角色C、E和G的玩家,則稱為角色D),同時向扮演主角D的客戶端發(fā)送角色C、E和G進(jìn)入玩家的視野的控制指令。在該流程中,由服務(wù)器向各客戶端發(fā)送所述控制指令是因為視野是相互的,在角色D能看到角色C時,角色C同樣也能看到角色D。本發(fā)明所述的視野處理系統(tǒng)中的檢測模塊檢測主角D的移動是否帶來其所在視野單元格的變化。當(dāng)檢測模塊檢測主角D的移動不會引起視野單元格變化時,也就是主角D在自己當(dāng)前所屬的視野單元格內(nèi)移動,此時為主角D的短距離移動,如圖5所示,主角D從位置I移動到位置2,在二維坐標(biāo)系中主角D移動前后的位置I和位置2均位于坐標(biāo)為(4,
2)的視野單元格中,此時視野變化計算模塊不工作即不進(jìn)行視野單元格區(qū)域的變化計算,由于任何玩家不需要關(guān)注自己的視野變化,因此此時不會對自己和其他玩家產(chǎn)生角色進(jìn)入和離開的消息,減少了數(shù)據(jù)消息量。也就是說,當(dāng)主角D短距離移動(在在自己當(dāng)前所屬的視野單元格內(nèi)移動)不會引發(fā)視野單元格變化時服務(wù)器無需考慮其他角色是否進(jìn)入和離開玩家的視野,也無需向客戶端發(fā)送消息通知,所以減少了服務(wù)器計算量和數(shù)據(jù)處理量,有效優(yōu)化服務(wù)器的性能。當(dāng)檢測模塊檢測主角D的移動引起視野單元格變化時,也就是主角D的移動路徑跨躍了不同的視野單元格,此時為主角D的長距離移動,如圖6所示,主角D從位置I移動到位置2,在二維坐標(biāo)系中主角D從位置I所在的(4,2)坐標(biāo)的視野單元格移動到位置2所在的(5,3)坐標(biāo)的視野單元格中,此時視野變化計算模塊計算得到增加和減少的視野單元格區(qū)域,在該實(shí)施例所示的二維坐標(biāo)系中,視野變化計算模塊只需將主角D移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的簡單快速的幾何計算,如將(4,2)坐標(biāo)的視野單元格與(5,
3)坐標(biāo)的視野單元格直接作差,就可以計算出視野變化的部分,即得到增加和減少的視野單元格區(qū)域。該實(shí)施例可理解為玩家的視野區(qū)域在二維坐標(biāo)系的兩個坐標(biāo)軸的方向各移動了一個視野單元格,即向右同時向下均移動了一個視野單元格。在圖6所示實(shí)施例中,斜線所示區(qū)域即為視野變化計算模塊計算得到的主角D離開的視野單元格區(qū)域,即減少的視野單元格區(qū)域4,網(wǎng)格所示區(qū)域即為視野變化計算模塊計算得到的主角D進(jìn)入的視野單元格區(qū)域,即增加的視野單元格區(qū)域5。服務(wù)器數(shù)據(jù)發(fā)送和處理模塊根據(jù)增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況向客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送控制指令,所述終端數(shù)據(jù)接收和處理模塊接收所述控制指令并執(zhí)行相應(yīng)動作。具體為,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊調(diào)用服務(wù)器數(shù)據(jù)庫,得到增加的視野單元格區(qū)域內(nèi)的角色進(jìn)入的消息和減少的視野單元格區(qū)域內(nèi)的角色離開的消息,該實(shí)施例中,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊得到減少的視野單元格區(qū)域4內(nèi)的角色有角色C,增加的視野單元格區(qū)域5內(nèi)的角色有角色F和H,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊僅對視野變化部分進(jìn)行角色進(jìn)入離開消息的通知以減少了消息量,即對于主角D移動引發(fā)的視野變化,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊只需要告訴角色C所扮玩家的客戶端(或者說是玩家C)角色D離開,告訴角色F和H所扮玩家的客戶端(或者說是玩家F和H)角色D進(jìn)入即可,對于玩家所扮的主角D自身而言,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊只需向主角D所扮玩家的客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送角色C離開以及角色F和H進(jìn)入的消息,即發(fā)送控制指令,該終端數(shù)據(jù)接收和處理模塊接收到服務(wù)器數(shù)據(jù)發(fā)送和處理模塊的控制指令并執(zhí)行相應(yīng)動作。 圖7為本發(fā)明視野處理系統(tǒng)中的視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊在圖6所示狀態(tài)發(fā)生時的工作流程圖??蛻舳说慕K端數(shù)據(jù)接收和處理模塊向服務(wù)器數(shù)據(jù)發(fā)送和處理模塊發(fā)送數(shù)據(jù)信息以告訴服務(wù)器主角D從位置I變化為位置2,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊調(diào)用服務(wù)器數(shù)據(jù)庫并刷新主角D在視野單元格中的位置,具體是將主角D從原來的視野單元格中移除同時將主角D添加到新的視野單元格中;檢測模塊檢測到主角D位置的變化引起了視野單元格變化后,服務(wù)器中的視野變化計算模塊計算得到增加和減少的視野單元格區(qū)域,即得到減少的視野單元格區(qū)域4和增加的視野單元格區(qū)域5,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊向位于減少的視野單元格區(qū)域4內(nèi)的角色C發(fā)送主角D離開的控制指令,向客戶端(該客戶端所指為主角D所扮玩家的客戶端)的終端數(shù)據(jù)接收和處理模塊發(fā)送角色C離開的控制指令,即服務(wù)器告訴主角D角色C離開;服務(wù)器數(shù)據(jù)發(fā)送和處理模塊還向位于增加的視野單元格區(qū)域5內(nèi)的角色F和H發(fā)送主角D進(jìn)入的控制指令,向客戶端(該客戶端所指為主角D所扮玩家的客戶端)的終端數(shù)據(jù)接收和處理模塊發(fā)送角色F和H進(jìn)入的控制指令,即服務(wù)器告訴主角D角色F和H進(jìn)入;所述終端數(shù)據(jù)接收和處理模塊接收到服務(wù)器數(shù)據(jù)發(fā)送和處理模塊的控制指令并執(zhí)行相應(yīng)動作。在圖7所示流程中,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊是先處理減少的視野單元格區(qū)域4的角色離開的數(shù)據(jù)信息,再處理增加的視野單元格區(qū)域5內(nèi)的角色進(jìn)入的數(shù)據(jù)信息;當(dāng)然,服務(wù)器數(shù)據(jù)發(fā)送和處理模塊也可以更換數(shù)據(jù)信息處理的先后順序,先處理增加的視野單元格區(qū)域5內(nèi)的角色進(jìn)入的數(shù)據(jù)信息,再處理減少的視野單元格區(qū)域4的角色離開的數(shù)據(jù)信息。需要說明的是,針對各角色的移動,月艮務(wù)器在進(jìn)行數(shù)據(jù)處理時是有先后順序的,當(dāng)進(jìn)行主角D移動的視野處理時,其他玩家為靜止?fàn)顟B(tài)。本發(fā)明還涉及一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法,該方法的流程圖如圖8所示,通過服務(wù)器先將整個場景劃分為若干相同大小的視野單元格并進(jìn)行標(biāo)識,以將整個場景中的各角色集合存儲于所述視野單元格內(nèi),再將主角放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,在主角發(fā)生移動時先調(diào)用服務(wù)器數(shù)據(jù)庫并更新主角移動后在視野單元格中的位置,然后檢測主角的移動是否帶來其所在視野單元格的變化,當(dāng)存在變化時就計算得到增加和減少的視野單元格區(qū)域,并根據(jù)增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況向客戶端發(fā)送控制指令,客戶端接收控制指令并執(zhí)行相應(yīng)動作。本發(fā)明所述的MMORPG的視野處理方法的優(yōu)選流程圖如圖9所示,在該實(shí)施例中,服務(wù)器在標(biāo)示視野單元格時優(yōu)選按照二維坐標(biāo)系的坐標(biāo)的方式進(jìn)行標(biāo)示,可參考圖3所示的示意圖,在整個場景I中用虛線劃分的眾多格子即為標(biāo)示后的視野單元格3,各視野單元格3用于存儲當(dāng)前位于格子內(nèi)的各角色集合,如主角D位于(4,2)坐標(biāo)的視野單元格中,角色C位于(2,2)坐標(biāo)的視野單元格中,角色A和B集合于(I,I)坐標(biāo)的視野單元格中,如果有角色恰巧位于兩相鄰視野單元格的公共側(cè)邊的時候,為使角色所屬視野單元格唯一確定,則可設(shè)定此時該角色屬于其中的一個視野單元格,如設(shè)定該角色屬于兩相鄰視野單元格中處于左側(cè)或上側(cè)的視野單元格內(nèi)。圖9所示流程中,客戶端向服務(wù)器發(fā)送主角D請求進(jìn)入游戲場景的請求時,服務(wù)器向客戶端發(fā)送主角D可以進(jìn)入場景的控制指令,在主角剛進(jìn)入場景時服務(wù)器根據(jù)客戶端坐 標(biāo)觸發(fā)位置所在的坐標(biāo)計算出玩家所在的視野單元格,將玩家加入到該視野單元格中并更新服務(wù)器數(shù)據(jù)庫,服務(wù)器將主角D放入當(dāng)前位置所屬的視野單元格后根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,如圖3標(biāo)示2所指的區(qū)域即為玩家的視野2的區(qū)域,該區(qū)域的大小可以是預(yù)設(shè)固定值,玩家的視野2以主角D所在位置為中心。服務(wù)器在計算得到玩家的視野區(qū)域后可以進(jìn)行玩家的視野初始化,即服務(wù)器查找在玩家的視野區(qū)域內(nèi)的視野單元格內(nèi)的角色C、E和G,并向客戶端發(fā)送查找到的角色C、E和G進(jìn)入玩家的視野的控制指令。當(dāng)然,服務(wù)器也會向角色C、E和G的各客戶端發(fā)送角色D進(jìn)入場景的數(shù)據(jù)信息。該視野處理方法若主角D無移動則視野處理技術(shù)結(jié)束,若主角D發(fā)生移動時,可以先調(diào)用服務(wù)器數(shù)據(jù)庫并刷新主角D在視野單元格中的位置,然后本發(fā)明所述視野處理方法需檢測主角D的移動是否帶來其所在視野單元格的變化,若檢測模塊檢測主角D的移動不會引起視野單元格變化時,即主角D在自己當(dāng)前所屬的視野單元格內(nèi)移動(短距離移動),可以參考圖5,此時不進(jìn)行視野單元格區(qū)域的變化計算,由于任何玩家不需要關(guān)注自己的視野變化,因此此時不會對自己和其他玩家產(chǎn)生角色進(jìn)入和離開的消息,減少了數(shù)據(jù)消息量。若檢測模塊檢測主角D的移動引起了視野單元格變化時,即主角D的移動路徑跨躍了不同的視野單元格(長距離移動),可以參考圖6,此時服務(wù)器根據(jù)主角移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的幾何計算得到玩家的視野變化的部分,即可到減少的視野單元格區(qū)域4和增加的視野單元格區(qū)域5。服務(wù)器調(diào)用自身數(shù)據(jù)庫后將增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況告訴客戶端,即向客戶端發(fā)送角色變化情況的控制指令,圖6所示實(shí)施例是將減少的視野單元格區(qū)域4內(nèi)的角色C離開的消息和增加的視野單元格區(qū)域5內(nèi)的角色F和H進(jìn)入的消息發(fā)送至客戶端,客戶端接收控制指令并執(zhí)行相應(yīng)動作。本發(fā)明的MMORPG的視野處理方法通過劃分為若干相同大小的視野單元格以支持在整個場景中選擇一定區(qū)域的玩家,通過檢測主角的移動是否帶來其所在視野單元格的變化,以決定是否進(jìn)行視野單元格區(qū)域變化的計算,減少主角短距離移動(不會帶來視野單元格的變化)時玩家的視野的區(qū)域內(nèi)產(chǎn)生的角色進(jìn)入和角色離開玩家的視野的數(shù)據(jù)信息的通知,主角長距離移動(發(fā)生視野單元格變化)時僅對變化的視野單元格區(qū)域內(nèi)的角色變化情況進(jìn)行處理,即此時僅對增加和減少的視野單元格區(qū)域內(nèi)的角色變化產(chǎn)生信息,同樣減少了數(shù)據(jù)信息處理量,本發(fā)明的視野處理方法能夠在很大程度上減少服務(wù)器的計算量和數(shù)據(jù)處理量,有效優(yōu)化服務(wù)器的性能,并可提升MMORPG中同時在線人數(shù)。需要特別說明的是,在本發(fā)明MMORPG的視野處理系統(tǒng)和方法中,如圖3、圖5和圖6所示的實(shí)施例描述的玩家的視野2的區(qū)域恰好是整數(shù)倍的視野單元格,這是為了更直觀地說明本發(fā)明所述的視野處理系統(tǒng)和方法,在實(shí)際情況中,由于玩家的視野是根據(jù)玩家所在客戶端坐標(biāo)觸發(fā)位置,并以該玩家所在位置為中心,按照預(yù)設(shè)的固定值來計算的,所以計算后的玩家的視野的區(qū)域大小并不一定是整數(shù)倍的視野單元格,但這并不影響服務(wù)器對后續(xù)的視野單元格區(qū)域的變化的計算以及對該變化的視野單元格區(qū)域內(nèi)的角色變化情況的處理。應(yīng)當(dāng)指出,以上所述具體實(shí)施方式
可以使本領(lǐng)域的技術(shù)人員更全面地理解本發(fā)明創(chuàng)造,但不以任何方式限制本發(fā)明創(chuàng)造。因此,盡管本說明書參照附圖和實(shí)施例對本發(fā)明創(chuàng)造已進(jìn)行了詳細(xì)的說明,但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,仍然可以對本發(fā)明創(chuàng)造進(jìn)行修改或者等同替換,總之,一切不脫離本發(fā)明創(chuàng)造的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵 蓋在本發(fā)明創(chuàng)造專利的保護(hù)范圍當(dāng)中。
權(quán)利要求
1.一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng),包括服務(wù)器和客戶端,其特征在于,所述服務(wù)器包括依次連接的分配和存儲模塊、視野區(qū)域計算模塊、檢測模塊、視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊,所述服務(wù)器還包括服務(wù)器數(shù)據(jù)庫,所述服務(wù)器數(shù)據(jù)庫分別與分配和存儲模塊、視野區(qū)域計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連;所述客戶端包括終端數(shù)據(jù)接收和處理模塊,所述終端數(shù)據(jù)接收和處理模塊與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連;所述分配和存儲模塊將整個場景劃分為若干相同大小的視野單元格并進(jìn)行標(biāo)識,所述視野單元格存儲位于其內(nèi)的角色集合,所述視野區(qū)域計算模塊將主角放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,所述檢測模塊檢測主角的移動是否帶來其所在視野單元格的變化,當(dāng)存在變化時,視野變化計算模塊計算得到增加和減少的視野單元格區(qū)域,所述服務(wù)器數(shù)據(jù)發(fā)送和處理模塊根據(jù)增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況向客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送控制指令,所述終端數(shù)據(jù)接收和處理模塊接收所述控制指令并執(zhí)行相應(yīng)動作。
2.根據(jù)權(quán)利要求I所述的視野處理系統(tǒng),其特征在于,所述分配和存儲模塊按照二維坐標(biāo)系的坐標(biāo)的方式標(biāo)示各視野單元格;當(dāng)所述視野單元格內(nèi)的角色位于兩相鄰視野單元格的公共側(cè)邊時,所述角色屬于兩相鄰視野單元格中處于左側(cè)或上側(cè)的視野單元格內(nèi)。
3.根據(jù)權(quán)利要求I所述的視野處理系統(tǒng),其特征在于,所述視野區(qū)域計算模塊計算玩家的視野區(qū)域的大小是預(yù)設(shè)固定值并且所述玩家的視野以玩家所在位置為中心。
4.根據(jù)權(quán)利要求2所述的視野處理系統(tǒng),其特征在于,所述視野變化計算模塊根據(jù)主角移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的幾何計算得到增加和減少的視野單元格區(qū)域。
5.根據(jù)權(quán)利要求4所述的視野處理系統(tǒng),其特征在于,所述服務(wù)器數(shù)據(jù)發(fā)送和處理模塊調(diào)用服務(wù)器數(shù)據(jù)庫后將增加的視野單元格區(qū)域內(nèi)的角色進(jìn)入的消息和減少的視野單元格區(qū)域內(nèi)的角色離開的消息發(fā)送至客戶端的終端數(shù)據(jù)接收和處理模塊。
6.根據(jù)權(quán)利要求I至5之一所述的視野處理系統(tǒng),其特征在于,所述視野區(qū)域計算模塊與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連以進(jìn)行玩家的視野初始化,在主角剛進(jìn)入場景時,所述視野區(qū)域計算模塊將計算的玩家的視野區(qū)域傳輸至服務(wù)器數(shù)據(jù)發(fā)送和處理模塊,所述服務(wù)器數(shù)據(jù)發(fā)送和處理模塊從服務(wù)器數(shù)據(jù)庫中查找所述玩家的視野區(qū)域內(nèi)的視野單元格內(nèi)的角色,并向客戶端的終端數(shù)據(jù)接收和處理模塊發(fā)送查找到的角色進(jìn)入玩家的視野的控制指令。
7.—種在線角色扮演網(wǎng)絡(luò)游戲的視野處理方法,其特征在于,所述方法通過服務(wù)器先將整個場景劃分為若干相同大小的視野單元格并進(jìn)行標(biāo)識,以將整個場景中的各角色集合存儲于所述視野單元格內(nèi),再將主角放入當(dāng)前位置所屬的視野單元格并根據(jù)客戶端坐標(biāo)觸發(fā)位置計算玩家的視野區(qū)域,然后檢測主角的移動是否帶來其所在視野單元格的變化,當(dāng)存在變化時就計算得到增加和減少的視野單元格區(qū)域,并根據(jù)增加和減少的視野單元格區(qū)域內(nèi)的角色變化情況向客戶端發(fā)送控制指令,客戶端接收控制指令并執(zhí)行相應(yīng)動作。
8.根據(jù)權(quán)利要求7所述的視野處理方法,其特征在于,所述服務(wù)器按照二維坐標(biāo)系的坐標(biāo)的方式標(biāo)示各視野單元格;當(dāng)所述視野單元格內(nèi)的角色位于兩相鄰視野單元格的公共側(cè)邊時,所述角色屬于兩相鄰視野單元格中處于左側(cè)或上側(cè)的視野單元格內(nèi)。
9.根據(jù)權(quán)利要求7所述的視野處理方法,其特征在于,所述服務(wù)器計算玩家的視野區(qū)域的大小是預(yù)設(shè)固定值并且所述玩家的視野以玩家所在位置為中心。
10.根據(jù)權(quán)利要求8所述的視野處理方法,其特征在于,所述服務(wù)器根據(jù)主角移動前后所在的兩視野單元格進(jìn)行坐標(biāo)差的幾何計算得到增加和減少的視野單元格區(qū)域。
11.根據(jù)權(quán)利要求10所述的視野處理方法,其特征在于,所述服務(wù)器調(diào)用自身數(shù)據(jù)庫后將增加的視野單元格區(qū)域內(nèi)的角色進(jìn)入的消息和減少的視野單元格區(qū)域內(nèi)的角色離開的消息發(fā)送至客戶端。
12.根據(jù)權(quán)利要求7至11之一所述的視野處理方法,其特征在于,在主角剛進(jìn)入場景時先進(jìn)行玩家的視野初始化,服務(wù)器在計算的玩家的視野區(qū)域后查找所述玩家的視野區(qū)域內(nèi)的視野單元格內(nèi)的角色,并向客戶端發(fā)送查找到的角色進(jìn)入玩家的視野的控制指令。
全文摘要
本發(fā)明提供一種在線角色扮演網(wǎng)絡(luò)游戲的視野處理系統(tǒng)和方法,該系統(tǒng)包括服務(wù)器和客戶端,服務(wù)器包括依次連接的分配和存儲模塊、視野區(qū)域計算模塊、檢測模塊、視野變化計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊,服務(wù)器還包括服務(wù)器數(shù)據(jù)庫,服務(wù)器數(shù)據(jù)庫分別與分配和存儲模塊、視野區(qū)域計算模塊以及服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連;客戶端包括終端數(shù)據(jù)接收和處理模塊,終端數(shù)據(jù)接收和處理模塊與服務(wù)器數(shù)據(jù)發(fā)送和處理模塊相連。該系統(tǒng)通過在玩家的視野區(qū)域變化的基礎(chǔ)上進(jìn)行視野的計算處理,能夠減少服務(wù)器計算量和數(shù)據(jù)處理量,提高服務(wù)器性能。
文檔編號G06F19/00GK102819680SQ20121027060
公開日2012年12月12日 申請日期2012年7月31日 優(yōu)先權(quán)日2012年7月31日
發(fā)明者劉恒立 申請人:北京天神互動科技有限公司