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