两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

游戲地圖的存儲方法及系統(tǒng)、游戲地圖的獲取方法及系統(tǒng)的制作方法

文檔序號:6562621閱讀:212來源:國知局
專利名稱:游戲地圖的存儲方法及系統(tǒng)、游戲地圖的獲取方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及畫面顯示技術(shù),尤其涉及游戲地圖的存儲方法及系統(tǒng)、游戲地圖的顯示方法及系統(tǒng)。
背景技術(shù)
游戲地圖,也稱為游戲的場景,是使玩家能融入游戲的重要要素。尤其3D室外游戲地圖的特點是視野開闊。為了充分突出這個特點,目前3D游戲都采用高度圖的方式來制作地表。為了給適應(yīng)游戲玩家越來越高的要求,室外游戲地圖的面積也越來越大,那么隨之而來的就是高度圖的尺寸也快速增大了。將高度圖存儲成地圖文件以后,導(dǎo)致了地圖文件過于龐大,占用了過多的存儲空間。
上面所述的高度圖實際上就是指一個用于存儲地形信息的二維數(shù)組。地形信息實際上是指一系列高度不同的網(wǎng)格,這樣數(shù)組中的每個元素的下標(biāo)剛好可以用來定位不同的網(wǎng)格(X,Y),數(shù)組中每個元素所存儲的值就是網(wǎng)格的高度(Z)。
例如用二維數(shù)組A(a
;a
[1];a[1]
;a[1][1])來定位不同的網(wǎng)格用a
定位網(wǎng)格(X0,Y0);a
[1]定位網(wǎng)格(X0,Y1);a[1]
定位網(wǎng)格(X1,Y0);a[1][1]定位網(wǎng)格(X1,Y1)。a
的用來存儲網(wǎng)格(X0,Y0)的高度值(Z1);a
[1]用來存儲網(wǎng)格(X0,Y1)的高度值(Z2);a[1]
用來存儲網(wǎng)格(X1,Y0)的高度值(Z3);a[1][1]用來存儲網(wǎng)格(X1,Y1)的高度值(Z4)。
在存儲3D室外游戲地圖的時候,游戲地圖所使用的高度圖決定了場景的大小,因此也決定了存儲空間的大小。假設(shè)要表達(dá)一張大小是1024*1024米的地圖,那么高度圖的大小是1024*1024米,若使用浮點數(shù)存儲高度圖的話,1個浮點數(shù)等于4個字節(jié),那么存儲的文件大小是4*1024*1024=4(兆)。可以看出若使用這種存儲方法,一個游戲地圖將占用大量的存儲空間。
為了解決這個問題,目前使用的方法是減小存儲高度圖的高度值的精確度,不使用浮點型,而使用1字節(jié)存儲高度值。例如,將地形中的最低點用0表示,而最高點用255表示,然后再將形成的高度圖進(jìn)行壓縮。
采用降低高度值精度的方法雖然能夠在一定程度上降低了存儲游戲地圖時的存儲空間,但是降低高度值精度也就降低了游戲地圖中的地表精度,這樣會降低游戲的視覺效果,使得游戲玩家感受不到3D游戲帶來的視覺沖擊,降低了游戲的娛樂性。
綜上所述,現(xiàn)有技術(shù)雖然能夠解決游戲地圖占用存儲空間較大的問題,但是在用戶體驗和交互上都不理想。

