專利名稱:游戲地圖的存儲(chǔ)方法及裝置、游戲地圖的顯示方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及畫面顯示技術(shù),尤其涉及游戲地圖的存儲(chǔ)方法及裝置、游戲地圖的顯示方法及系統(tǒng)。
背景技術(shù):
游戲地圖,也稱為游戲的場景,是使玩家能融入游戲的重要要素,在游戲中,常規(guī)的方法是將不同的場景做成不同的地圖,玩家需要切換地圖來實(shí)現(xiàn)場景的變化,這樣導(dǎo)致了在游戲過程中,切換場景時(shí)會(huì)出現(xiàn)時(shí)間或長或短的黑屏,這樣會(huì)導(dǎo)致玩家的游戲體驗(yàn)降低,因此,在當(dāng)前的電腦游戲中,更傾向于展現(xiàn)一個(gè)完整的游戲世界,玩家在游戲世界里面移動(dòng)的時(shí)候,場景能及時(shí)變化顯示不同的地貌,而無需切換游戲地圖。
現(xiàn)有的一種無縫顯示地圖技術(shù)的核心思想是這樣對(duì)單張地圖的顯示進(jìn)行改良,當(dāng)玩家在一張地圖的邊緣,能看到另一張地圖的時(shí)候,就載入另一張地圖的可視部分,下面對(duì)該方法進(jìn)行詳細(xì)描述例如一個(gè)游戲有9個(gè)場景地圖,分別用A、B、C、D、E、F、G、H和I表示,它們之間的位置關(guān)系如表1所示
表1、游戲場景位置假設(shè)當(dāng)前游戲中所加載的地圖是F,顯示的場景是草地,玩家在當(dāng)前地圖中保持向E移動(dòng)的運(yùn)動(dòng)趨勢(shì),E顯示的是雪地,當(dāng)玩家的位置坐標(biāo)到達(dá)需要顯示E地圖的場景時(shí),為了避免出現(xiàn)加載新地圖而出現(xiàn)黑屏的情況,而且保持玩家可視屏幕的連貫性,在玩家能看到E地圖場景之前就要將地圖E加載到內(nèi)存當(dāng)中,這樣就實(shí)現(xiàn)了無縫地圖。
但是使用該方法各個(gè)場景都是分開單獨(dú)設(shè)計(jì),不同的場景設(shè)計(jì)在不同的地圖上,還需要設(shè)計(jì)額外的信息將不同的地圖進(jìn)行關(guān)聯(lián),增加了數(shù)據(jù)量,也增加了游戲過程中的計(jì)算量;并且,地圖設(shè)計(jì)者無法直接瀏覽地圖的全貌,所以如果兩張地圖的場景不一樣,兩張地圖往往會(huì)有比較明顯的邊界,如上述的地圖E和地圖F,一張草地和一張雪地,實(shí)際中應(yīng)該是一種雪地到草地漸變的過程,但是兩張地圖分開設(shè)計(jì),很難實(shí)現(xiàn)漸變的效果,降低了玩家的用戶體驗(yàn)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供游戲地圖的存儲(chǔ)方法及裝置、游戲地圖的顯示方法及系統(tǒng),不需要設(shè)計(jì)額外的信息將不同的地圖進(jìn)行關(guān)聯(lián),降低游戲處理時(shí)的數(shù)據(jù)量。
為解決上述技術(shù)問題,本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的一種游戲地圖的存儲(chǔ)方法,包括將游戲的游戲地圖分成地圖塊;為每個(gè)地圖塊編號(hào);對(duì)地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息進(jìn)行保存。
優(yōu)選的,所述地圖快的尺寸一致。
優(yōu)選的,所述游戲的游戲地圖被設(shè)計(jì)為一張。
一種游戲地圖的顯示方法,包括將游戲的游戲地圖采用地圖塊方式存儲(chǔ);獲取玩家的位置坐標(biāo),根據(jù)所述位置坐標(biāo)確定可見場景對(duì)應(yīng)的多個(gè)地圖塊;用二維數(shù)組存儲(chǔ)所述地圖塊的編號(hào);從保存的游戲地圖中獲取存儲(chǔ)于二維數(shù)組中的編號(hào)對(duì)應(yīng)的地圖信息;繪制獲取的地圖信息,并在屏幕上輸出。
其中,所述游戲的游戲地圖被設(shè)計(jì)成一張。
優(yōu)選的,該方法還包括當(dāng)玩家的位置坐標(biāo)變化時(shí),判斷玩家的位置是否跨越了地圖塊,如果是,更新二維數(shù)組中的地圖塊編號(hào),進(jìn)入獲取存儲(chǔ)于二維數(shù)組中的編號(hào)對(duì)應(yīng)的地圖信息的步驟。
其中,所述更新為在二維數(shù)組中將不可見的地圖塊編號(hào)刪除,將新的可見的地圖塊編號(hào)增加到刪除的位置。
一種游戲地圖的存儲(chǔ)裝置,包括地圖分塊單元,用于將游戲地圖分成地圖塊;編號(hào)單元,用于對(duì)分成的地圖塊編號(hào);保存單元,用于保存地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息。
一種游戲地圖的顯示系統(tǒng),包括游戲地圖存儲(chǔ)裝置,用于采用地圖塊的方式存儲(chǔ)游戲的游戲地圖;地圖塊確定單元,用于獲取玩家的位置坐標(biāo),并根據(jù)位置坐標(biāo)確定可見場景對(duì)應(yīng)的地圖塊;地圖塊編號(hào)存儲(chǔ)單元,用于創(chuàng)建二維數(shù)組存儲(chǔ)空間,并將可見場景對(duì)應(yīng)的地圖塊編號(hào)保存至所述二位數(shù)組;信息獲取單元,用于根據(jù)存儲(chǔ)的地圖塊編號(hào)獲取對(duì)應(yīng)的地圖塊的地圖信息;繪制輸出單元,用于根據(jù)所述地圖信息繪制地圖,并將繪制的地圖在屏幕上輸出。
優(yōu)選的,該裝置還包括位置判斷單元,用于根據(jù)玩家的位置坐標(biāo)判斷玩家的位置是否跨越了地圖塊,如果是,還用于促使地圖塊編號(hào)存儲(chǔ)單元更新存儲(chǔ)的地圖塊編號(hào)。
其中,所述位置判斷單元與地圖塊確定單元集成在一起。
以上技術(shù)方案可以看出,由于本發(fā)明將游戲地圖設(shè)計(jì)為一張,所以不需要額外的數(shù)據(jù)去關(guān)聯(lián)不同的地圖,并且地圖設(shè)計(jì)者可以直接瀏覽地圖的全貌,方便了地圖設(shè)計(jì)者,可以很容易的設(shè)計(jì)出場景漸變的游戲地圖;在玩家位置發(fā)生變化時(shí),對(duì)玩家的位置是否跨域地圖塊進(jìn)行判斷,當(dāng)玩家位置跨越地圖塊時(shí),對(duì)可見場景對(duì)應(yīng)的地圖塊編號(hào)進(jìn)行更新,從而使繪制的游戲地圖也進(jìn)行更新,使玩家的游戲流暢運(yùn)行,提高了玩家的用戶體驗(yàn),而且更新時(shí)只將不可見的地圖塊編號(hào)進(jìn)行更新,一直存在的地圖塊編號(hào)則保持不變,進(jìn)一步降低了游戲處理時(shí)的數(shù)據(jù)量。
圖1為游戲地圖的存儲(chǔ)裝置的結(jié)構(gòu)圖;圖2為游戲地圖的存儲(chǔ)方法的流程圖;圖3為游戲地圖的顯示系統(tǒng)第一實(shí)施例的結(jié)構(gòu)圖;圖4為游戲地圖的顯示系統(tǒng)第二實(shí)施例的結(jié)構(gòu)圖;圖5為游戲地圖的顯示方法的流程圖;圖6為游戲地圖的顯示方法第一實(shí)施例的具體流程圖;圖7為游戲地圖的顯示方法第二實(shí)施例的具體流程圖;圖8為游戲地圖的顯示方法第三實(shí)施例的具體流程圖。
具體實(shí)施例方式
本發(fā)明為游戲地圖的存儲(chǔ)方法及裝置、游戲地圖的顯示方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
先介紹本發(fā)明提供的游戲地圖的存儲(chǔ)裝置,參見圖1,圖1為游戲地圖存儲(chǔ)裝置的結(jié)構(gòu)圖。
如圖1所示,游戲地圖的存儲(chǔ)裝置包括地圖分塊單元(101),編號(hào)單元(102),保存單元(103),其中地圖分塊單元,用于將游戲地圖分成地圖塊;
例如一張100*100的游戲地圖,地圖分塊單元可以根據(jù)需要將該地圖分成100個(gè)地圖塊,每個(gè)塊為1*1;也可以分成10個(gè)地圖塊,每個(gè)塊為10*10;具體怎樣分塊,分成多少塊,由具體的游戲環(huán)境確定,本發(fā)明并不對(duì)此進(jìn)行限定。
編號(hào)單元,用于對(duì)分成的地圖塊編號(hào);如一個(gè)9*9的游戲地圖,被分成了9個(gè)地圖塊,它的編號(hào)可以如表2所示
表2、地圖塊編號(hào)1也可以如表3所示
表3、地圖塊編號(hào)2其中,表2采用的編號(hào)更加直觀清楚,地圖塊的位置及地圖塊之間的位置關(guān)系可以直接通過編號(hào)看出來。當(dāng)然還可以采用其他的編號(hào)方式,本說明書不對(duì)其進(jìn)行窮舉,也無法對(duì)其進(jìn)行窮舉,但是不管采用哪種編號(hào)方式都不影響本發(fā)明的實(shí)現(xiàn),因此本發(fā)明并不對(duì)地圖塊的編號(hào)方式進(jìn)行限定。
保存單元,用于保存地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息。
將地圖塊的編號(hào)及其對(duì)應(yīng)的地圖信息進(jìn)行保存,如表2所描述的地圖編號(hào),編號(hào)為(2,2)的地圖塊對(duì)應(yīng)的地圖信息是一片森林,則將(2,2)和一片森林作為一條記錄進(jìn)行保存。
下面介紹采用上述游戲地圖的存儲(chǔ)裝置對(duì)游戲地圖進(jìn)行存儲(chǔ)的方法,參見圖2,圖2為該方法的具體流程圖。
步驟201、將游戲地圖分成地圖塊;游戲地圖的劃分根據(jù)游戲地圖的大小,游戲的環(huán)境,以及玩家的需求進(jìn)行劃分;步驟202、為每個(gè)地圖塊編號(hào);編號(hào)是互斥的,也就是每個(gè)地圖塊的編號(hào)都是唯一的,這樣可以避免相同編號(hào)不同地圖信息的情況;步驟203、對(duì)地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息進(jìn)行保存。
從上可以看出,本發(fā)明提供的游戲地圖的存儲(chǔ)裝置及方法采用分塊的思想將大的游戲地圖分成小的地圖塊進(jìn)行保存,這樣在讀取地圖信息時(shí)可以直接根據(jù)坐標(biāo)找到對(duì)應(yīng)的地圖塊,將比直接保存一個(gè)大的地圖時(shí)查找地圖信息更快。
進(jìn)一步可以將游戲地圖分成尺寸一致的地圖塊,不僅劃分更為簡單,而且可以很容易的確定地圖塊對(duì)應(yīng)的地圖范圍,這樣在存儲(chǔ)地圖信息時(shí)可以不存儲(chǔ)地圖塊的坐標(biāo)范圍,減少了數(shù)據(jù)量;并且,如果游戲地圖設(shè)計(jì)為一張,地圖設(shè)計(jì)者可以直接瀏覽地圖的全貌,可以避免不同的場景之間出現(xiàn)明顯的分界,從而提高用戶體驗(yàn)。
下面介紹本發(fā)明提供的游戲地圖的顯示方法及系統(tǒng),參見圖3,圖3為本發(fā)明提供的游戲地圖的顯示系統(tǒng)第一實(shí)施例的結(jié)構(gòu)圖。
如圖3所示,本發(fā)明提供的游戲地圖的顯示系統(tǒng)第一實(shí)施例包括游戲地圖存儲(chǔ)裝置(301),地圖塊確定單元(302),地圖塊編號(hào)存儲(chǔ)單元(303),信息獲取單元(304),繪制輸出單元(305);其中游戲地圖存儲(chǔ)裝置,用于采用地圖塊的方式存儲(chǔ)游戲地圖;它由三個(gè)單元組成地圖分塊單元,編號(hào)單元和保存單元,其中地圖分塊單元用于將游戲地圖分成地圖塊;編號(hào)單元用于對(duì)分成的地圖塊編號(hào);保存單元用于保存地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息;該裝置即圖1所描述的游戲地圖的存儲(chǔ)裝置;
地圖塊確定單元,用于獲取玩家的位置坐標(biāo),并根據(jù)位置坐標(biāo)確定可見場景對(duì)應(yīng)的地圖塊;從外部游戲數(shù)據(jù)庫獲取玩家的位置坐標(biāo),再根據(jù)位置坐標(biāo)確定其所處的地圖塊,從而確定可見場景對(duì)應(yīng)的地圖塊;例如一個(gè)100*100的游戲地圖,被分成100個(gè)地圖塊,地圖塊采用表2所描述的編號(hào)方式;或取的玩家的位置坐標(biāo)是(35,35),則該玩家處于縱向第三個(gè)塊,橫向也是第三個(gè)塊的那個(gè)地圖塊,則該玩家對(duì)應(yīng)的地圖塊的編號(hào)為(4,4);然后假設(shè)可見場景對(duì)應(yīng)的是一個(gè)3*3個(gè)地圖塊組成的場景,則以該地圖塊為中心得到可見場景對(duì)應(yīng)的地圖塊分別為(3,3),(4,3),(5,3),(3,4),(4,4),(5,4),(3,5),(4,5)和(5,5);地圖塊編號(hào)存儲(chǔ)單元,用于創(chuàng)建二維數(shù)組存儲(chǔ)空間,并將可見場景對(duì)應(yīng)的地圖塊編號(hào)保存至所述二位數(shù)組;接上例,保存如表4所示
表4、地圖塊編號(hào)3為了便于說明,本實(shí)施例中采用3*3的二維數(shù)組來表示可視場景,但是在實(shí)際應(yīng)用中,為了使畫面更為流暢,往往采用4*4,甚至是5*5的二維數(shù)組來存儲(chǔ),這是因?yàn)橐獙⑼婕业牡貓D預(yù)先畫好,因?yàn)橥婕业奈磥韯?dòng)作是不可預(yù)見的,所以需要將部分玩家不可見的地圖也進(jìn)行繪制,從而抑制保持玩家畫面的流暢;信息獲取單元,用于根據(jù)存儲(chǔ)的地圖塊編號(hào)獲取對(duì)應(yīng)的地圖塊的地圖信息;從地圖塊編號(hào)存儲(chǔ)單元獲取可見場景對(duì)應(yīng)的地圖塊編號(hào)后,從地圖保存單元中取得對(duì)應(yīng)的地圖信息;因?yàn)槊總€(gè)編號(hào)及其對(duì)應(yīng)的地圖信息都在地圖保存單元中保存,所以根據(jù)編號(hào)存儲(chǔ)單元中的地圖塊編號(hào)就可以找到對(duì)應(yīng)的地圖信息;繪制輸出單元,用于根據(jù)所述地圖信息繪制地圖,并將繪制的地圖在屏幕上輸出。
地圖信息包含有坐標(biāo)及場景,所以繪制地圖時(shí)只需要根據(jù)坐標(biāo)然后確定場景,再進(jìn)行繪制就可以得到游戲地圖,然后再在屏幕上輸出。
參見圖4,圖4為本發(fā)明提供的游戲地圖的顯示裝置的第二實(shí)施例的結(jié)構(gòu)圖,本實(shí)施例與第一實(shí)施例的不同在于增加了一個(gè)位置判斷單元。
如圖4所示,游戲地圖的顯示系統(tǒng)的第二實(shí)施例包括游戲地圖存儲(chǔ)裝置(401),地圖塊確定單元(402),位置判斷單元(403),地圖塊編號(hào)存儲(chǔ)單元(404),信息獲取單元(405),繪制輸出單元(406);其中游戲地圖存儲(chǔ)裝置用于采用地圖塊的方式存儲(chǔ)游戲地圖;地圖塊確定單元用于獲取玩家的位置坐標(biāo),并根據(jù)位置坐標(biāo)確定可見場景對(duì)應(yīng)的地圖塊;位置判斷單元用于在玩家位置坐標(biāo)發(fā)生變化后,判斷玩家的位置是否跨越了地圖塊,如果跨越了地圖塊還要促使地圖塊編號(hào)存儲(chǔ)單元更新其存儲(chǔ)的地圖塊編號(hào);假設(shè)一張地圖100*100,劃分為10*10塊,每塊大小為10*10,玩家當(dāng)前位置坐標(biāo)為(33,44),可算出玩家當(dāng)前所在的塊為第三行第四列,玩家橫向移動(dòng)一個(gè)步長,假設(shè)為8,可得新位置坐標(biāo)為(41,44),新的塊為第四行第四列,玩家橫向跨越一個(gè)塊;此時(shí)就需要促使地圖塊編號(hào)存儲(chǔ)單元更新其存儲(chǔ)的編號(hào)了,本發(fā)明提供了兩種更新存儲(chǔ)編號(hào)的方法第一種就是完全更新,即根據(jù)玩家新的位置坐標(biāo),重新在二維數(shù)組中存儲(chǔ)新的地圖塊編號(hào),接上例,假設(shè)可見場景為3*3數(shù)量的地圖塊,二維數(shù)組中原先存儲(chǔ)的地圖塊編號(hào)如表5所示
表5、地圖塊編號(hào)4采用第一種方法后,二維數(shù)組中存儲(chǔ)的地圖塊編號(hào)如表6所示
表6、地圖塊編號(hào)5第二種方法是將不可見的可見場景對(duì)應(yīng)的地圖塊的編號(hào)從二維數(shù)組中刪除,再在刪除后的位置增加新的可見地圖塊的編號(hào),可以使用下述公式來計(jì)算需要修改的塊index0=(index+offset)%size其中,index是需要訪問的數(shù)組下標(biāo),index0是真正訪問到的數(shù)組下標(biāo),size是二維數(shù)組的尺寸,offset是二維數(shù)組在地圖上移動(dòng)的偏移量。地圖塊編號(hào)存儲(chǔ)單元用于創(chuàng)建二維數(shù)組存儲(chǔ)空間,并將可見場景對(duì)應(yīng)的地圖塊編號(hào)保存至所述二位數(shù)組;偏移量的變化是和玩家角色移動(dòng)相關(guān)的,采用普通的坐標(biāo)系,玩家角色向右移動(dòng)一格,偏移量則加1;還是采用第一種方法那個(gè)例子,數(shù)組名為數(shù)組b,則數(shù)組b
至b
[2]存儲(chǔ)的是塊(2,3)至(2,5),b[1]
至b[1][2]存儲(chǔ)的是塊(3,3)至(3,5),b[2]
至b[2][2]存儲(chǔ)的是塊(4,3)至(4,5),當(dāng)玩家橫向移動(dòng)一個(gè)塊時(shí),本應(yīng)該重新為數(shù)組進(jìn)行賦值,即b
至b
[2]存儲(chǔ)得是塊(3,3)至(3,5),b[1]
至b[1][2]存儲(chǔ)得是塊(4,3)至(4,5),b[2]
至b[2][2]存儲(chǔ)得是塊(5,3)至(5,5),但為了減少計(jì)算量,將原有數(shù)組中得b[1]
至b[1][2]和b[2]
至b[2][2]的值不變,將(5,3)至(5,5)的地圖塊存儲(chǔ)到原存儲(chǔ)(2,3)至(2,5)的位置。該公式就是為了計(jì)算新加載地圖塊所應(yīng)存儲(chǔ)的數(shù)組下標(biāo),本例中,index=2,即(5,3)本應(yīng)存儲(chǔ)再數(shù)組b[2]一列,offset=1,size=3,得出index0=0,即存儲(chǔ)在第0列,這樣數(shù)組中存儲(chǔ)的地圖塊編號(hào)如表7所示
表7、地圖塊編號(hào)6在實(shí)際應(yīng)用中,位置判斷單元可以與地圖塊確定單元集成在一起,如本實(shí)施例所描述,也可以作為一個(gè)獨(dú)立的單元在游戲地圖的顯示裝置中,當(dāng)然還可以與其它的功能單元集成在一起,位置判斷單元是否與其它功能單元集成并不影響本發(fā)明的實(shí)現(xiàn),因此本發(fā)明并不對(duì)位置判斷單元是否與其它功能單元集成進(jìn)行限定;信息獲取單元用于根據(jù)存儲(chǔ)的地圖塊編號(hào)獲取對(duì)應(yīng)的地圖塊的地圖信息;繪制輸出單元用于根據(jù)所述地圖信息繪制地圖,并將繪制的地圖在屏幕上輸出。
從上可以看出,本實(shí)施例在地圖顯示裝置中增加了一個(gè)位置判斷單元,該單元能在玩家位置坐標(biāo)變化時(shí),對(duì)玩家的位置是否跨越了地圖塊進(jìn)行判斷,如果跨越了地圖塊,則會(huì)促使地圖塊編號(hào)存儲(chǔ)單元更新其所保存的地圖塊編號(hào),從而使輸出的場景隨著玩家位置坐標(biāo)的變化而變化,保持了游戲的連貫性,也使游戲過程更為真實(shí),玩家的用戶體驗(yàn)更高。
下面介紹本發(fā)明提供的游戲地圖的顯示方法,參見圖5,圖5為游戲地圖的顯示方法的具體流程圖。
如圖5所示,本發(fā)明提供的游戲地圖的顯示方法的核心思想是
步驟501、將游戲的游戲地圖采用地圖塊方式存儲(chǔ);保存游戲的過程采用的是本發(fā)明提供的游戲地圖的保存方法,它的具體流程為將游戲地圖分成尺寸一致的地圖塊;為每個(gè)地圖塊編號(hào);對(duì)地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息進(jìn)行存儲(chǔ);舉例說明一張9*9的地圖,分成9個(gè)塊,每個(gè)塊為3*3,對(duì)每個(gè)塊編號(hào),怎樣編號(hào)在上面已有描述,這里不再贅述;將每個(gè)地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息進(jìn)行存儲(chǔ),因?yàn)槊總€(gè)地圖塊對(duì)應(yīng)的地圖范圍不同,分成了9個(gè)塊,每個(gè)塊的大小是3*3,所以每個(gè)地圖塊對(duì)應(yīng)的地圖信息也不一樣,都是該地圖塊中3*3地圖范圍內(nèi)的場景;步驟502、獲取玩家的位置坐標(biāo),根據(jù)所述位置坐標(biāo)確定可見場景對(duì)應(yīng)的地圖塊;玩家位置坐標(biāo)的獲取可以直接從游戲數(shù)據(jù)庫中獲取,因?yàn)橥婕业拿總€(gè)信息都在游戲數(shù)據(jù)庫中有保存;接上例,如獲取的玩家位置坐標(biāo)為(7,7),而地圖塊被分成了尺寸一致的地圖塊,則該玩家的位置處于橫向第三個(gè)塊,縱向也是第三個(gè)塊的地圖塊,如果采用數(shù)字順序編號(hào),則該玩家處于第9個(gè)塊;再根據(jù)玩家所處的地圖塊以及可見場景的大小確定可見場景對(duì)應(yīng)的地圖塊,例如一張地圖被分成10*10個(gè)地圖塊,一玩家所處的地圖塊編號(hào)為(5,5),可見場景的大小為3*3個(gè)地圖塊,則以玩家所處的地圖塊為中心,算出可見場景對(duì)應(yīng)的地圖塊分別為(4,4),(4,5),(4,6),(5,4),(5,5),(5,6),(6,4),(6,5)和(6,6);在實(shí)際應(yīng)用中,需要確定的地圖塊數(shù)量要大于可見場景的數(shù)量,例如可見場景為3*3的地圖塊,則需要確定的地圖塊可能是4*4或者更多,本說明書為了描述方便采用可見場景的大小作為需要確定的地圖塊大小,并不是對(duì)本發(fā)明的限制;步驟503、用二維數(shù)組存儲(chǔ)所述地圖塊的編號(hào);采用二維數(shù)組對(duì)確定的地圖塊進(jìn)行保存,如步驟504確定的地圖塊,用一個(gè)3*3的二維數(shù)組保存如表8所示
表8、地圖塊編號(hào)7步驟504、從保存的游戲地圖中獲取存儲(chǔ)于二維數(shù)組中的編號(hào)對(duì)應(yīng)的地圖信息;由存儲(chǔ)的地圖塊編號(hào)從存儲(chǔ)的地圖信息中查找出對(duì)應(yīng)的信息,因?yàn)槊總€(gè)編號(hào)及其對(duì)應(yīng)的地圖信息都有保存,所以通過地圖快編號(hào)可以很快地查找到對(duì)應(yīng)的地圖信息;步驟505、繪制獲取的地圖信息,并在屏幕上輸出。
從上可以看出,本發(fā)明提供的游戲地圖的顯示方法能夠?qū)崿F(xiàn)對(duì)地圖的無縫顯示,并且在顯示時(shí)不需要考慮其他地圖的信息,從而降低了顯示游戲地圖時(shí)的數(shù)據(jù)處理量。
參見圖6,圖6是本發(fā)明提供的游戲地圖的顯示方法的第一實(shí)施例的具體流程圖。
步驟601、將游戲地圖設(shè)計(jì)成一張;將游戲地圖設(shè)計(jì)成一張可以使地圖設(shè)計(jì)者直接瀏覽地圖的全貌,從而可以實(shí)現(xiàn)不同場景的漸變,使玩家看游戲地圖的時(shí)候更加流暢,用戶體驗(yàn)更高;步驟602、將游戲地圖分成尺寸一致的地圖塊;游戲地圖的分塊根據(jù)游戲的具體環(huán)境以及玩家的需要進(jìn)行劃分,一般來說不要分的太小,分的太小數(shù)據(jù)量太大;也不要分的太大,太大玩家的可見場景不連貫,會(huì)降低游戲的趣味性;分成尺寸一致可以方便的確定每個(gè)地圖塊的坐標(biāo)范圍;步驟603、將每個(gè)地圖塊編號(hào),并將每個(gè)地圖塊的編號(hào)及其對(duì)應(yīng)的地圖信息存儲(chǔ);
上面介紹了地圖塊編號(hào)的方法,在這里不再贅述;步驟604、獲取玩家的位置坐標(biāo),并根據(jù)玩家的位置坐標(biāo)確定其所處的地圖塊的編號(hào);步驟605、根據(jù)所述地圖塊的編號(hào)確定可見場景對(duì)應(yīng)的地圖塊的編號(hào);步驟606、在二維數(shù)組中保存可見場景對(duì)應(yīng)的地圖塊的編號(hào);步驟607、根據(jù)二維數(shù)組中的地圖塊的編號(hào)獲取對(duì)應(yīng)的地圖信息;步驟608、對(duì)獲取的地圖信息進(jìn)行繪制,并在屏幕上輸出。
本實(shí)施例將游戲地圖設(shè)計(jì)成一張,這樣地圖設(shè)計(jì)者可以容易的設(shè)計(jì)出場景間漸變的效果,并且在存儲(chǔ)地圖信息時(shí),不需要存儲(chǔ)大量的附加信息,減少了顯示游戲地圖時(shí)的計(jì)算量。
參見圖7,圖7為本發(fā)明提供的游戲地圖的顯示方法第二實(shí)施例的具體流程圖,本實(shí)施例與第一實(shí)施例的不同在于獲取玩家的位置坐標(biāo)時(shí)要判斷玩家的位置是否跨越了地圖塊。
步驟701、獲取玩家的位置坐標(biāo);步驟702、判斷玩家的位置是否跨越了地圖塊?如果是,進(jìn)入步驟703,如果否,進(jìn)入步驟706;例如一個(gè)100*100的游戲地圖,分成10*10塊,每塊大小為10*10,可見場景為3*3塊,現(xiàn)在可見場景的地圖塊如表9所示
表9、地圖塊編號(hào)8先前玩家的位置坐標(biāo)為(45,45),玩家所處的地圖塊編號(hào)為(5,5);步驟703、根據(jù)玩家的位置坐標(biāo)確定其所處的地圖塊的編號(hào);
例如獲取的玩家位置坐標(biāo)為(35,55),則玩家所處的地圖塊編號(hào)為(4,6);這里步驟702和703也可以交換位置;702在前時(shí),根據(jù)玩家的位置進(jìn)行計(jì)算,判斷玩家當(dāng)前的位置與先前相比是否跨越了地圖塊;703在前時(shí),先計(jì)算出玩家當(dāng)前的地圖塊,然后再判斷該地圖塊是否與先前的地圖塊一樣,如果不一樣則玩家的位置跨越了地圖塊;因此本發(fā)明并不對(duì)這兩個(gè)步驟執(zhí)行地先后順序進(jìn)行限定;步驟704、根據(jù)所述地圖塊的編號(hào)確定可見場景對(duì)應(yīng)的地圖塊的編號(hào);以地圖塊編號(hào)為(4,6)的地圖塊為中心,則此時(shí)3*3的可見場景對(duì)應(yīng)的地圖塊編號(hào)分別為(3,5),(3,6),(3,7),(4,5),(4,6),(4,7),(5,5),(5,6),(5,7);步驟705、將可將場景對(duì)應(yīng)的地圖塊的編號(hào)存儲(chǔ)至二維數(shù)組;存儲(chǔ)到二維數(shù)組后,二維數(shù)組中存儲(chǔ)的地圖塊編號(hào)如表10所示
表10、地圖塊編號(hào)9步驟706、根據(jù)二維數(shù)組中存儲(chǔ)的地圖塊編號(hào)獲取對(duì)應(yīng)的地圖信息;步驟707、繪制所述地圖信息,并在屏幕上輸出。
從上可以看出,本實(shí)施例在玩家的位置發(fā)生改變時(shí),判斷玩家的位置是否跨越了地圖塊,如果是,則重新確定可見場景對(duì)應(yīng)的地圖塊的編號(hào),從而更新二維數(shù)組中存儲(chǔ)的信息,使玩家在移動(dòng)時(shí)可以流暢的看到游戲地圖的變化。
參見圖8,圖8為本發(fā)明提供的游戲地圖的顯示方法第三實(shí)施例的具體流程圖,本實(shí)施例與第二實(shí)施例的不同在于,在玩家位置跨越了地圖塊時(shí),只更新二維數(shù)組中不可見的地圖塊。
步驟801、獲取玩家的位置坐標(biāo);步驟802、判斷玩家的位置是否橫向跨越了地圖塊?如果是,進(jìn)入步驟803,如果否,進(jìn)入步驟804;例如一個(gè)100*100的游戲地圖,分成10*10塊,每塊大小為10*10,可見場景為3*3塊,現(xiàn)在可見場景的地圖塊如表11所示
表11、地圖塊編號(hào)10先前玩家的位置坐標(biāo)為(45,45),玩家所處的地圖塊編號(hào)為(5,5);當(dāng)再次獲得的玩家位置坐標(biāo)變?yōu)?55,35)時(shí),因?yàn)槊總€(gè)地圖塊分成的大小是10*10,所以地圖塊編號(hào)為(5,5)的地圖塊的橫坐標(biāo)范圍是[40,49],而此時(shí)玩家的橫坐標(biāo)為55,所以可以判斷該玩家的位置橫向移動(dòng)了一個(gè)地圖塊,并且是向右橫向移動(dòng)了一個(gè)地圖塊,此時(shí)公式中的offset取值為1,采用公式index0=(index+offset)%size計(jì)算需要更新的地圖塊所處的列,index0=(2+1)%3=0,所以要對(duì)第0列的地圖塊編號(hào)進(jìn)行更新;步驟803、將二維數(shù)組中橫向不可見的地圖塊編號(hào)更新為可見的地圖塊編號(hào);將第0列的數(shù)據(jù)更新為新的可見的地圖塊數(shù)據(jù)后二維數(shù)組存儲(chǔ)的地圖塊編號(hào)如表12所示
表12、地圖塊編號(hào)11
步驟804、判斷玩家的位置是否縱向跨越了地圖塊?如果是,進(jìn)入步驟805,如果否,進(jìn)入步驟806;地圖塊編號(hào)為(5,5)的地圖塊的縱向坐標(biāo)范圍是[40,49],此時(shí)玩家的縱向坐標(biāo)為35,所以玩家的縱向位置也跨越了地圖塊,并且是向上移動(dòng)了一個(gè)地圖塊,此時(shí)公式中的offset取值為1,采用公式index0=(index+offset)%size計(jì)算需要更新的地圖塊所處的行,index0=(1+1)%3=2,所以要對(duì)第2行的地圖塊編號(hào)進(jìn)行更新;步驟805、將二維數(shù)組中縱向不可見的地圖塊編號(hào)更新為可見的地圖塊編號(hào);將第2行的數(shù)據(jù)更新為新的可見的地圖塊數(shù)據(jù)后二維數(shù)組存儲(chǔ)的地圖塊編號(hào)如表13所示
表13、地圖塊編號(hào)12步驟806、根據(jù)二維數(shù)組中存儲(chǔ)的地圖塊編號(hào)獲取對(duì)應(yīng)的地圖信息;不管玩家的位置是否跨越了地圖塊都要對(duì)游戲地圖進(jìn)行重新繪制,這是因?yàn)橛螒蚴怯梢粋€(gè)個(gè)的游戲循環(huán)構(gòu)成的,每個(gè)游戲循環(huán)都要對(duì)游戲地圖進(jìn)行重新繪制;步驟807、繪制所述地圖信息,并在屏幕上輸出;從上可知,只將不可見的地圖塊編號(hào)更新為可見的地圖塊編號(hào),減少了二維數(shù)組中需要更新的數(shù)據(jù)量;本實(shí)施例是先對(duì)玩家是否橫向移動(dòng)了地圖塊進(jìn)行判斷,再對(duì)玩家是否縱向移動(dòng)了地圖塊進(jìn)行判斷,在實(shí)際應(yīng)用中也可以先進(jìn)行縱向判斷,再進(jìn)行橫向判斷,先對(duì)橫向進(jìn)行判斷還是先對(duì)縱向進(jìn)行判斷并不影響本發(fā)明的實(shí)現(xiàn),因此本發(fā)明并不對(duì)先對(duì)橫向還是先對(duì)縱向進(jìn)行判斷進(jìn)行限定。
以上對(duì)本發(fā)明所提供的游戲地圖的存儲(chǔ)方法及裝置、游戲地圖的顯示方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種游戲地圖的存儲(chǔ)方法,其特征在于,包括將游戲的游戲地圖分成地圖塊;為每個(gè)地圖塊編號(hào);對(duì)地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息進(jìn)行保存。
2.如權(quán)利要求1所述的游戲地圖的存儲(chǔ)方法,其特征在于,所述地圖快的尺寸一致。
3.如權(quán)利要求1或2所述的游戲地圖的存儲(chǔ)方法,其特征在于,所述游戲的游戲地圖被設(shè)計(jì)為一張。
4.一種游戲地圖的顯示方法,其特征在于,包括將游戲的游戲地圖采用地圖塊方式存儲(chǔ);獲取玩家的位置坐標(biāo),根據(jù)所述位置坐標(biāo)確定可見場景對(duì)應(yīng)的多個(gè)地圖塊;用二維數(shù)組存儲(chǔ)所述地圖塊的編號(hào);從保存的游戲地圖中獲取存儲(chǔ)于二維數(shù)組中的編號(hào)對(duì)應(yīng)的地圖信息;繪制獲取的地圖信息,并在屏幕上輸出。
5.如權(quán)利要求4所述的游戲地圖的顯示方法,其特征在于,所述游戲的游戲地圖被設(shè)計(jì)成一張。
6.如權(quán)利要求4或5所述的游戲地圖的顯示方法,其特征在于,該方法還包括當(dāng)玩家的位置坐標(biāo)變化時(shí),判斷玩家的位置是否跨越了地圖塊,如果是,更新二維數(shù)組中的地圖塊編號(hào),進(jìn)入獲取存儲(chǔ)于二維數(shù)組中的編號(hào)對(duì)應(yīng)的地圖信息的步驟。
7.如權(quán)利要求6所述的游戲地圖的顯示方法,其特征在于,所述更新為在二維數(shù)組中將不可見的地圖塊編號(hào)刪除,將新的可見的地圖塊編號(hào)增加到刪除的位置。
8.一種游戲地圖的存儲(chǔ)裝置,其特征在于,包括地圖分塊單元,用于將游戲地圖分成地圖塊;編號(hào)單元,用于對(duì)分成的地圖塊編號(hào);保存單元,用于保存地圖塊編號(hào)及其對(duì)應(yīng)的地圖信息。
9.一種游戲地圖的顯示系統(tǒng),其特征在于,包括游戲地圖存儲(chǔ)裝置,用于采用地圖塊的方式存儲(chǔ)游戲的游戲地圖;地圖塊確定單元,用于獲取玩家的位置坐標(biāo),并根據(jù)位置坐標(biāo)確定可見場景對(duì)應(yīng)的地圖塊;地圖塊編號(hào)存儲(chǔ)單元,用于創(chuàng)建二維數(shù)組存儲(chǔ)空間,并將可見場景對(duì)應(yīng)的地圖塊編號(hào)保存至所述二位數(shù)組;信息獲取單元,用于根據(jù)存儲(chǔ)的地圖塊編號(hào)獲取對(duì)應(yīng)的地圖塊的地圖信息;繪制輸出單元,用于根據(jù)所述地圖信息繪制地圖,并將繪制的地圖在屏幕上輸出。
10.如權(quán)利要求9所述的游戲地圖的顯示系統(tǒng),其特征在于,該裝置還包括位置判斷單元,用于根據(jù)玩家的位置坐標(biāo)判斷玩家的位置是否跨越了地圖塊,如果是,還用于促使地圖塊編號(hào)存儲(chǔ)單元更新存儲(chǔ)的地圖塊編號(hào)。
11.如權(quán)利要求10所述的游戲地圖的顯示系統(tǒng),其特征在于,所述位置判斷單元與地圖塊確定單元集成在一起。
全文摘要
本發(fā)明公開了游戲地圖的存儲(chǔ)方法及裝置、游戲地圖的顯示方法及裝置,其中游戲地圖的顯示方法為將游戲的游戲地圖采用地圖塊方式存儲(chǔ);獲取玩家的位置坐標(biāo),根據(jù)所述位置坐標(biāo)確定可見場景對(duì)應(yīng)的多個(gè)地圖塊;用二維數(shù)組存儲(chǔ)所述地圖塊的編號(hào);從保存的游戲地圖中獲取存儲(chǔ)于二維數(shù)組中的編號(hào)對(duì)應(yīng)的地圖信息;繪制獲取的地圖信息,并在屏幕上輸出;使用該方法,可以實(shí)現(xiàn)無縫游戲地圖,并且減少游戲處理時(shí)的數(shù)據(jù)處理量,從而使游戲更為順暢。
文檔編號(hào)G06F17/30GK1924873SQ20061011322
公開日2007年3月7日 申請(qǐng)日期2006年9月19日 優(yōu)先權(quán)日2006年9月19日
發(fā)明者陳敏 申請(qǐng)人:北京金山數(shù)字娛樂科技有限公司