CN100595758C - 游戏地图的存储方法及系统、游戏地图的获取方法及系统 - Google Patents
游戏地图的存储方法及系统、游戏地图的获取方法及系统 Download PDFInfo
- Publication number
- CN100595758C CN100595758C CN200610144124A CN200610144124A CN100595758C CN 100595758 C CN100595758 C CN 100595758C CN 200610144124 A CN200610144124 A CN 200610144124A CN 200610144124 A CN200610144124 A CN 200610144124A CN 100595758 C CN100595758 C CN 100595758C
- Authority
- CN
- China
- Prior art keywords
- map
- block
- unit
- compression
- map block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Instructional Devices (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了游戏地图的存储、获取方法,存储、获取方法为:将游戏地图分解为预设大小的地图块并给每个地图块分配一个唯一标识;分别对地图块进行压缩并保存入地图文件中,并保存被分解游戏地图的标识信息、每个地图块的唯一标识及每个地图块压缩后的长度与存储位置的地址信息至地图文件;触发读取游戏地图信息时,计算的地图块范围,通过被分解游戏地图的标识信息找到地图文件,通过地图块的唯一标识,查找计算地图块存储地址及长度,将获取的压缩地图块解压缩并显示;本发明还提供了游戏地图的存储系统、一种游戏地图的获取系统,该系统包括:捕捉单元、分块单元,编号单元、压缩/解压缩单元、存储单元、显示单元、计算单元、获取单元。
Description
技术领域
本发明涉及画面显示技术,尤其涉及游戏地图的存储方法及系统、游戏地图的显示方法及系统。
背景技术
游戏地图,也称为游戏的场景,是使玩家能融入游戏的重要要素。尤其3D室外游戏地图的特点是视野开阔。为了充分突出这个特点,目前3D游戏都采用高度图的方式来制作地表。为了给适应游戏玩家越来越高的要求,室外游戏地图的面积也越来越大,那么随之而来的就是高度图的尺寸也快速增大了。将高度图存储成地图文件以后,导致了地图文件过于庞大,占用了过多的存储空间。
上面所述的高度图实际上就是指一个用于存储地形信息的二维数组。地形信息实际上是指一系列高度不同的网格,这样数组中的每个元素的下标刚好可以用来定位不同的网格(X,Y),数组中每个元素所存储的值就是网格的高度(Z)。
例如用二维数组A(a[0][0];a[0][1];a[1][0];a[1][1])来定位不同的网格:用a[0][0]定位网格(X0,Y0);a[0][1]定位网格(X0,Y1);a[1][0]定位网格(X1,Y0);a[1][1]定位网格(X1,Y1)。a[0][0]的用来存储网格(X0,Y0)的高度值(Z1);a[0][1]用来存储网格(X0,Y1)的高度值(Z2);a[1][0]用来存储网格(X1,Y0)的高度值(Z3);a[1][1]用来存储网格(X1,Y1)的高度值(Z4)。
在存储3D室外游戏地图的时候,游戏地图所使用的高度图决定了场景的大小,因此也决定了存储空间的大小。假设要表达一张大小是1024*1024米的地图,那么高度图的大小是1024*1024米,若使用浮点数存储高度图的话,1个浮点数等于4个字节,那么存储的文件大小是4*1024*1024=4(兆)。可以看出若使用这种存储方法,一个游戏地图将占用大量的存储空间。
为了解决这个问题,目前使用的方法是减小存储高度图的高度值的精确度,不使用浮点型,而使用1字节存储高度值。例如,将地形中的最低点用0表示,而最高点用255表示,然后再将形成的高度图进行压缩。
采用降低高度值精度的方法虽然能够在一定程度上降低了存储游戏地图时的存储空间,但是降低高度值精度也就降低了游戏地图中的地表精度,这样会降低游戏的视觉效果,使得游戏玩家感受不到3D游戏带来的视觉冲击,降低了游戏的娱乐性。
综上所述,现有技术虽然能够解决游戏地图占用存储空间较大的问题,但是在用户体验和交互上都不理想。
发明内容
本发明要解决的问题是提供游戏地图的存储方法及系统、游戏地图的获取方法及系统,在不需要降低游戏地图显示精度的情况下降低占用的存储空间,并便于游戏地图的存储与读取。
为实现上述发明目的,本发明是通过一下技术方案实现的:
将游戏地图分解为预设大小的地图块,并给每个地图块分配一个唯一标识;分别对地图块进行压缩并保存入地图文件的数据块部分,并保存被分解游戏地图的标识信息、每个地图块的唯一标识及每个地图块压缩后的长度与存储位置的地址信息至地图文件的文件头部分。
其中,将地图块采用Zlib压缩算法进行压缩。
为实现上述发明目的,本发明还提供了一种游戏地图的获取方法,该方法具体为:
将游戏地图分解为预设大小的地图块并给每个地图块分配一个唯一标识;分别对地图块进行压缩并保存入地图文件的数据块部分,并保存被分解游戏地图的标识信息、每个地图块的唯一标识及每个地图块压缩后的长度与存储位置的地址信息至地图文件的文件头部分;
触发读取游戏地图信息时,计算需要的地图块范围,通过被分解游戏地图的标识信息找到地图文件,并通过地图块的唯一标识,查找计算范围内的地图块的存储地址及长度,将获取的压缩地图块解压缩并显示。
其中,将地图块采用Zlib压缩算法进行压缩与解压缩。
为实现上述方法,本发明还提供了一种游戏地图的存储系统,该系统包括:分块单元,编号单元、压缩单元、存储单元;
分块单元用于将游戏地图分解成预置大小的地图块;
编号单元用于对分块单元分解出的地图块进行编号;
压缩单元用于将分解单元分解出的地图块进行数据压缩;
存储单元用于在地图文件的数据块部分存储压缩单元压缩过的地图块数据,在地图文件的文件头部分存储游戏地图的标识、每个地图块的编号及每个地图块的存储位置与大小信息。
为实现游戏地图的获取方法,本发明还提供了一种游戏地图的获取系统,该系统包括:捕捉单元、分块单元,编号单元、压缩/解压缩单元、存储单元、显示单元、计算单元、获取单元;
分块单元用于将游戏地图分解成预置大小的地图块;
编号单元用于对分块单元分解出的地图块进行编号;
压缩/解压缩单元用于将地图块进行数据压缩与解压缩;
存储单元用于在地图文件的数据块部分存储压缩单元压缩过的地图块数据,在地图文件的文件头部分存储游戏地图的标识、每个地图块的编号及每个地图块的存储位置与大小信息;
捕捉单元用于获取玩家的当前坐标位置;
计算单元用于根据获取的玩家坐标位置计算当前玩家所在的地图编号,及根据玩家的坐标位置计算需要获得的地图块编号;
获取单元用于根据计算单元计算出的地图编号、玩家需要获得的地图块编号来查找压缩地图块的存储地址及大小信息,并获取压缩地图块数据;
显示单元用于将压缩/解压缩单元解压过的地图块显示给玩家。
综上所述,本发明将游戏地图分解成地图块,并给每个地图块编号后压缩存储,这样能够实现游戏地图的压缩存储;通过实际运用,通过此种方法能够将游戏地图的存储空间减少到原来的1/10左右。
并由于在存储过程中记录了每个地图的编号与每个地图块的相关数据,使得在需要读取游戏地图的时候能够快速有效的寻找到需要的地图数据并进行绘制。
因此本发明能够在不降低游戏地图精度的情况下,减少游戏地图的存储空间,并使得读取过程中快速而有效,能够为玩家提供高质量的视觉效果,提高了游戏的娱乐性。
附图说明
图1为本发明存储过程流程图;
图2为本发明地图文件结构图;
图3为本发明地图块编号图;
图4为本发明地图块编号图;
图5为本发明存储游戏地图的系统图;
图6为本发明获取游戏地图的流程图;
图7为本发明获取游戏地图的系统图。
具体实施方式
本发明为游戏地图的存储方法及系统、游戏地图的获取方法及系统,为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
首先对地图文件的存储过程进行说明。参见图1,本发明是将游戏地图分成块,再将分成块的地图块进行压缩。
步骤101:将地图划分为预定大小的地图块,并给每个地图块进行编号。
步骤102:将分解的地图块进行压缩并存储至地图文件的数据块部分。
地图文件结构如图2所示,该地图文件包括文件头和压缩后的数据块。
文件头又是一张记录表,存储当前地图的标识信息和所用地图块的索引信息,例如地图块的编号、压缩后的长度和地图块开始的位置,即地图块的存储地址。
数据块部分用来存储压缩后的地图块。
步骤103:将地图块对应的高度图数据,即将地图块的压缩地址及地图块压缩后的长度及原始地图的标识信息存储入地图文件。
下面通过一个具体的例子来进行说明。
步骤201:将一个编号为A1,大小为1024*1024米的地图分解为64个16*16米的地图块,并给每个地图块依次编号。
如图3,将A1地图分解为64个16*16米的地图块,每个地图的编号如表1所示为1-64。
编号也可以采用如图4所示的用二维数组的方法,采用这种编号更加直观清楚,地图块的位置及地图块之间的位置关系可以直接通过编号看出来。当然还可以采用其他的编号方式,本说明书不对其进行穷举,也无法对其进行穷举,但是不管采用哪种编号方式都不影响本发明的实现,因此本发明并不对地图块的编号方式进行限定。
步骤202:将64个16*16米的地图块分别用在zlib压缩算法进行压缩,并将分别压缩好的数据存储进地图文件的数据块部分。
在本实施例中使用的是zlib压缩算法,因游戏地图中地表信息的数据大部分是规则而有序的,刚好符合zlib算法的特点;所以采用zlib算法能够最大程度的减少地图文件的尺寸。当然在压缩过程中也可以采取其他压缩算法,在此并不进行限制。
步骤203:将原始地图的标识信息存入地图文件的文件头;同时将每个地图块的标识信息、存储地址及压缩后的数据长度存储进地图文件大的文件头部分。
地图文件表头部分依次存储有被分解地图的唯一标识信息B001及每个地图块的信息。每个存储地图块信息的表项里存储有地图块的编号、地图块的存储位置、地图块的数据长度。通过这些地图块的信息就能够从地图文件的数据块部分快速的获取地图块的数据。
在实施本发明的过程中可以发现,通过此方法可以将一个1024*1024,大小为144兆的游戏地图存储成44兆大小的游戏地图数据。我们可以从数据看出采用本发明的存储方法将游戏地图的存储空间减少到原来的1/10左右。
为实现上述游戏地图的存储方法,本发明还提供了一种游戏地图的存储系统,参见图5,该系统包括:分块单元(11),编号单元(12)、压缩单元(13)、存储单元(14);
分块单元(11)用于将游戏地图分解成预置大小的地图块;
编号单元(12)用于对分块单元分解出的地图块进行编号;
压缩单元(13)用于将分解单元分解出的地图块进行数据压缩;
存储单元(14)用于存储压缩单元压缩过的地图块数据、存储游戏地图的标识、每个地图块的编号及每个地图块的存储位置与大小信息。
以上都是在介绍游戏地图的存储方法,下面介绍当需要读取相关游戏地图块时的步骤,参见图6:
步骤301:根据当前玩家的坐标位置,计算出玩家当前所在的地图;
步骤302:根据当前地图编号,加载地图对应的地图文件;
步骤303:根据玩家当前的坐标位置,计算出玩家当前应绘制的地图块范围;
步骤304:通过计算出的地图块范围获得该范围内的每个地图块编号,通过每个地图块的编号到地图文件中查找相关数据,获得地图块在数据块中存储的位置和长度。
步骤305:取出计算范围内的地图块的数据,解压缩后进行绘制。
参照上述方法,列举一个具体的例子。例如:
步骤401:某玩家当前的坐标位置为(15*40),通过计算得出玩家当前所在的地图为A1;
步骤402:根据当前地图编号A1,加载地图对应的地图文件;
步骤403:根据玩家当前的坐标位置(15*40),通过计算得出该坐标位置对应于编号为10的地图块,假设可见场景对应的是一个2*2个地图块组成的场景,则以该地图块为中心得到可见场景对应的地图块分别为9、10、17、18;
步骤404:通过计算出的地图块编号,到地图文件中查找相关数据,获得地图块在数据块中存储的位置和长度。
步骤405:取出计算范围内的地图块的数据,解压缩后进行绘制。
对应于上述游戏地图的获取方法,本发明还提供了一种游戏地图的获取系统,参见图7,该系统包括:捕捉单元(21)、分块单元(22),编号单元(23)、压缩/解压缩单元(24)、存储单元(25)、显示单元(26)、计算单元(27)、获取单元(28);
分块单元(22)用于将游戏地图分解成预置大小的地图块;
编号单元(23)用于对分块单元分解出的地图块进行编号;
压缩/解压缩单元(24)用于将分解单元分解出的地图块进行数据压缩,或着将获取单元获取的压缩地图块进行解压缩;
存储单元(25)用于存储压缩单元压缩过的地图块数据、存储游戏地图的标识、每个地图块的编号及每个地图块的存储位置与大小信息;
捕捉单元(21)用于获取玩家的当前坐标位置;
计算单元(27)用于根据获取的玩家坐标位置计算当前玩家所在的地图编号,及根据玩家的坐标位置计算需要获得的地图块编号;
获取单元(28)用于根据计算单元计算出的地图编号,玩家需要获得的地图块编号来查找压缩地图块的存储地址及大小信息,并获取压缩地图块数据;
显示单元(26)用于将压缩/解压缩单元解压过的地图块显示给玩家。
以上对本发明所提供的基于即时通讯工具的媒体文件更新提示的方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1、一种游戏地图的存储方法,其特征在于,该方法包括:
将游戏地图分解为预设大小的地图块,并给每个地图块分配一个唯一标识;分别对地图块进行压缩并保存入地图文件的数据块部分,并保存被分解游戏地图的标识信息、每个地图块的唯一标识及每个地图块压缩后的长度与存储位置的地址信息至地图文件的文件头部分。
2、根据权利要求1所述的游戏地图的存储方法,其特征在于,将地图块采用Zlib压缩算法进行压缩。
3、一种游戏地图的获取方法,其特征在于,该方法包括:
将游戏地图分解为预设大小的地图块并给每个地图块分配一个唯一标识;分别对地图块进行压缩并保存入地图文件的数据块部分,并保存被分解游戏地图的标识信息、每个地图块的唯一标识及每个地图块压缩后的长度与存储位置的地址信息至地图文件的文件头部分;
触发读取游戏地图信息时,计算需要的地图块范围,通过被分解游戏地图的标识信息找到地图文件,并通过地图块的唯一标识,查找计算范围内的地图块的存储地址及长度,将获取的压缩地图块解压缩并显示。
4、根据权利要求3所述的游戏地图的获取方法,其特征在于,将地图块采用Zlib压缩算法进行压缩与解压缩。
5、一种游戏地图的存储系统,其特征在于,该系统包括:分块单元,编号单元、压缩单元、存储单元;
分块单元用于将游戏地图分解成预置大小的地图块;
编号单元用于对分块单元分解出的地图块进行编号;
压缩单元用于将分解单元分解出的地图块进行数据压缩;
存储单元用于在地图文件的数据块部分存储压缩单元压缩过的地图块数据,在地图文件的文件头部分存储游戏地图的标识、每个地图块的编号及每个地图块的存储位置与大小信息。
6、一种游戏地图的获取系统,其特征在于,该系统包括:捕捉单元、分块单元,编号单元、压缩/解压缩单元、存储单元、显示单元、计算单元、获取单元;
分块单元用于将游戏地图分解成预置大小的地图块;
编号单元用于对分块单元分解出的地图块进行编号;
压缩/解压缩单元用于将地图块进行数据压缩与解压缩;
存储单元用于在地图文件的数据块部分存储压缩单元压缩过的地图块数据,在地图文件的文件头部分存储游戏地图的标识、每个地图块的编号及每个地图块的存储位置与大小信息;
捕捉单元用于获取玩家的当前坐标位置;
计算单元用于根据获取的玩家坐标位置计算当前玩家所在的地图编号,及根据玩家的坐标位置计算需要获得的地图块编号;
获取单元用于根据计算单元计算出的地图编号、玩家需要获得的地图块编号来查找压缩地图块的存储地址及大小信息,并获取压缩地图块数据;
显示单元用于将压缩/解压缩单元解压过的地图块显示给玩家。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610144124A CN100595758C (zh) | 2006-11-27 | 2006-11-27 | 游戏地图的存储方法及系统、游戏地图的获取方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610144124A CN100595758C (zh) | 2006-11-27 | 2006-11-27 | 游戏地图的存储方法及系统、游戏地图的获取方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1949222A CN1949222A (zh) | 2007-04-18 |
CN100595758C true CN100595758C (zh) | 2010-03-24 |
Family
ID=38018737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610144124A Expired - Fee Related CN100595758C (zh) | 2006-11-27 | 2006-11-27 | 游戏地图的存储方法及系统、游戏地图的获取方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100595758C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056252B (zh) * | 2007-06-07 | 2010-04-21 | 中兴通讯股份有限公司 | 压缩文件的传播方法 |
KR20110093258A (ko) * | 2010-02-12 | 2011-08-18 | 삼성전자주식회사 | 맵 데이터 송수신 장치 및 방법 |
CN102567377B (zh) * | 2010-12-27 | 2015-07-15 | 上海博泰悦臻电子设备制造有限公司 | 电子地图数据管理系统及方法 |
US9805046B2 (en) | 2013-03-14 | 2017-10-31 | International Business Machines Corporation | Data compression using compression blocks and partitions |
CN106600708B (zh) * | 2016-12-15 | 2019-01-08 | 北京金山软件有限公司 | 一种游戏地图的处理方法及系统 |
CN108671541B (zh) * | 2018-04-27 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种数据存储方法和装置以及存储介质 |
CN109671162A (zh) * | 2018-12-12 | 2019-04-23 | 北京像素软件科技股份有限公司 | 地形编辑方法及装置 |
CN110442393B (zh) * | 2019-07-17 | 2023-04-07 | 高新兴科技集团股份有限公司 | 地图动态加载方法、计算机存储介质及电子设备 |
CN110559665A (zh) * | 2019-09-29 | 2019-12-13 | 珠海文景科技有限公司 | 一种游戏地图的处理方法、装置、终端设备及存储介质 |
CN111552519B (zh) * | 2020-04-03 | 2022-12-20 | 上海高仙自动化科技发展有限公司 | 加载方法、加载装置、电子设备和计算机可读存储介质 |
CN111617469B (zh) * | 2020-06-04 | 2023-09-26 | 广州西山居网络科技有限公司 | 一种游戏数据处理方法以及装置 |
CN111957051A (zh) * | 2020-09-01 | 2020-11-20 | 网易(杭州)网络有限公司 | 资源存储方法及装置 |
CN112402978A (zh) * | 2020-11-13 | 2021-02-26 | 上海幻电信息科技有限公司 | 地图生成方法及装置 |
CN112245916B (zh) * | 2020-11-20 | 2024-03-22 | 北京冰封互娱科技有限公司 | 游戏中镜像岛地图的生成方法、装置、设备及存储介质 |
CN112619153A (zh) * | 2020-12-25 | 2021-04-09 | 北京冰封互娱科技有限公司 | 一种游戏副本创建方法、装置、存储介质及计算设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4972319A (en) * | 1987-09-25 | 1990-11-20 | Delorme David M | Electronic global map generating system |
-
2006
- 2006-11-27 CN CN200610144124A patent/CN100595758C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4972319A (en) * | 1987-09-25 | 1990-11-20 | Delorme David M | Electronic global map generating system |
Also Published As
Publication number | Publication date |
---|---|
CN1949222A (zh) | 2007-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100595758C (zh) | 游戏地图的存储方法及系统、游戏地图的获取方法及系统 | |
CN106600708B (zh) | 一种游戏地图的处理方法及系统 | |
CN101154291B (zh) | 图像数据压缩方法、图像显示方法及其相应装置 | |
US20150154796A1 (en) | Accelerated three-dimensional intersection testing using compressed volumes | |
CN103412962A (zh) | 一种海量瓦片数据的存储方法及读取方法 | |
CN103229180B (zh) | 利用优化的地球模型表示提高计算效率的系统和方法 | |
CN102750294B (zh) | 一种地形影像数据的生成方法、生成装置及生成系统 | |
CN101364310A (zh) | 一种三维模型图形的生成方法和装置 | |
CN103257876B (zh) | C3游戏地图动态加载的方法 | |
CN104217023A (zh) | 一种利用打包技术解决地图瓦片存储的方法 | |
CN110990612A (zh) | 一种矢量大数据快速显示的方法及终端 | |
Han et al. | Development of a hashing-based data structure for the fast retrieval of 3D terrestrial laser scanned data | |
CN103678682B (zh) | 基于抽象模板的海量栅格数据处理及管理方法 | |
CN102103600B (zh) | 地图建立方法及地图系统 | |
CN114092651A (zh) | 用于应急管理的智能建模系统及方法 | |
CN103093413B (zh) | 一种遥感影像数据写入及读取的方法和装置 | |
CN112687007A (zh) | 一种基于lod技术的立体网格图生成方法 | |
CN105512312A (zh) | 一种二维地图库加速的方法 | |
CN103136782A (zh) | 一种三维模型地图动态渲染方法及装置 | |
CN111353007A (zh) | 基于矢量切片的地理要素拾取方法、编码方法、装置及电子设备 | |
CN104778212A (zh) | 地图数据生成方法和装置、地图数据读取方法和装置 | |
CN107992555B (zh) | 一种栅格数据的存储及读取方法 | |
CN109947884B (zh) | 一种全球ICESat/GLAS点云的高效组织查询方法 | |
US6567082B1 (en) | Incremental resolution changes in multi-resolution meshes with update records | |
CN102202230B (zh) | 一种数字电视接收终端数据共享的方法、装置以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100324 Termination date: 20141127 |
|
EXPY | Termination of patent right or utility model |