專利名稱:一種網(wǎng)絡(luò)游戲中的物體運動控制方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機(jī)通信領(lǐng)域,尤其涉及游戲中對物體運動進(jìn)行控制的方法。
背景技術(shù):
物體運動控制是游戲中很常見的一種操作,例如操作感很強的格斗類游戲、人物冒險類游戲等。在單機(jī)版的2D(二維)平面橫版游戲中,物體運動控制的即時性很強,通常根據(jù)操作者的操作指定物體當(dāng)前的運動狀態(tài),再結(jié)合物體當(dāng)前所在的位置,即時計算出物體在下一幀中能夠到達(dá)的位置,然后進(jìn)行位置更新,重復(fù)以上的步驟,就能夠達(dá)到控制物體運動的目的,實現(xiàn)流程如圖1所示在步驟S101中,根據(jù)操作者的操作指定物體的當(dāng)前運動狀態(tài);在步驟S102中,獲取物體的當(dāng)前位置;在步驟S103中,結(jié)合步驟S101和步驟S102,即時計算出下一幀中物體能夠到達(dá)的位置;在步驟S104中,更新物體的位置,并返回執(zhí)行步驟S101。
與單機(jī)版游戲相比,網(wǎng)絡(luò)游戲除了涉及客戶端的屏幕表現(xiàn),還要涉及到與服務(wù)器端的交互以及在其他客戶端的屏幕表現(xiàn)。因此,上述運動控制算法中頻繁的計算不僅使游戲中客戶端和服務(wù)器端的數(shù)據(jù)傳輸量很大,而且運動在服務(wù)器端驗證的難度也很大。同時,由于網(wǎng)絡(luò)傳輸速度的不確定性,通過上述方案對物體運動進(jìn)行控制時,在其他客戶端的表現(xiàn)只能是斷斷續(xù)續(xù)的,難以做到平滑運動,從而影響到整個游戲的流暢程度。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種網(wǎng)絡(luò)游戲中的物體運動控制方法,旨在解決現(xiàn)有技術(shù)中存在的在網(wǎng)絡(luò)游戲中實現(xiàn)物體運動控制時計算頻繁,產(chǎn)生數(shù)據(jù)量大,不適合網(wǎng)絡(luò)傳輸,同時,難以重現(xiàn)運動軌跡,不便于運動軌跡的驗證以及在網(wǎng)絡(luò)客戶端運動表現(xiàn)不流暢的問題。
本發(fā)明是這樣實現(xiàn)的一種網(wǎng)絡(luò)游戲中的物體運動控制方法,所述方法包括下述步驟A.根據(jù)游戲內(nèi)容設(shè)置游戲地圖數(shù)據(jù);B.接收物體的運動控制信號,根據(jù)所述運動控制信號判斷物體的運動趨勢;C.根據(jù)所述運動趨勢產(chǎn)生所述物體的運動方程,通過所述運動方程對所述物體的運動進(jìn)行控制,所述運動方程記錄有所述物體的運動參數(shù)。
所述游戲地圖數(shù)據(jù)中包括所述物體的非活動區(qū)域和活動區(qū)域;所述非活動區(qū)域由有阻擋物屬性的柵格組成,所述活動區(qū)域由有空屬性的柵格和有路屬性的柵格組成,所述路為所述物體運動的直線路線。
所述運動參數(shù)包括所述物體的運動類型、運動的起點、運動的終點、運動方向、運動開始的時間、運動結(jié)束的時間、X軸向上的起始速度、Y軸向上的起始速度、X軸向上的加速度、Y軸向上的加速度、運動所在路以及下一個運動狀態(tài)。
所述步驟C進(jìn)一步包括下述步驟C1.根據(jù)所述物體的位置獲得所述物體所在的柵格;C2.根據(jù)所述柵格獲取所述物體的路的信息;C3.根據(jù)物體的運動趨勢以及所述路的信息對所述物體進(jìn)行直線運動控制、靜止運動控制或者跳躍運動控制。
對所述物體進(jìn)行直線運動控制的步驟進(jìn)一步包括C311.由所述路的信息和所述物體的運動初始狀態(tài)產(chǎn)生直線運動方程,放入方程組;C312.記錄所述物體下一個運動的初始運動狀態(tài);C313.判斷路的終點是否有連接另一條路,有則執(zhí)行步驟C311,沒有則執(zhí)行步驟C314;C314.判斷是否有阻擋,有則對所述物體進(jìn)行靜止運動控制,沒有則對所述物體進(jìn)行跳躍運動控制。
對所述物體進(jìn)行跳躍運動控制的步驟進(jìn)一步包括C321.根據(jù)所述物體的運動初始狀態(tài)和位置產(chǎn)生跳躍運動方程,放入方程組;C322.記錄下一個運動的初始運動狀態(tài);C323.判斷運動方程的終點是否與阻擋物側(cè)面相交,是則執(zhí)行步驟C321,否則執(zhí)行步驟C324;C324.方程的終點和路相交,判斷有無向左或向右的趨勢,沒有則對所述物體進(jìn)行靜止運動控制,有則對所述物體進(jìn)行直線運動控制。
對所述物體進(jìn)行靜止運動控制的步驟進(jìn)一步包括C331.產(chǎn)生靜止運動方程,放入方程組;C332.根據(jù)所述運動方程以及物體經(jīng)過的時間對物體的位置進(jìn)行更新;C333.判斷輸入的運動控制信號是否有變化,沒有則執(zhí)行步驟C332,有則執(zhí)行步驟C334;C334.根據(jù)物體的運動趨勢進(jìn)行相應(yīng)的直線運動控制或者跳躍運動控制。
本發(fā)明通過運動方程實現(xiàn)物體的運動控制,在操作物體的一瞬間,計算完成物體的全部運動,因此計算的頻率低,傳輸數(shù)據(jù)量少,適合網(wǎng)絡(luò)傳輸,并便于服務(wù)器端重現(xiàn)和驗證物體的運動軌跡。同時,網(wǎng)絡(luò)其他客戶端能夠根據(jù)服務(wù)器端的運動數(shù)據(jù)平滑過渡多個運動,屏幕表現(xiàn)自然。
圖1是現(xiàn)有技術(shù)中對物體運動進(jìn)行控制的實現(xiàn)流程圖;圖2是本發(fā)明中游戲地圖數(shù)據(jù)的示意圖;圖3是本發(fā)明提供的對物體運動進(jìn)行控制的實現(xiàn)流程圖;
圖4是本發(fā)明對物體進(jìn)行直線運動控制的實現(xiàn)流程圖;圖5是本發(fā)明對物體進(jìn)行跳躍運動控制的實現(xiàn)流程圖;圖6是本發(fā)明對物體進(jìn)行靜止運動控制的實現(xiàn)流程圖。
具體實施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
為了讓2D平面橫版游戲運動控制的算法滿足網(wǎng)絡(luò)游戲特點的需要,本發(fā)明提供了一種以運動方程來控制物體運動的方案。這種方案的關(guān)鍵之處在于在操作者操作物體的一瞬間,物體的全部運動就已經(jīng)計算完成。
在本發(fā)明中,首先要對2D橫版游戲中物體運動的規(guī)律進(jìn)行分類。在2D橫版游戲中,物體的運動按照運動的特點分為四個基本的動作靜止、行走(橫向運動)、攀爬(縱向運動)和跳躍;按照運動的方式分為三種類型點運動(靜止)、直線勻速運動(行走,攀爬)和加速拋物線運動(跳)。每一種運動都有該次運動的起點、終點、運動方向、運動開始的時間、運動結(jié)束的時間、X軸向上的起始速度、Y軸向上的起始速度、X軸向上的加速度、Y軸向上的加速度以及運動所在路。
本發(fā)明歸納上述運動的特點,建立運動的方程表達(dá)式如下
通過上述運動方程表達(dá)式就可以基本描述上述分類的各種運動,例如從(0,0)以2m/s的速度向右行走至(10,0),就可以描述為
由上述方程可知,缺乏最后兩項參數(shù)的具體描述。
其次,本發(fā)明建立2D橫版游戲中的游戲地圖數(shù)據(jù),如圖2所示。在2D橫版游戲中,地圖的概念就是一個由X軸和Y軸組成的2維空間,地圖數(shù)據(jù)包含了該2維空間中物體的活動區(qū)域和非活動區(qū)域。
本發(fā)明通過柵格對區(qū)域進(jìn)行描述和劃分,柵格是在地圖這個2維空間中能夠描述的最小單位。柵格是有屬性的,通過柵格的屬性就可以描述出地圖數(shù)據(jù)中的活動區(qū)域和非活動區(qū)域。非活動區(qū)域是由有阻擋物屬性的柵格組成,活動區(qū)域由有空屬性的柵格和有路屬性的柵格組成。路是游戲地圖中預(yù)先設(shè)定好的、物體能以行走或攀爬方式運動的路線。在路的描述中,可以找到這條路的起點、終點、路的斜率、上一條路和下一條路。需要說明的是,在本發(fā)明中,一條路是一條直線而不是折線。
通過地圖數(shù)據(jù)就可以由物體所在的柵格知道物體是在空中還是在路上。在上述運動方程中,就可以約定點運動(靜止)和勻速直線運動(行走和攀爬)必須是在路上,而加速拋物線運動(跳躍)必須是在有空屬性的柵格中。
因此,上述行走方程就可以描述為在路(id為5)從(0,0)以2m/s的速度向右行走至(10,0)
方程中的最后一項“下一個運動狀態(tài)描述”是該運動方程的運動結(jié)束時,對下一個運動的初始狀態(tài)的描述。
然后,在上述運動方程中,還需要明確物體的運動趨勢。運動趨勢是物體有操作者想要執(zhí)行的操作,當(dāng)條件成熟時,物體就會延這個操作進(jìn)行運動。運動趨勢包括了向左、向右、向上、向下以及停止。運動趨勢的存在對方程的產(chǎn)生了很大影響,例如在行走中,如果有一條垂直的路在現(xiàn)在運動的路上,若有向上的趨勢,那么當(dāng)前運動方程的結(jié)束點就在垂直路與現(xiàn)在運動的路的交點處,如果沒有向上的趨勢,那么當(dāng)前運動方程的結(jié)束點就在現(xiàn)在運動路的終點處。
圖3示出了本發(fā)明對物體運動進(jìn)行控制的實現(xiàn)過程,重點就是接收到操作者輸入的運動控制信號的一瞬間,如果運動控制信號不發(fā)生變化,物體在一定范圍內(nèi)的運動軌跡就是一定的,不會發(fā)生變化,即會得到一系列的運動方程組成方程組,該方程組就是該運動控制信號所產(chǎn)生的所有運動的描述。
在步驟S301中,接收操作者通過游戲手柄、鍵盤或者鼠標(biāo)等輸入裝置輸入的物體的運動控制信號,判斷物體的運動趨勢;在步驟S302中,根據(jù)物體位置得到物體所在的柵格;在步驟S303中,由柵格屬性獲得物體的路的信息;在步驟S304中,根據(jù)物體的運動趨勢和位置信息,產(chǎn)生運動方程,通過運動方程對物體的運動進(jìn)行控制。
在本發(fā)明中,對物體的運動控制包括直線運動控制、靜止運動控制或者跳躍運動控制。
圖4示出了在本發(fā)明中對物體進(jìn)行直線運動控制的實現(xiàn)流程,描述如下在步驟S401中,由路和運動初始狀態(tài)產(chǎn)生直線運動方程,放入方程組;在步驟S402中,記錄下一個運動的初始運動狀態(tài);在步驟S403中,判斷路的終點是否有連接另一條路,有則執(zhí)行步驟S401,沒有則執(zhí)行步驟S404;在步驟S404中,判斷是否有阻擋,沒有則執(zhí)行步驟S405,有則執(zhí)行步驟S406;
在步驟S405中,產(chǎn)生跳躍運動方程,放入方程組,對物體進(jìn)行跳躍控制;在步驟S406中,產(chǎn)生靜止運動方程,放入方程組,對物體進(jìn)行靜止控制。
圖5示出了在本發(fā)明中對物體進(jìn)行跳躍運動控制的實現(xiàn)流程,描述如下在步驟S501中,根據(jù)物體運動初始狀態(tài)和物體位置產(chǎn)生跳躍運動方程,放入方程組;在步驟S502中,記錄下一個運動的初始運動狀態(tài);在步驟S503中,判斷運動方程的終點是否與阻擋物側(cè)面相交,是則執(zhí)行步驟S501,否則執(zhí)行步驟S504;在步驟S504中,如果運動方程的終點不與阻擋物側(cè)面相交,則方程的終點和路相交;在步驟S505中,判斷有無向左或向右的運動趨勢,有則執(zhí)行步驟S506,沒有則執(zhí)行步驟S507;在步驟S506中,產(chǎn)生直線運動方程,放入方程組,對物體進(jìn)行跳躍控制;在步驟S507中,產(chǎn)生靜止運動方程,放入方程組,對物體進(jìn)行靜止控制。
圖6示出了在本發(fā)明中對物體進(jìn)行靜止運動控制的實現(xiàn)流程,描述如下在步驟S601中,產(chǎn)生靜止運動方程,放入方程組,對物體進(jìn)行靜止運動控制;在步驟S602中,根據(jù)方程組,按物體經(jīng)過的時間,計算當(dāng)前的位置,對物體的位置進(jìn)行更新在步驟S603中,判斷輸入的運動控制信號是否有變化,沒有則執(zhí)行步驟S602,有則執(zhí)行步驟S604;在步驟S604中,根據(jù)物體的運動趨勢對物體進(jìn)行相應(yīng)控制。
由上述流程可知,本發(fā)明在實現(xiàn)物體運動控制時計算的頻率很低,只有運動控制信號發(fā)生變化時才會產(chǎn)生計算。同時,以方程組的形式可以用很少的數(shù)據(jù)描述物體在運動控制信號后的所有運動,適合網(wǎng)絡(luò)傳輸,并且服務(wù)器端通過方程組的數(shù)據(jù)能很容易地重現(xiàn)運動軌跡,再將重現(xiàn)后的運動軌跡與服務(wù)器端保存的地圖數(shù)據(jù)進(jìn)行比較,能夠方便地對運動軌跡進(jìn)行驗證。服務(wù)器再將驗證后的方程組數(shù)據(jù)發(fā)送給其他客戶端,其他客戶端就能夠一次還原多個運動,運動與運動之間就能夠平滑過渡,屏幕表現(xiàn)上也會更加自然。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種網(wǎng)絡(luò)游戲中的物體運動控制方法,其特征在于,所述方法包括下述步驟A.根據(jù)游戲內(nèi)容設(shè)置游戲地圖數(shù)據(jù);B.接收物體的運動控制信號,根據(jù)所述運動控制信號判斷物體的運動趨勢;C.根據(jù)所述運動趨勢產(chǎn)生所述物體的運動方程,通過所述運動方程對所述物體的運動進(jìn)行控制,所述運動方程記錄有所述物體的運動參數(shù)。
2.如權(quán)利要求1所述的物體運動控制方法,其特征在于,所述游戲地圖數(shù)據(jù)中包括所述物體的非活動區(qū)域和活動區(qū)域;所述非活動區(qū)域由有阻擋物屬性的柵格組成,所述活動區(qū)域由有空屬性的柵格和有路屬性的柵格組成,所述路為所述物體運動的直線路線。
3.如權(quán)利要求1所述的物體運動控制方法,其特征在于,所述運動參數(shù)包括所述物體的運動類型、運動的起點、運動的終點、運動方向、運動開始的時間、運動結(jié)束的時間、X軸向上的起始速度、Y軸向上的起始速度、X軸向上的加速度、Y軸向上的加速度、運動所在路以及下一個運動狀態(tài)。
4.如權(quán)利要求2所述的物體運動控制方法,其特征在于,所述步驟C進(jìn)一步包括下述步驟C1.根據(jù)所述物體的位置獲得所述物體所在的柵格;C2.根據(jù)所述柵格獲取所述物體的路的信息;C3.根據(jù)物體的運動趨勢以及所述路的信息對所述物體進(jìn)行直線運動控制、靜止運動控制或者跳躍運動控制。
5.如權(quán)利要求4所述的物體運動控制方法,其特征在于,對所述物體進(jìn)行直線運動控制的步驟進(jìn)一步包括C311.由所述路的信息和所述物體的運動初始狀態(tài)產(chǎn)生直線運動方程,放入方程組;C312.記錄所述物體下一個運動的初始運動狀態(tài);C313.判斷路的終點是否有連接另一條路,有則執(zhí)行步驟C311,沒有則執(zhí)行步驟C314;C314.判斷是否有阻擋,有則對所述物體進(jìn)行靜止運動控制,沒有則對所述物體進(jìn)行跳躍運動控制。
6.如權(quán)利要求4所述的物體運動控制方法,其特征在于,對所述物體進(jìn)行跳躍運動控制的步驟進(jìn)一步包括C321.根據(jù)所述物體的運動初始狀態(tài)和位置產(chǎn)生跳躍運動方程,放入方程組;C322.記錄下一個運動的初始運動狀態(tài);C323.判斷運動方程的終點是否與阻擋物側(cè)面相交,是則執(zhí)行步驟C321,否則執(zhí)行步驟C324;C324.方程的終點和路相交,判斷有無向左或向右的趨勢,沒有則對所述物體進(jìn)行靜止運動控制,有則對所述物體進(jìn)行直線運動控制。
7.如權(quán)利要求4所述的物體運動控制方法,其特征在于,對所述物體進(jìn)行靜止運動控制的步驟進(jìn)一步包括C331.產(chǎn)生靜止運動方程,放入方程組;C332.根據(jù)所述運動方程以及物體經(jīng)過的時間對物體的位置進(jìn)行更新;C333.判斷輸入的運動控制信號是否有變化,沒有則執(zhí)行步驟C332,有則執(zhí)行步驟C334;C334.根據(jù)物體的運動趨勢進(jìn)行相應(yīng)的直線運動控制或者跳躍運動控制。
全文摘要
本發(fā)明適用于計算機(jī)通信領(lǐng)域,提供了一種網(wǎng)絡(luò)游戲中的物體運動控制方法,所述方法包括下述步驟A.根據(jù)游戲內(nèi)容設(shè)置游戲地圖數(shù)據(jù);B.接收物體的運動控制信號,根據(jù)所述運動控制信號判斷物體的運動趨勢;C.根據(jù)所述運動趨勢產(chǎn)生所述物體的運動方程,通過所述運動方程對所述物體的運動進(jìn)行控制,所述運動方程記錄有所述物體的運動參數(shù)。本發(fā)明的計算頻率低,傳輸數(shù)據(jù)量少,適合網(wǎng)絡(luò)傳輸,并便于服務(wù)器端重現(xiàn)和驗證物體的運動軌跡。同時,網(wǎng)絡(luò)其他客戶端能夠根據(jù)服務(wù)器端的運動數(shù)據(jù)平滑過渡多個運動,屏幕表現(xiàn)自然。
文檔編號A63F13/10GK1990074SQ20051012148
公開日2007年7月4日 申請日期2005年12月28日 優(yōu)先權(quán)日2005年12月28日
發(fā)明者陳睿 申請人:騰訊科技(深圳)有限公司