發(fā)明內(nèi)容
本發(fā)明要解決的問題是提供游戲地圖的存儲方法及系統(tǒng)、游戲地圖的獲取方法及系統(tǒng),在不需要降低游戲地圖顯示精度的情況下降低占用的存儲空間,并便于游戲地圖的存儲與讀取。
為實現(xiàn)上述發(fā)明目的,本發(fā)明是通過一下技術(shù)方案實現(xiàn)的將游戲地圖分解為預(yù)設(shè)大小的地圖塊,并給每個地圖塊分配一個唯一標(biāo)識;分別對地圖塊進(jìn)行壓縮并保存入地圖文件中,并保存被分解游戲地圖的標(biāo)識信息、每個地圖塊的唯一標(biāo)識及每個地圖塊壓縮后的長度與存儲位置的地址信息至地圖文件。
其中,將地圖塊采用Zlib壓縮算法進(jìn)行壓縮。
為實現(xiàn)上述發(fā)明目的,本發(fā)明還提供了一種游戲地圖的獲取方法,該方法具體為將游戲地圖分解為預(yù)設(shè)大小的地圖塊并給每個地圖塊分配一個唯一標(biāo)識;分別對地圖塊進(jìn)行壓縮并保存入地圖文件中,并保存被分解游戲地圖的標(biāo)識信息、每個地圖塊的唯一標(biāo)識及每個地圖塊壓縮后的長度與存儲位置的地址信息至地圖文件;
觸發(fā)讀取游戲地圖信息時,計算需要的地圖塊范圍,通過被分解游戲地圖的標(biāo)識信息找到地圖文件,并通過地圖塊的唯一標(biāo)識,查找計算范圍內(nèi)的地圖塊的存儲地址及長度,將獲取的壓縮地圖塊解壓縮并顯示。
其中,將地圖塊采用Zlib壓縮算法進(jìn)行壓縮與解壓縮。
為實現(xiàn)上述方法,本發(fā)明還提供了一種游戲地圖的存儲系統(tǒng),該系統(tǒng)包括分塊單元,編號單元、壓縮單元、存儲單元;分塊單元用于將游戲地圖分解成預(yù)置大小的地圖塊;編號單元用于對分塊單元分解出的地圖塊進(jìn)行編號;壓縮單元用于將分解單元分解出的地圖塊進(jìn)行數(shù)據(jù)壓縮;存儲單元用于存儲壓縮單元壓縮過的地圖塊數(shù)據(jù)、存儲游戲地圖的標(biāo)識、每個地圖塊的編號及每個地圖塊的存儲位置與大小信息。
為實現(xiàn)游戲地圖的獲取方法,本發(fā)明還提供了一種游戲地圖的獲取系統(tǒng),該系統(tǒng)包括捕捉單元、分塊單元,編號單元、壓縮/解壓縮單元、存儲單元、顯示單元、計算單元、獲取單元;分塊單元用于將游戲地圖分解成預(yù)置大小的地圖塊;編號單元用于對分塊單元分解出的地圖塊進(jìn)行編號;壓縮/解壓縮單元用于將地圖塊進(jìn)行數(shù)據(jù)壓縮與解壓縮;存儲單元用于存儲壓縮單元壓縮過的地圖塊數(shù)據(jù)、存儲游戲地圖的標(biāo)識、每個地圖塊的編號及每個地圖塊的存儲位置與大小信息;捕捉單元用于獲取玩家的當(dāng)前坐標(biāo)位置;計算單元用于根據(jù)獲取的玩家坐標(biāo)位置計算當(dāng)前玩家所在的地圖編號,及根據(jù)玩家的坐標(biāo)位置計算需要獲得的地圖塊編號;獲取單元用于根據(jù)計算單元計算出的地圖編號、玩家需要獲得的地圖塊編號來查找壓縮地圖塊的存儲地址及大小信息,并獲取壓縮地圖塊數(shù)據(jù);顯示單元用于將壓縮/解壓縮單元解壓過的地圖塊顯示給玩家綜上所述,本發(fā)明將游戲地圖分解成地圖塊,并給每個地圖塊編號后壓縮存儲,這樣能夠?qū)崿F(xiàn)游戲地圖的壓縮存儲;通過實際運用,通過此種方法能夠?qū)⒂螒虻貓D的存儲空間減少到原來的1/10左右。
并由于在存儲過程中記錄了每個地圖的編號與每個地圖塊的相關(guān)數(shù)據(jù),使得在需要讀取游戲地圖的時候能夠快速有效的尋找到需要的地圖數(shù)據(jù)并進(jìn)行繪制。
因此本發(fā)明能夠在不降低游戲地圖精度的情況下,減少游戲地圖的存儲空間,并使得讀取過程中快速而有效,能夠為玩家提供高質(zhì)量的視覺效果,提高了游戲的娛樂性。


