專利名稱:一種聯(lián)網(wǎng)游戲中角色的移動方法
技術(shù)領(lǐng)域:
本發(fā)明涉及游戲終端之間進(jìn)行聯(lián)網(wǎng)電子游戲時的通信技術(shù),尤其涉及一種聯(lián)網(wǎng)游戲中角色的移動方法。
背景技術(shù):
聯(lián)網(wǎng)游戲發(fā)展至今已有十多年的歷史。所謂聯(lián)網(wǎng)游戲是指一種在通過網(wǎng)絡(luò)連接的多個游戲終端上進(jìn)行的多人電子游戲,每個玩家通過游戲終端所操縱的對象為聯(lián)網(wǎng)游戲中的角色,角色在游戲場景中的發(fā)生的位置變化(包括站立在原地不動)稱為移動。各個不同游戲終端上的玩家看見的游戲場景基本保持一致,因此各個游戲終端之間的信息交換在聯(lián)網(wǎng)游戲中是必不可少的,其中玩家所操縱的角色的移動信息的交換、并以此實現(xiàn)角色在各個游戲終端上的同步移動,更是決定著各游戲終端場景差距的大小、以及游戲即時性和流暢程度的好壞。因此如何實現(xiàn)聯(lián)網(wǎng)游戲中的角色在各個游戲終端上的同步移動成為業(yè)界爭先解決的問題。
現(xiàn)有的聯(lián)網(wǎng)游戲中實現(xiàn)角色在各游戲終端上同步移動的方法為聯(lián)網(wǎng)游戲中的各游戲終端以很高的頻率(如每秒20-30次)向其他游戲終端傳送自身所操縱角色的移動信息,發(fā)送方發(fā)送的移動信息中包括該發(fā)送方終端所操縱的角色的標(biāo)識、移動狀態(tài)、移動方向和坐標(biāo)信息,所述移動狀態(tài)信息為諸如走動、跑動等狀態(tài),移動方向為諸如上、下、左、右等方向,坐標(biāo)信息為該角色在本游戲終端上的顯示位置;接收方游戲終端接收到移動信息后,在接收方游戲終端的顯示屏上直接將該移動信息中所標(biāo)識的角色的移動狀態(tài)和方向設(shè)置為移動信息中的移動狀態(tài)和方向,坐標(biāo)信息設(shè)置為移動信息中的坐標(biāo)信息。通過上述方法可以實現(xiàn)角色在各個游戲終端上的同步移動。這種移動算法邏輯簡單,不容易出錯,而且也具有較高的實時性。
圖1為聯(lián)網(wǎng)游戲中本地游戲終端上本地角色的移動示意圖。如圖1所示,在本地游戲終端A上,本地角色PA在時刻t1時的移動方向為右,移動狀態(tài)為走動,坐標(biāo)信息為(X,Y)。
圖2為聯(lián)網(wǎng)游戲中本地游戲終端與遠(yuǎn)程游戲終端上同一角色的移動示意圖。參見圖2,其中左邊的框圖為角色PA在本地游戲終端A上的移動示意圖;右邊的框圖為同一角色PA在遠(yuǎn)程游戲終端B上的移動示意圖。在本地游戲終端A上,角色PA為本地角色,而在遠(yuǎn)程游戲終端B上,同一個角色PA為遠(yuǎn)程角色。在t1時刻,本地游戲終端A向遠(yuǎn)程游戲終端B發(fā)送角色PA的移動信息,該移動信息的內(nèi)容參見以下表1
表1經(jīng)過一段延遲時間DelayAB,在t1+DeltaAB時刻,移動信息到達(dá)了遠(yuǎn)程游戲終端B,參見圖2中右邊的示意圖,游戲終端B立刻將遠(yuǎn)程角色PA置于坐標(biāo)(X,Y),移動方向朝右,移動狀態(tài)為行走。而此時在游戲終端A上,本地角色PA已經(jīng)向右移動了一段距離,到了坐標(biāo)(X1,Y1),這與游戲終端B上遠(yuǎn)程角色PA的位置有一點差距,在聯(lián)網(wǎng)游戲中,這種差距越小越好。由于現(xiàn)有技術(shù)中移動信息發(fā)送的頻率較高,因此在游戲終端B上看到的遠(yuǎn)程角色PA的移動大致上還是流暢的。
在最初出現(xiàn)的聯(lián)網(wǎng)即時戰(zhàn)略游戲中,聯(lián)網(wǎng)方式多為局域網(wǎng),通信質(zhì)量好,基本沒延遲,帶寬大,網(wǎng)絡(luò)穩(wěn)定,不丟包。在這種前提下,上述現(xiàn)有的實現(xiàn)角色在各游戲終端上同步移動的方法可以滿足聯(lián)網(wǎng)游戲高即時性的要求。但是,隨著互聯(lián)網(wǎng)的逐漸普及,聯(lián)網(wǎng)游戲也從局域網(wǎng)內(nèi)的對戰(zhàn)擴(kuò)張到互聯(lián)網(wǎng)上的對戰(zhàn)。但是互聯(lián)網(wǎng)的通信情況比局域網(wǎng)要差很多,網(wǎng)速慢,易丟包,帶寬小。因此上述現(xiàn)有的實現(xiàn)角色在各游戲終端上同步移動的方法暴露出了以下缺點1.由于移動信息發(fā)送頻繁(一般每秒20到30次或更高),因此網(wǎng)絡(luò)流量較大,在網(wǎng)絡(luò)狀況不好的互聯(lián)網(wǎng)上丟包和延遲的可能性大大增加了,導(dǎo)致遠(yuǎn)程角色移動的流暢程度大幅度降低。
2.因為網(wǎng)絡(luò)流量大,一臺聯(lián)網(wǎng)游戲服務(wù)器所能支撐的最大同時在線用戶數(shù)也受到很大的限制。
3.由于是每隔一段時間發(fā)送一個包含移動信息的包,因此,可能會發(fā)生移動信息的丟失。例如在發(fā)送間隔的時間段內(nèi)角色多次改變移動方向和狀態(tài),這些改變的移動信息將不會傳送到遠(yuǎn)程終端,導(dǎo)致移動信息丟失。
4.雖然移動信息發(fā)送的頻率較高,使遠(yuǎn)程角色的移動看起來基本流暢,但由于傳送的是離散的坐標(biāo)信息和移動狀態(tài),因此流暢程度達(dá)不到高品質(zhì)游戲玩家的要求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種聯(lián)網(wǎng)游戲中角色的移動方法,以在實現(xiàn)聯(lián)網(wǎng)游戲中各游戲終端中同一角色同步移動的同時,減少網(wǎng)絡(luò)流量。
為了實現(xiàn)上述發(fā)明目的,本發(fā)明的主要技術(shù)方案為一種聯(lián)網(wǎng)游戲中角色的移動方法,該方法包括A、本地游戲終端實時判斷本地角色的移動路徑是否發(fā)生改變,若改變則確定本地角色的移動路徑,將攜帶有該本地角色移動狀態(tài)和移動路徑的移動信息發(fā)送給遠(yuǎn)程游戲終端;B、遠(yuǎn)程游戲終端依照收到的移動信息中的移動狀態(tài)和移動路徑控制所述本地角色對應(yīng)的遠(yuǎn)程角色進(jìn)行移動。
優(yōu)選地,步驟A中所述本地游戲終端實時判斷本地角色的移動路徑是否發(fā)生改變的方法為本地游戲終端實時監(jiān)測玩家是否對本地角色進(jìn)行了新的操作,如果是則判定本地角色的移動路徑發(fā)生改變;同時,本地游戲終端實時監(jiān)測游戲場景的變化是否導(dǎo)致本地角色移動路徑的變化,如果是則判定本地角色的移動路徑發(fā)生改變。
優(yōu)選地,所述本地游戲終端確定本地角色的移動路徑的方法為首先確定本地角色當(dāng)前的移動狀態(tài)以及確定當(dāng)前游戲場景的參數(shù),將移動狀態(tài)和游戲場景參數(shù)作為輸入?yún)?shù),利用本聯(lián)網(wǎng)游戲預(yù)設(shè)的尋路算法確定出該本地角色的移動路徑。
優(yōu)選地,在步驟A中,如果本地游戲終端判定本地角色的移動路徑?jīng)]有改變,則周期地向遠(yuǎn)程游戲終端發(fā)送攜帶本地角色當(dāng)前位置信息的移動信息;步驟B進(jìn)一步包括遠(yuǎn)程游戲終端判斷所述遠(yuǎn)程角色的移動路徑是否發(fā)生改變,如果是則按照當(dāng)前收到的移動信息控制所述遠(yuǎn)程角色進(jìn)行移動,否則,先根據(jù)收到的位置信息對所述遠(yuǎn)程角色的當(dāng)前位置進(jìn)行糾正,再繼續(xù)按照前一次收到的所述遠(yuǎn)程角色的移動路徑控制該遠(yuǎn)程角色進(jìn)行移動。
所述遠(yuǎn)程終端根據(jù)位置信息對遠(yuǎn)程角色的當(dāng)前位置進(jìn)行糾正的方法為確定該遠(yuǎn)程角色當(dāng)前在遠(yuǎn)程游戲終端上的實際位置,判斷該實際位置與移動信息中的當(dāng)前位置之間的距離是否大于預(yù)定的最大距離,如果是,則按照移動信息中包括的當(dāng)前位置重新設(shè)置該遠(yuǎn)程角色當(dāng)前在遠(yuǎn)程終端上所處的位置;否則,對該遠(yuǎn)程角色的當(dāng)前位置不做糾正。
所述遠(yuǎn)程游戲終端判斷所述遠(yuǎn)程角色的移動路徑是否發(fā)生改變的方法為通過比較當(dāng)前收到的所述遠(yuǎn)程角色的移動路徑和上一次收到該遠(yuǎn)程角色的移動路徑是否相同來確定該遠(yuǎn)程角色的移動路徑是否改變。
所述遠(yuǎn)程游戲終端判斷所述遠(yuǎn)程角色的移動路徑是否發(fā)生改變的方法為在移動信息中進(jìn)一步包括移動序號,當(dāng)所述本地角色的移動路徑發(fā)生變化時,按照預(yù)定規(guī)律改變該移動序號;遠(yuǎn)程游戲終端通過比較當(dāng)前收到的遠(yuǎn)程角色的移動序號與上一次收到的該遠(yuǎn)程角色的移動序號是否相同來確定該遠(yuǎn)程角色的移動路徑是否改變。
優(yōu)選地,所述移動信息中進(jìn)一步包括移動序號,當(dāng)所述本地角色的移動路徑發(fā)生變化時,按照預(yù)定規(guī)律改變該移動序號;步驟B之前,進(jìn)一步包括遠(yuǎn)程游戲終端判斷當(dāng)前所收到的移動信息內(nèi)的移動序號是否為按所述預(yù)定規(guī)律變化的最新移動序號,如果是,則再執(zhí)行步驟B;否則,丟棄該移動信息,等待接收新的移動信息。
所述移動信息中進(jìn)一步包括所述本地角色的角色標(biāo)識,遠(yuǎn)程游戲終端根據(jù)該角色標(biāo)識確定所述本地角色所對應(yīng)的遠(yuǎn)程角色。
所述移動狀態(tài)包括移動姿態(tài)、移動方向和移動速度。
由于本發(fā)明在本地角色的移動路徑發(fā)生改變時,才發(fā)送包括移動狀態(tài)和移動路徑的移動信息給遠(yuǎn)程游戲終端,遠(yuǎn)程游戲終端根據(jù)移動狀態(tài)和移動路徑控制遠(yuǎn)程角色進(jìn)行移動,因此本發(fā)明可以大大減少移動信息的發(fā)送頻率,降低網(wǎng)絡(luò)流量,增強(qiáng)遠(yuǎn)程角色移動的流暢程度,并且增加了一臺聯(lián)網(wǎng)游戲服務(wù)器所能支撐的最大同時在線用戶數(shù)。
由于本發(fā)明在本地角色的移動路徑發(fā)生改變時必須發(fā)送移動信息,因此不會導(dǎo)致移動信息的丟失,由于移動信息是在移動路徑發(fā)生改變時立刻發(fā)送的,所以游戲的即時性也是最高的。
另外,由于遠(yuǎn)程終端根據(jù)移動路徑控制遠(yuǎn)程角色進(jìn)行移動,而移動路徑是線性連續(xù)的,因此可以更加增強(qiáng)遠(yuǎn)程角色移動的流暢程度,滿足高品質(zhì)游戲玩家的要求。
圖1為聯(lián)網(wǎng)游戲中本地游戲終端上本地角色的移動示意圖;圖2為聯(lián)網(wǎng)游戲中本地游戲終端與遠(yuǎn)程游戲終端上同一角色的移動示意圖;圖3為一種本地角色移動路徑的示意圖;圖4為本發(fā)明具體實施例的流程圖;圖5為一種引起本地角色的移動路徑發(fā)生改變的事件的示意圖;圖6為另一種引起本地角色的移動路徑發(fā)生改變的事件的示意圖;
圖7為本地角色的移動路徑?jīng)]有發(fā)生改變時的移動示意圖具體實施方式
下面通過具體實施例和附圖對本發(fā)明做進(jìn)一步詳細(xì)說明。
本發(fā)明的核心技術(shù)方案為一種聯(lián)網(wǎng)游戲中角色的移動方法,該方法包括本地游戲終端實時判斷本地角色的移動路徑是否發(fā)生改變,若改變則利用本聯(lián)網(wǎng)游戲預(yù)設(shè)的尋路算法確定本地角色的移動路徑,將攜帶有移動狀態(tài)(包括移動姿態(tài)、移動方向和移動速度等)和移動路徑的移動信息發(fā)送給遠(yuǎn)程游戲終端;遠(yuǎn)程游戲終端接收移動信息后,依照其中的移動狀態(tài)和移動路徑控制所述本地角色對應(yīng)的遠(yuǎn)程角色進(jìn)行移動。
在游戲終端中,由本地游戲終端操作的角色相對本地游戲終端稱為本地角色,該角色相對于遠(yuǎn)程游戲終端來說是遠(yuǎn)程角色。對于同一個角色,由于參照的游戲終端不同,導(dǎo)致名稱不同,在本地游戲終端,該角色稱為本地角色,在遠(yuǎn)程游戲終端,該角色稱為遠(yuǎn)程角色。
所述的移動路徑是指本地角色以當(dāng)前的移動狀態(tài)按照預(yù)定的游戲規(guī)則進(jìn)行移動,一直移動到其坐標(biāo)不再改變?yōu)橹?例如移動到地圖邊界,或者遇到障礙物等)所經(jīng)過的路徑,稱為移動路徑。如果本地角色不移動,則其移動路徑只是本地角色當(dāng)前所處的點。移動路徑的參數(shù)包括路徑的起點位置參數(shù),終點位置參數(shù),以及路徑中間所有的轉(zhuǎn)折點的位置參數(shù)。圖3為一種本地角色移動路徑的示意圖。如圖3所示,在t1時刻,本地角色P位于A點,P的移動姿態(tài)為走動,移動方向為右,假設(shè)P一直向右走,依據(jù)現(xiàn)有聯(lián)網(wǎng)游戲角色的移動方式,則它所走過的路徑可能為ABCD(在B點由于只有很小的阻擋因此角色可自動避讓后再繼續(xù)向右走),到D點由于障礙物III的阻擋而停止移動。該移動路徑的參數(shù)可以用A、B、C、D四點的坐標(biāo)值表示,這些參數(shù)信息,可以唯一地描述角色在未來一段時間內(nèi)所移動的路徑。
所述本地游戲終端向遠(yuǎn)程游戲終端發(fā)送的移動信息的具體內(nèi)容包括角色的標(biāo)識、當(dāng)前時刻、該移動信息的序號(簡稱移動序號)、移動狀態(tài)、所確定的本地角色的移動路徑的參數(shù)、以及本地角色當(dāng)前所處的位置。所述的移動狀態(tài)包括移動姿態(tài)例如走動或跑動,移動方向例如上下左右,以及移動速度等狀態(tài)。對于一般的聯(lián)網(wǎng)游戲,當(dāng)一角色的移動狀態(tài)確定時,其移動姿態(tài)以及移動速度都唯一確定。
例如,參見圖3,在時刻t1,本地游戲終端向遠(yuǎn)程終端發(fā)送的本地角色P的移動信息的內(nèi)容如下表2所示
表2本發(fā)明中,要實現(xiàn)主要發(fā)明目的,移動信息中至少包括角色標(biāo)識、移動狀態(tài)即移動方向和姿態(tài)、以及移動路徑。遠(yuǎn)程終端可以根據(jù)這些基本信息控制對應(yīng)的角色進(jìn)行移動。而在具體實施例中,為了達(dá)到更優(yōu)的效果,移動信息中還進(jìn)一步包括當(dāng)前時間、移動序號、和當(dāng)前位置。其中,當(dāng)前時間用于標(biāo)記發(fā)送當(dāng)前移動信息的時間;移動序號用于標(biāo)識該角色的未來移動信息發(fā)生改變的次序,此處一個移動序號唯一地對應(yīng)于一條移動路徑,當(dāng)移動路徑不變時,移動序號也不變,當(dāng)移動路徑發(fā)生變化時,移動序號按照某種規(guī)律變化,例如順序加1,遠(yuǎn)程游戲終端根據(jù)比較前后接收到的移動信息中的移動序號判斷所標(biāo)識的角色的移動路徑是否發(fā)生改變,優(yōu)先根據(jù)最新的移動路徑進(jìn)行處理,由于互聯(lián)網(wǎng)具有一定的不穩(wěn)定性,有可能造成先發(fā)的移動信息反而后收到這一亂序情況,或者造成移動信息包丟失的情況,因此在發(fā)送移動信息時帶上移動序號有助于解決亂序或丟包等異常情況所導(dǎo)致的不能正確控制遠(yuǎn)程角色移動的問題;當(dāng)前位置用于校正該本地角色在遠(yuǎn)程游戲終端上的位置。
圖4為本發(fā)明具體實施例的流程圖。參見圖4,左邊的流程41為本地游戲終端的處理流程示意圖,右邊的流程42為遠(yuǎn)程游戲終端的處理流程示意圖。
其中,本地游戲終端的處理流程包括步驟411、本地游戲終端實時判斷本地角色的移動路徑是否改變,如果改變,則執(zhí)行步驟412;否則,返回步驟411,繼續(xù)判斷移動路徑是否改變,或者執(zhí)行步驟413。在本步驟前,本地角色可能是處于移動狀態(tài),或者處于靜止?fàn)顟B(tài)。
本地游戲終端實時判斷本地角色的移動路徑是否改變的方法為實時監(jiān)測任何引起本地角色不再按照已有的移動路徑進(jìn)行移動的事件,如果發(fā)生這種事件則判定本地角色的移動路徑發(fā)生改變。具體的,本實施例中所實時監(jiān)測的此類事件主要有兩種第一種為本地游戲終端實時監(jiān)測玩家是否對本地角色進(jìn)行了新的操作,如果是則判定移動路徑發(fā)生改變。例如,在游戲開始時,本地角色處于靜止?fàn)顟B(tài),當(dāng)本地游戲終端監(jiān)測到玩家對該本地角色進(jìn)行了新的操作,導(dǎo)致本地角色將要按照該操作進(jìn)行移動,則該本地角色的移動路徑發(fā)生改變,參見圖3,假設(shè)本地角色P原來在A點處于靜止?fàn)顟B(tài),t1時刻玩家操作其向右移動,則該本地角色的移動路徑發(fā)生改變,且該移動路徑為ABCD。再例如,圖5為一種引起本地角色的移動路徑發(fā)生改變的事件的示意圖。參見圖5,假設(shè)在t1時刻本地游戲終端監(jiān)測到玩家操縱本地角色從A點向右走,而在t2時刻本地角色處于E點,且此時監(jiān)測到玩家操縱本地角色向下走,則在t2時刻該本地角色的移動路徑發(fā)生改變,由于障礙物II的阻擋,本地角色P將在F點停止移動,因此本地角色P的移動路徑從原來的ABCD變?yōu)镋F。
第二種為本地游戲終端實時監(jiān)測游戲場景的變化是否導(dǎo)致本地角色移動路徑的變化,即監(jiān)測游戲場景的改變是否處于本地角色的移動路徑上,并且是否影響當(dāng)前本地角色的移動路徑,如果是,則判定本地角色的移動路徑發(fā)生改變。例如,圖6為另一種引起本地角色的移動路徑發(fā)生改變的事件的示意圖。參見圖6,假設(shè)在t1時刻本地游戲終端監(jiān)測到玩家操縱本地角色從A點向右走,此時的移動路徑為ABCD,而在t2時刻本地角色處于E點,但此時監(jiān)測到移動路徑ABCD上的障礙物I突然消失,則判定本地角色P的移動路徑發(fā)生改變,該移動路徑從原來的ABCD改變?yōu)镋G(如果本地角色以當(dāng)前的移動狀態(tài)移動則由于受到障礙物III的阻擋而停止在障礙物III前的G點)。
步驟412、本地游戲終端確定本地角色P的移動路徑,向聯(lián)網(wǎng)游戲中的所有遠(yuǎn)程游戲終端發(fā)送本地角色的移動信息,返回步驟411。
首先確定本地角色P當(dāng)前的移動狀態(tài),包括移動姿態(tài)和移動方向,以及確定當(dāng)前游戲場景(例如地圖)的參數(shù),將移動姿態(tài)、移動方向和游戲場景參數(shù)作為輸入?yún)?shù),利用本聯(lián)網(wǎng)游戲預(yù)設(shè)的尋路算法確定出該本地角色P移動路徑的參數(shù)。所述的尋路算法為現(xiàn)有聯(lián)網(wǎng)游戲預(yù)設(shè)的算法,每一種聯(lián)網(wǎng)游戲的尋路算法可以不同。
例如,參見圖3,根據(jù)尋路算法計算出上述在t1時刻本地角色P的移動路徑為ABCD,其參數(shù)為A、B、C、D四點的坐標(biāo);此時發(fā)送的移動信息內(nèi)容如表2所示。
如果在t2時刻移動路徑發(fā)生了圖5所示的改變,則需要重新確定該移動路徑的參數(shù),本地角色P的移動路徑從原來的ABCD變?yōu)镋F,此時需向所有的遠(yuǎn)程游戲終端發(fā)送攜帶新的移動路徑EF的移動信息。此時所發(fā)送的移動信息的具體內(nèi)容如下表3
表3此處本地角色的移動路徑發(fā)生了改變,因此表3中的移動序號加1。
如果在t2時刻移動路徑發(fā)生了圖6所示的改變,則需要重新根據(jù)尋路算法確定本地角色的移動路徑的參數(shù),該移動路徑從原來的ABCD改變?yōu)镋G。此時需向遠(yuǎn)程游戲終端發(fā)送攜帶新的移動路徑EG的移動信息。此時所發(fā)送的移動信息的具體內(nèi)容如下表4
表4步驟413~步驟414、本地游戲終端向聯(lián)網(wǎng)游戲中的所有遠(yuǎn)程游戲終端周期發(fā)送攜帶本地角色當(dāng)前位置信息的移動信息。即判斷預(yù)定的發(fā)送周期是否到達(dá),如果到達(dá),則向聯(lián)網(wǎng)游戲中的所有遠(yuǎn)程游戲終端發(fā)送攜帶本地角色當(dāng)前位置信息的移動信息,返回步驟411;否則,直接返回步驟411。
本步驟413~步驟414為可選步驟,遠(yuǎn)程游戲終端可以根據(jù)移動信息中的位置信息對本游戲終端對應(yīng)遠(yuǎn)程角色的位置進(jìn)行糾正。
圖7為本地角色的移動路徑?jīng)]有發(fā)生改變時的移動示意圖。如圖7所示,假設(shè)在t1時刻本地游戲終端監(jiān)測到玩家操縱本地角色從A點向右走,此時的移動路徑為ABCD,所發(fā)送的移動信息如表2所示。假設(shè)t3=t1+發(fā)送周期,從t1到t3,本地角色P到達(dá)E點,且本地角色P的一直保持向右行走,而且場景也沒發(fā)生能導(dǎo)致本地角色P改變移動路徑,因此本地角色P仍然按照原有的移動路徑ABCD前進(jìn),此時需要向聯(lián)網(wǎng)游戲中的所有遠(yuǎn)程終端發(fā)送P的移動信息,具體的內(nèi)容參見以下表5所示
表5表5所示的移動信息與表2所示的移動信息的區(qū)別在于本地角色的當(dāng)前位置發(fā)生了變化,遠(yuǎn)程游戲終端可以根據(jù)該當(dāng)前位置糾正對應(yīng)遠(yuǎn)程終端的位置。
上述描述的是本地游戲終端的處理流程,遠(yuǎn)程游戲終端的處理流程參見圖4右半部分的流程42。該流程包括步驟421、接收來自發(fā)送方游戲終端(即上述的本地游戲終端)的移動信息。
步驟422、解析所接收到的移動信息的內(nèi)容,得到角色標(biāo)識、移動序號、移動方向、移動姿態(tài)、移動速度、移動路徑、以及當(dāng)前位置,根據(jù)角色標(biāo)識確定需對其進(jìn)行操縱處理的遠(yuǎn)程角色,即上述本地角色P對應(yīng)的遠(yuǎn)程角色,該遠(yuǎn)程角色其實就是角色P。
步驟423、判斷移動信息中包括的移動路徑是否改變,如果改變,則執(zhí)行步驟424;否則,執(zhí)行步驟427。
此處,可以通過比較當(dāng)前收到的遠(yuǎn)程角色的移動路徑和上一次收到該遠(yuǎn)程角色的移動路徑是否相同來確定該遠(yuǎn)程角色的移動路徑是否改變;也可以通過比較當(dāng)前收到的遠(yuǎn)程角色的移動序號與上一次收到該遠(yuǎn)程角色的移動序號是否相同來確定該遠(yuǎn)程角色的移動路徑是否改變。
步驟424~步驟425、判斷當(dāng)前所收到的移動信息內(nèi)的移動序號是否為按次序的最新移動序號,如果是,執(zhí)行步驟426;否則,丟棄該移動信息,不依據(jù)該移動信息對所述遠(yuǎn)程角色進(jìn)行處理,返回步驟421。
本步驟424~步驟425是為了避免由于亂序或丟包等異常情況所導(dǎo)致的不能正確控制遠(yuǎn)程角色移動的問題。如果只為了達(dá)到本發(fā)明的主要目的,則可以省去該步驟424~步驟425,執(zhí)行步驟426。
步驟426、將當(dāng)前所收到的移動信息置為當(dāng)前移動信息,并按照當(dāng)前移動信息中包括的移動方向、移動姿態(tài)、移動速度、以及移動路徑控制所述遠(yuǎn)程角色進(jìn)行移動,返回步驟421。
例如,如果在t1時刻,遠(yuǎn)程游戲終端所接收的移動信息的內(nèi)容為表2所示,則所述遠(yuǎn)程游戲終端控制遠(yuǎn)程角色P向右走動,走動的速度為預(yù)定的走動狀態(tài)的默認(rèn)速度,并且控制遠(yuǎn)程角色沿著A、B、C、D四點的坐標(biāo)值所構(gòu)成的移動路徑進(jìn)行走動。如果在t2時刻,遠(yuǎn)程游戲終端接收到的移動信息的內(nèi)容如表3所示,則控制遠(yuǎn)程角色P沿著E、F兩點坐標(biāo)構(gòu)成的移動路徑向下走動。
步驟427~步驟428、判斷該遠(yuǎn)程角色在本地的當(dāng)前位置與移動信息中的當(dāng)前位置之差是否大于預(yù)定的最大距離,如果是,則按照移動信息中包括的當(dāng)前位置重新設(shè)置該遠(yuǎn)程角色在本地的當(dāng)前位置,執(zhí)行步驟421,否則執(zhí)行步驟429。
由于網(wǎng)絡(luò)傳輸時延、亂序、丟包或控制偏差等不確定現(xiàn)象的存在,只根據(jù)移動路徑控制遠(yuǎn)程角色進(jìn)行移動可能會導(dǎo)致誤差,因此上述步驟427~步驟428是為了校正所述遠(yuǎn)程角色在本地當(dāng)前位置,以消除移動誤差。當(dāng)然,如果只為了達(dá)到本發(fā)明的主要目的,則可以省去該步驟427~步驟428,直接執(zhí)行對應(yīng)的后續(xù)步驟429。
步驟429、繼續(xù)按照當(dāng)前的移動路徑移動遠(yuǎn)程角色,即繼續(xù)按照前一次收到的所述遠(yuǎn)端角色的移動信息移動遠(yuǎn)程角色,返回步驟421。
例如,如果在t1時刻,遠(yuǎn)程游戲終端所接收的移動信息的內(nèi)容為表2所示,則所述遠(yuǎn)程游戲終端控制遠(yuǎn)程角色P向右走動,走動的速度為預(yù)定的走動狀態(tài)的默認(rèn)速度,并且控制遠(yuǎn)程角色沿著A、B、C、D四點的坐標(biāo)值所構(gòu)成的移動路徑ABCD進(jìn)行走動。如果在t2時刻,遠(yuǎn)程游戲終端接收到的移動信息的內(nèi)容如表5所示,則控制遠(yuǎn)程角色P繼續(xù)沿著移動路徑ABCD進(jìn)行走動。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種聯(lián)網(wǎng)游戲中角色的移動方法,其特征在于,該方法包括A、本地游戲終端實時判斷本地角色的移動路徑是否發(fā)生改變,若改變則確定本地角色的移動路徑,將攜帶有該本地角色移動狀態(tài)和移動路徑的移動信息發(fā)送給遠(yuǎn)程游戲終端;B、遠(yuǎn)程游戲終端依照收到的移動信息中的移動狀態(tài)和移動路徑控制所述本地角色對應(yīng)的遠(yuǎn)程角色進(jìn)行移動。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中所述本地游戲終端實時判斷本地角色的移動路徑是否發(fā)生改變的方法為本地游戲終端實時監(jiān)測玩家是否對本地角色進(jìn)行了新的操作,如果是則判定本地角色的移動路徑發(fā)生改變;同時,本地游戲終端實時監(jiān)測游戲場景的變化是否導(dǎo)致本地角色移動路徑的變化,如果是則判定本地角色的移動路徑發(fā)生改變。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述本地游戲終端確定本地角色的移動路徑的方法為首先確定本地角色當(dāng)前的移動狀態(tài)以及確定當(dāng)前游戲場景的參數(shù),將移動狀態(tài)和游戲場景參數(shù)作為輸入?yún)?shù),利用本聯(lián)網(wǎng)游戲預(yù)設(shè)的尋路算法確定出該本地角色的移動路徑。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟A中,如果本地游戲終端判定本地角色的移動路徑?jīng)]有改變,則周期地向遠(yuǎn)程游戲終端發(fā)送攜帶本地角色當(dāng)前位置信息的移動信息;步驟B進(jìn)一步包括遠(yuǎn)程游戲終端判斷所述遠(yuǎn)程角色的移動路徑是否發(fā)生改變,如果是則按照當(dāng)前收到的移動信息控制所述遠(yuǎn)程角色進(jìn)行移動,否則,先根據(jù)收到的位置信息對所述遠(yuǎn)程角色的當(dāng)前位置進(jìn)行糾正,再繼續(xù)按照前一次收到的所述遠(yuǎn)程角色的移動路徑控制該遠(yuǎn)程角色進(jìn)行移動。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述遠(yuǎn)程終端根據(jù)位置信息對遠(yuǎn)程角色的當(dāng)前位置進(jìn)行糾正的方法為確定該遠(yuǎn)程角色當(dāng)前在遠(yuǎn)程游戲終端上的實際位置,判斷該實際位置與移動信息中的當(dāng)前位置之間的距離是否大于預(yù)定的最大距離,如果是,則按照移動信息中包括的當(dāng)前位置重新設(shè)置該遠(yuǎn)程角色當(dāng)前在遠(yuǎn)程終端上所處的位置;否則,對該遠(yuǎn)程角色的當(dāng)前位置不做糾正。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述遠(yuǎn)程游戲終端判斷所述遠(yuǎn)程角色的移動路徑是否發(fā)生改變的方法為通過比較當(dāng)前收到的所述遠(yuǎn)程角色的移動路徑和上一次收到該遠(yuǎn)程角色的移動路徑是否相同來確定該遠(yuǎn)程角色的移動路徑是否改變。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述遠(yuǎn)程游戲終端判斷所述遠(yuǎn)程角色的移動路徑是否發(fā)生改變的方法為在移動信息中進(jìn)一步包括移動序號,當(dāng)所述本地角色的移動路徑發(fā)生變化時,按照預(yù)定規(guī)律改變該移動序號;遠(yuǎn)程游戲終端通過比較當(dāng)前收到的遠(yuǎn)程角色的移動序號與上一次收到的該遠(yuǎn)程角色的移動序號是否相同來確定該遠(yuǎn)程角色的移動路徑是否改變。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于所述移動信息中進(jìn)一步包括移動序號,當(dāng)所述本地角色的移動路徑發(fā)生變化時,按照預(yù)定規(guī)律改變該移動序號;步驟B之前,進(jìn)一步包括遠(yuǎn)程游戲終端判斷當(dāng)前所收到的移動信息內(nèi)的移動序號是否為按所述預(yù)定規(guī)律變化的最新移動序號,如果是,則再執(zhí)行步驟B;否則,丟棄該移動信息,等待接收新的移動信息。
9.根據(jù)權(quán)利要求1至8任一項所述的方法,其特征在于,所述移動信息中進(jìn)一步包括所述本地角色的角色標(biāo)識,遠(yuǎn)程游戲終端根據(jù)該角色標(biāo)識確定所述本地角色所對應(yīng)的遠(yuǎn)程角色。
10.根據(jù)權(quán)利要求1至8任一項所述的方法,其特征在于,所述移動狀態(tài)包括移動姿態(tài)、移動方向和移動速度。
全文摘要
本發(fā)明公開了一種聯(lián)網(wǎng)游戲中角色的移動方法,包括A.本地游戲終端實時判斷本地角色的移動路徑是否發(fā)生改變,若改變則確定本地角色的移動路徑,將攜帶有該本地角色移動狀態(tài)和移動路徑的移動信息發(fā)送給遠(yuǎn)程游戲終端;B.遠(yuǎn)程游戲終端依照收到的移動信息中的移動狀態(tài)和移動路徑控制所述本地角色對應(yīng)的遠(yuǎn)程角色進(jìn)行移動。本發(fā)明可以在實現(xiàn)聯(lián)網(wǎng)游戲中各游戲終端中同一角色同步移動的同時,減少網(wǎng)絡(luò)流量。
文檔編號G06F19/00GK1941788SQ20051010507
公開日2007年4月4日 申請日期2005年9月26日 優(yōu)先權(quán)日2005年9月26日
發(fā)明者周全 申請人:騰訊科技(深圳)有限公司