圖1為本發(fā)明存儲過程流程圖;圖2為本發(fā)明地圖文件結(jié)構(gòu)圖;圖3為本發(fā)明地圖塊編號圖;圖4為本發(fā)明地圖塊編號圖;圖5為本發(fā)明存儲游戲地圖的系統(tǒng)圖;圖6為本發(fā)明獲取游戲地圖的流程圖;圖7為本發(fā)明獲取游戲地圖的系統(tǒng)圖。
具體實施例方式
本發(fā)明為游戲地圖的存儲方法及系統(tǒng)、游戲地圖的獲取方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進(jìn)一步詳細(xì)說明。
首先對地圖文件的存儲過程進(jìn)行說明。參見圖1,本發(fā)明是將游戲地圖分成塊,再將分成塊的地圖塊進(jìn)行壓縮。
步驟101將地圖劃分為預(yù)定大小的地圖塊,并給每個地圖塊進(jìn)行編號。
步驟102將分解的地圖塊進(jìn)行壓縮并存儲至地圖文件的數(shù)據(jù)塊部分。
地圖文件結(jié)構(gòu)如圖2所示,該地圖文件包括文件頭和壓縮后的數(shù)據(jù)塊。
文件頭又是一張記錄表,存儲當(dāng)前地圖的標(biāo)識信息和所用地圖塊的索引信息,例如地圖塊的編號、壓縮后的長度和地圖塊開始的位置,即地圖塊的存儲地址。
數(shù)據(jù)塊部分用來存儲壓縮后的地圖塊。
步驟103將地圖塊對應(yīng)的高度圖數(shù)據(jù),即將地圖塊的壓縮地址及地圖塊壓縮后的長度及原始地圖的標(biāo)識信息存儲入地圖文件。
下面通過一個具體的例子來進(jìn)行說明。
步驟201將一個編號為A1,大小為1024*1024米的地圖分解為64個16*16米的地圖塊,并給每個地圖塊依次編號。
如圖3,將A1地圖分解為64個16*16米的地圖塊,每個地圖的編號如表1所示為1-64。
編號也可以采用如圖4所示的用二維數(shù)組的方法,采用這種編號更加直觀清楚,地圖塊的位置及地圖塊之間的位置關(guān)系可以直接通過編號看出來。當(dāng)然還可以采用其他的編號方式,本說明書不對其進(jìn)行窮舉,也無法對其進(jìn)行窮舉,但是不管采用哪種編號方式都不影響本發(fā)明的實現(xiàn),因此本發(fā)明并不對地圖塊的編號方式進(jìn)行限定。
步驟202將64個16*16米的地圖塊分別用在zlib壓縮算法進(jìn)行壓縮,并將分別壓縮好的數(shù)據(jù)存儲進(jìn)地圖文件的數(shù)據(jù)塊部分。
在本實施例中使用的是zlib壓縮算法,因游戲地圖中地表信息的數(shù)據(jù)大部分是規(guī)則而有序的,剛好符合zlib算法的特點;所以采用zlib算法能夠最大程度的減少地圖文件的尺寸。當(dāng)然在壓縮過程中也可以采取其他壓縮算法,在此并不進(jìn)行限制。
步驟203將原始地圖的標(biāo)識信息存入地圖文件的文件頭;同時將每個地圖塊的標(biāo)識信息、存儲地址及壓縮后的數(shù)據(jù)長度存儲進(jìn)地圖文件大的文件頭部分。
地圖文件表頭部分依次存儲有被分解地圖的唯一標(biāo)識信息B001及每個地圖塊的信息。每個存儲地圖塊信息的表項里存儲有地圖塊的編號、地圖塊的存儲位置、地圖塊的數(shù)據(jù)長度。通過這些地圖塊的信息就能夠從地圖文件的數(shù)據(jù)塊部分快速的獲取地圖塊的數(shù)據(jù)。
在實施本發(fā)明的過程中可以發(fā)現(xiàn),通過此方法可以將一個1024*1024,大小為144兆的游戲地圖存儲成44兆大小的游戲地圖數(shù)據(jù)。我們可以從數(shù)據(jù)看出采用本發(fā)明的存儲方法將游戲地圖的存儲空間減少到原來的1/10左右。
為實現(xiàn)上述游戲地圖的存儲方法,本發(fā)明還提供了一種游戲地圖的存儲系統(tǒng),參見圖5,該系統(tǒng)包括分塊單元(11),編號單元(12)、壓縮單元(13)、存儲單元(14);分塊單元(11)用于將游戲地圖分解成預(yù)置大小的地圖塊;編號單元(12)用于對分塊單元分解出的地圖塊進(jìn)行編號;壓縮單元(13)用于將分解單元分解出的地圖塊進(jìn)行數(shù)據(jù)壓縮;存儲單元(14)用于存儲壓縮單元壓縮過的地圖塊數(shù)據(jù)、存儲游戲地圖的標(biāo)識、每個地圖塊的編號及每個地圖塊的存儲位置與大小信息。
以上都是在介紹游戲地圖的存儲方法,下面介紹當(dāng)需要讀取相關(guān)游戲地圖塊時的步驟,參見圖6步驟301根據(jù)當(dāng)前玩家的坐標(biāo)位置,計算出玩家當(dāng)前所在的地圖;步驟302根據(jù)當(dāng)前地圖編號,加載地圖對應(yīng)的地圖文件;步驟303根據(jù)玩家當(dāng)前的坐標(biāo)位置,計算出玩家當(dāng)前應(yīng)繪制的地圖塊范圍;步驟304通過計算出的地圖塊范圍獲得該范圍內(nèi)的每個地圖塊編號,通過每個地圖塊的編號到地圖文件中查找相關(guān)數(shù)據(jù),獲得地圖塊在數(shù)據(jù)塊中存儲的位置和長度。
步驟305取出計算范圍內(nèi)的地圖塊的數(shù)據(jù),解壓縮后進(jìn)行繪制。
參照上述方法,列舉一個具體的例子。例如步驟401某玩家當(dāng)前的坐標(biāo)位置為(15*40),通過計算得出玩家當(dāng)前所在的地圖為A1;步驟402根據(jù)當(dāng)前地圖編號A1,加載地圖對應(yīng)的地圖文件;步驟403根據(jù)玩家當(dāng)前的坐標(biāo)位置(15*40),通過計算得出該坐標(biāo)位置對應(yīng)于編號為10的地圖塊,假設(shè)可見場景對應(yīng)的是一個2*2個地圖塊組成的場景,則以該地圖塊為中心得到可見場景對應(yīng)的地圖塊分別為9、10、17、18;步驟404通過計算出的地圖塊編號,到地圖文件中查找相關(guān)數(shù)據(jù),獲得地圖塊在數(shù)據(jù)塊中存儲的位置和長度。
步驟405取出計算范圍內(nèi)的地圖塊的數(shù)據(jù),解壓縮后進(jìn)行繪制。
對應(yīng)于上述游戲地圖的獲取方法,本發(fā)明還提供了一種游戲地圖的獲取系統(tǒng),參見圖7,該系統(tǒng)包括捕捉單元(21)、分塊單元(22),編號單元(23)、壓縮/解壓縮單元(24)、存儲單元(25)、顯示單元(26)、計算單元(27)、獲取單元(28);分塊單元(22)用于將游戲地圖分解成預(yù)置大小的地圖塊;編號單元(23)用于對分塊單元分解出的地圖塊進(jìn)行編號;壓縮/解壓縮單元(24)用于將分解單元分解出的地圖塊進(jìn)行數(shù)據(jù)壓縮,或著將獲取單元獲取的壓縮地圖塊進(jìn)行解壓縮;存儲單元(25)用于存儲壓縮單元壓縮過的地圖塊數(shù)據(jù)、存儲游戲地圖的標(biāo)識、每個地圖塊的編號及每個地圖塊的存儲位置與大小信息;捕捉單元(21)用于獲取玩家的當(dāng)前坐標(biāo)位置;計算單元(27)用于根據(jù)獲取的玩家坐標(biāo)位置計算當(dāng)前玩家所在的地圖編號,及根據(jù)玩家的坐標(biāo)位置計算需要獲得的地圖塊編號;獲取單元(28)用于根據(jù)計算單元計算出的地圖編號、玩家需要獲得的地圖塊編號來查找壓縮地圖塊的存儲地址及大小信息,并獲取壓縮地圖塊數(shù)據(jù);顯示單元(26)用于將壓縮/解壓縮單元解壓過的地圖塊顯示給玩家。
以上對本發(fā)明所提供的基于即時通訊工具的媒體文件更新提示的方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種游戲地圖的存儲方法,其特征在于,該方法包括將游戲地圖分解為預(yù)設(shè)大小的地圖塊,并給每個地圖塊分配一個唯一標(biāo)識;分別對地圖塊進(jìn)行壓縮并保存入地圖文件中,并保存被分解游戲地圖的標(biāo)識信息、每個地圖塊的唯一標(biāo)識及每個地圖塊壓縮后的長度與存儲位置的地址信息至地圖文件。
2.根據(jù)權(quán)利要求1所述的游戲地圖的存儲方法,其特征在于,將地圖塊采用Zlib壓縮算法進(jìn)行壓縮。
3.一種游戲地圖的獲取方法,其特征在于,該方法包括將游戲地圖分解為預(yù)設(shè)大小的地圖塊并給每個地圖塊分配一個唯一標(biāo)識;分別對地圖塊進(jìn)行壓縮并保存入地圖文件中,并保存被分解游戲地圖的標(biāo)識信息、每個地圖塊的唯一標(biāo)識及每個地圖塊壓縮后的長度與存儲位置的地址信息至地圖文件;觸發(fā)讀取游戲地圖信息時,計算需要的地圖塊范圍,通過被分解游戲地圖的標(biāo)識信息找到地圖文件,并通過地圖塊的唯一標(biāo)識,查找計算范圍內(nèi)的地圖塊的存儲地址及長度,將獲取的壓縮地圖塊解壓縮并顯示。
4.根據(jù)權(quán)利要求3所述的游戲地圖的存儲方法,其特征在于,將地圖塊采用Zlib壓縮算法進(jìn)行壓縮與解壓縮。
5.一種游戲地圖的存儲系統(tǒng),其特征在于,該系統(tǒng)包括分塊單元,編號單元、壓縮單元、存儲單元;分塊單元用于將游戲地圖分解成預(yù)置大小的地圖塊;編號單元用于對分塊單元分解出的地圖塊進(jìn)行編號;壓縮單元用于將分解單元分解出的地圖塊進(jìn)行數(shù)據(jù)壓縮;存儲單元用于存儲壓縮單元壓縮過的地圖塊數(shù)據(jù)、存儲游戲地圖的標(biāo)識、每個地圖塊的編號及每個地圖塊的存儲位置與大小信息。
6.一種游戲地圖的獲取系統(tǒng),其特征在于,該系統(tǒng)包括捕捉單元、分塊單元,編號單元、壓縮/解壓縮單元、存儲單元、顯示單元、計算單元、獲取單元;分塊單元用于將游戲地圖分解成預(yù)置大小的地圖塊;編號單元用于對分塊單元分解出的地圖塊進(jìn)行編號;壓縮/解壓縮單元用于將地圖塊進(jìn)行數(shù)據(jù)壓縮與解壓縮;存儲單元用于存儲壓縮單元壓縮過的地圖塊數(shù)據(jù)、存儲游戲地圖的標(biāo)識、每個地圖塊的編號及每個地圖塊的存儲位置與大小信息;捕捉單元用于獲取玩家的當(dāng)前坐標(biāo)位置;計算單元用于根據(jù)獲取的玩家坐標(biāo)位置計算當(dāng)前玩家所在的地圖編號,及根據(jù)玩家的坐標(biāo)位置計算需要獲得的地圖塊編號;獲取單元用于根據(jù)計算單元計算出的地圖編號、玩家需要獲得的地圖塊編號來查找壓縮地圖塊的存儲地址及大小信息,并獲取壓縮地圖塊數(shù)據(jù);顯示單元用于將壓縮/解壓縮單元解壓過的地圖塊顯示給玩家。
全文摘要
本發(fā)明提供了游戲地圖的存儲、獲取方法,存儲、獲取方法為將游戲地圖分解為預(yù)設(shè)大小的地圖塊并給每個地圖塊分配一個唯一標(biāo)識;分別對地圖塊進(jìn)行壓縮并保存入地圖文件中,并保存被分解游戲地圖的標(biāo)識信息、每個地圖塊的唯一標(biāo)識及每個地圖塊壓縮后的長度與存儲位置的地址信息至地圖文件;觸發(fā)讀取游戲地圖信息時,計算的地圖塊范圍,通過被分解游戲地圖的標(biāo)識信息找到地圖文件,通過地圖塊的唯一標(biāo)識,查找計算地圖塊存儲地址及長度,將獲取的壓縮地圖塊解壓縮并顯示;本發(fā)明還提供了游戲地圖的存儲系統(tǒng)、一種游戲地圖的獲取系統(tǒng),該系統(tǒng)包括捕捉單元、分塊單元,編號單元、壓縮/解壓縮單元、存儲單元、顯示單元、計算單元、獲取單元。
文檔編號G06F19/00GK1949222SQ20061014412
公開日2007年4月18日 申請日期2006年11月27日 優(yōu)先權(quán)日2006年11月27日
發(fā)明者陳敏 申請人:北京金山軟件有限公司, 北京金山數(shù)字娛樂科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乐清市| 台安县| 霍山县| 民权县| 宁晋县| 子洲县| 塔城市| 房山区| 武平县| 甘孜| 咸阳市| 东莞市| 日喀则市| 岱山县| 响水县| 嘉禾县| 勐海县| 高雄县| 桦川县| 湖南省| 科尔| 冀州市| 金寨县| 盐城市| 略阳县| 应用必备| 松原市| 新绛县| 卢龙县| 眉山市| 海兴县| 滦南县| 敦煌市| 五家渠市| 滦平县| 北安市| 镇原县| 崇阳县| 馆陶县| 马公市| 陆川县|