CN107943424A - 一种网络游戏中方块地形信息的压缩方法 - Google Patents
一种网络游戏中方块地形信息的压缩方法 Download PDFInfo
- Publication number
- CN107943424A CN107943424A CN201711365966.5A CN201711365966A CN107943424A CN 107943424 A CN107943424 A CN 107943424A CN 201711365966 A CN201711365966 A CN 201711365966A CN 107943424 A CN107943424 A CN 107943424A
- Authority
- CN
- China
- Prior art keywords
- square
- data
- compressed
- iterations
- terrain information
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种网络游戏中方块地形信息的压缩方法,包括以下步骤:(1)设置压缩缓存区域;(2)依次从地形信息中取出方块数据的编号;(3)统计连续的方块编号为相同方块数据的方块重复数量;(4)将方块重复数量和与其对应的方块数据合并为压缩数据;(5)将压缩数据储存在压缩缓冲区域中;(6)重复步骤(3)至(5),将压缩缓存区域中的所有压缩数据存储为压缩文件。本发明的网络游戏中方块地形信息的压缩方法,具有很高的压缩率和压缩效率,可以满足实时压缩和解压缩大量数据。
Description
技术领域
本发明涉及网络游戏技术领域,特别是涉及一种网络游戏中方块地形信息的压缩方法。
背景技术
方块地形是游戏中地形全部由不同的方块(土,沙子,岩石,矿物等)组成,这些方块可以任意破坏和挖掘和替换。此类游戏中地形是由大量数据构成,以世界高度256米为例,场景中每平方米的数据信息最少需要256字节存储。一个边长为8千米的场景,地形信息量将达到至少16GB。这些海量数据需要存储和同步给客户端时必须要使用一种高压缩比,高效率的压缩和解压方式。
方块游戏中一般会将世界分为不同的地块,每个地块我们称为一个Chunk。每个Chunk为边长16米,高度为256米的一个长方体范围。地形存储的最小单位为一个Chunk。
每个Chunk内存大小为64K,这些Chunk存储必须使用快速的压缩方式。当前游戏中大批量数据常用zlib作为压缩的方式,而zlib压缩速度比较慢,不适合实时动态的压缩和解压缩。无法满足方块游戏中大量Chunk的压缩和解压缩任务。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种网络游戏中方块地形信息的压缩方法,具有很高的压缩率和压缩效率,可以满足实时压缩和解压缩大量数据。
为实现上述目的,本发明提供的网络游戏中方块地形信息的压缩方法,包括以下步骤:
(1)设置压缩缓存区域;
(2)依次从地形信息中取出方块数据的编号;
(3)统计连续的方块编号为相同方块数据的方块重复数量;
(4)将方块重复数量和与其对应的方块数据合并为压缩数据;
(5)将压缩数据储存在压缩缓冲区域中;
(6)重复步骤(3)至(5),将压缩缓存区域中的所有压缩数据存储为压缩文件。
进一步地,所述步骤(3),进一步包括:
取出一个方块数据,并进行保存;
设置保存当前方块重复数量的变量;
依次取出下一个方块数据,并与所保存的方块数据进行比对,如果数据相同,则将所定义的变量加1。
进一步地,所述步骤(3),进一步包括:如果所保存的方块数据与取出的方块数据不相同,将所取出的方块数据进行保存,并重新设置保存当前方块重复数量的变量。
进一步地,所述步骤(4),进一步包括:将方块重复数量设为压缩数据的前半段,与方块重复数量对应的方块信息数据设为压缩数据的后半段。
更近一步地,所述数据为二进制字节。
本发明还提供的网络游戏中方块地形信息的解压方法,包括以下步骤:
(a)设置解压缓存区域;
(b)从压缩文件中依次取出压缩的数据;
(c)将压缩数据拆分为方块重复数量和与其对应的方块数据;
(d)根据方块重复数量重复方块数据,并合并为解压数据;
(e)将解压数据保存在解压缓冲区域中;
(f)重复步骤(c)至(e),将解压缓存区域中的所有解压数据存储为地形信息。
本发明的网络游戏中方块地形信息的压缩方法,通过将连续的重复的方块地形信息进行压缩,进而对地图信息就行压缩。
本发明根据地形复杂性,极好情况下每个Chunk可以压缩为4个字节,且极坏情况下压缩后大小也不会比原始数据更大。针对方块地形数据压,平均缩率可以达到1/64。本发明压缩效率能达到约1GB/s,解压缩效率约3GB/s。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的网络游戏中方块地形信息的压缩方法的流程图;
图2为根据本发明的网络游戏中方块地形信息的解压方法的流程图;
图3为根据本发明的网络游戏中方块地形信息的压缩方法的字节的示意图;
图4为图3的字节为方块编号的示意图;
图5为图3的字节为方块重复数量的示意图;
图6为连续有8个方块编号为1的示意图;
图7为连续数量超过127个时压缩信息的示意图;
图8为图7中字节为方块重复的数量的示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为根据本发明的网络游戏中方块地形信息的压缩方法的流程图,下面将参考图1,对本发明的网络游戏中方块地形信息的压缩方法进行详细描述。
首先,在步骤S101,准备一块足够长的缓存区域记为TargetMemory,存储区域的有效压缩数据内容长度记为CompressdSize,其值默认为0。方块(Chunk)的内存记为SrcMemory,方块内存的长度记为Length,其值为65536。
游戏场景中每个Chunk的方块数据在内存中都是一组连续存放的方块类型集合,集合大小固定为65536(64K)。将方块编号范围定义为0-127,如图3所示,每个方块占用单个字节的低7位(BIT),字节的最高位是标记位(FLAG)。标记位为0表示该字节的低7位内容是方块的编号(如图4所示,其十进制数值为1,表示编号为1的方块);标记位为1表示该字节的低7位内容是重复方块连续的数量(如图5所示,其十进制数值为4,表示后续4个方块都是同样的编号)。
在步骤S102,设置保存当前方块类型设的变量BLOCK,其默认为NULL;设置保存当前方块重复数量的变量Amount,其初始值为0。
在步骤S103,依次取出SrcMemory中每个方块编号,分别将其下标记为N,将方块编号记为TempBlock;判断N是否小于65536;如果是,则进行步骤S104,否则进行步骤S112。
在步骤S104,判断BLOCK是否为NULL;如果是,则进行步骤S105,否则进行步骤S106。
在步骤S105,设置BLOCK为TempBlock,Amount为1;之后,返回至步骤S103。
在步骤S106,判断BLOCK是否与TempBlock相同;如果是,则进行步骤S107,否则进行步骤S108。
在步骤S107,将方块重复数量Amount加1;之后,返回至步骤S103。
在步骤S108,判断Amount的值;如果Amount为1,则进行步骤S109;如果Amount为2-127,则进行步骤S110;如果Amount大于127,则进行步骤S111。
在步骤S109,将TargetMemory中第CompressdSize个字节记为B,设置B的标记为为0,低7位内容为BLOCK;将CompressdSize增加1,BLOCK设置为NULL,Amount设置为0;之后,返回至步骤S103。
在步骤S110,将TargetMemory中第CompressdSize个字节记为A,第CompressdSize+1个字节记为B;设置A字节标记为1,设置B字节标记为0。设置A的低7位内容为Amount,设置B的低7位内容为BLOCK;将CompressdSize增加2,BLOCK设置为NULL,Amount设置为0;之后,返回至步骤S103。
在步骤S111,将TargetMemory中第CompressdSize个字节记为A0,第CompressdSize+1个字节记为A1,第CompressdSize+2个字节记为B;设置A0、A1字节标记为1,设置B字节标记为0,设置A0的低7位内容为Amount的7-13位内容,设置A1低7位的内容为Amount的0-6位的内容,设置B的低7位内容为BLOCK;将CompressdSize增加3,BLOCK设置为NULL,Amount设置为0;之后,返回至步骤S103。
如果重复方块的连续数量超过127个,则使用连续两个字节表示方块重复的数量。如图7所示,前两个字节均表示方块重复数量,计算时将第一个字节的低7位(右移7个BIT)和第二个字节的低7位合并为一个整数的低14位(如图8所示,其10进制为513),表示方块真正重复的数量。第三个字节标记位为0,表示该字节的低7位内容是方块的编号。这三个字节表示的含义即为:后续连续513个方块类型编号都是1。
在步骤S112,判断BLOCK是否为NULL;如果是,则进行步骤S113,否则进行步骤S106。
在步骤S113,压缩结束,将压缩的数据进行存储。
图2为根据本发明的网络游戏中方块地形信息的解压方法的流程图,下面将参考图2,对根据上述方法压缩的数据进行解压的方法进行详细描述。
在步骤S201,将待解压的内存记为SrcM,其长度记为SrcLen;解压后数据缓存记为DstM,其长度固定为65536字节;DstM中当前内存索引记为Index,其值为0;设置保存当前连续方块长度的变量,记为Length,其初始值为0。
在步骤S202,扫描SrcM,依次查询每个字节,记为Byte,下标记为N;判断N是否小于SrcLen;如果是,则进行步骤S203,否则进行步骤S208。
在步骤S203,判断Byte的标记位是否为0;如果是,则进行步骤S204,否则进行步骤S207。
在步骤S204,判断Length是否为0;如果是,则进行步骤S205,否则进行步骤S206。
在步骤S205,将DstM中第Index个字节记为B,将其值设置为Byte的低7位内容;Index增加1;之后,返回至步骤S202。
在步骤S206,将DstM中第Index个字节开始的连续Length个字节设置为Byte的低7位内容;Index增加Length,然后将Length设置为0;之后,返回至步骤S202。
在步骤S207,将Length值左移7位,然后合并Byte的低7位内容;Index增加1;之后,返回至步骤S202。
在步骤S208,判断Index是否等于65536;如果是,则解压成功,否则数据格式不正确,解压失败。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,以及在方块编号范围上的变化扩展(单字节变为多字节表示方块编号等)。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种网络游戏中方块地形信息的压缩方法,包括以下步骤:
(1)设置压缩缓存区域;
(2)依次从地形信息中取出方块数据的编号;
(3)统计连续的方块编号为相同方块数据的方块重复数量;
(4)将方块重复数量和与其对应的方块数据合并为压缩数据;
(5)将压缩数据储存在压缩缓冲区域中;
(6)重复步骤(3)至(5),将压缩缓存区域中的所有压缩数据存储为压缩文件。
2.根据权利要求1所述的网络游戏中方块地形信息的压缩方法,其特征在于,所述步骤(3),进一步包括:
取出一个方块数据,并进行保存;
设置保存当前方块重复数量的变量;
依次取出下一个方块数据,并与所保存的方块数据进行比对,如果数据相同,则将所定义的变量加1。
3.根据权利要求2所述的网络游戏中方块地形信息的压缩方法,其特征在于,所述步骤(3),进一步包括:如果所保存的方块数据与取出的方块数据不相同,将所取出的方块数据进行保存,并重新设置保存当前方块重复数量的变量。
4.根据权利要求1所述的网络游戏中方块地形信息的压缩方法,其特征在于,所述步骤(4),进一步包括:将方块重复数量设为压缩数据的前半段,与方块重复数量对应的方块信息数据设为压缩数据的后半段。
5.根据权利要求1所述的网络游戏中方块地形信息的压缩方法,其特征在于,所述数据为二进制字节。
6.一种根据权利要求1-5所述的方法的压缩文件的解压方法,包括以下步骤:
(a)设置解压缓存区域;
(b)从压缩文件中依次取出压缩的数据;
(c)将压缩数据拆分为方块重复数量和与其对应的方块数据;
(d)根据方块重复数量重复方块数据,并合并为解压数据;
(e)将解压数据保存在解压缓冲区域中;
(f)重复步骤(c)至(e),将解压缓存区域中的所有解压数据存储为地形信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711365966.5A CN107943424A (zh) | 2017-12-18 | 2017-12-18 | 一种网络游戏中方块地形信息的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711365966.5A CN107943424A (zh) | 2017-12-18 | 2017-12-18 | 一种网络游戏中方块地形信息的压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107943424A true CN107943424A (zh) | 2018-04-20 |
Family
ID=61943720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711365966.5A Pending CN107943424A (zh) | 2017-12-18 | 2017-12-18 | 一种网络游戏中方块地形信息的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943424A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109151002A (zh) * | 2018-08-02 | 2019-01-04 | 苏州蜗牛数字科技股份有限公司 | 方块地形差异信息同步方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1756353A (zh) * | 2004-09-29 | 2006-04-05 | 腾讯科技(深圳)有限公司 | 一种视频数据压缩的量化方法 |
CN101241508A (zh) * | 2007-08-01 | 2008-08-13 | 金立 | 结构化数据序列的压缩方法 |
US20100017424A1 (en) * | 2008-07-21 | 2010-01-21 | Sony Computer Entertainment Europe Ltd. | Data compression and decompression |
CN103258030A (zh) * | 2013-05-09 | 2013-08-21 | 西安电子科技大学 | 基于字典与游长编码的移动设备内存压缩方法 |
CN104380267A (zh) * | 2012-05-25 | 2015-02-25 | 歌乐株式会社 | 数据解压/压缩装置 |
-
2017
- 2017-12-18 CN CN201711365966.5A patent/CN107943424A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1756353A (zh) * | 2004-09-29 | 2006-04-05 | 腾讯科技(深圳)有限公司 | 一种视频数据压缩的量化方法 |
CN101241508A (zh) * | 2007-08-01 | 2008-08-13 | 金立 | 结构化数据序列的压缩方法 |
US20100017424A1 (en) * | 2008-07-21 | 2010-01-21 | Sony Computer Entertainment Europe Ltd. | Data compression and decompression |
CN104380267A (zh) * | 2012-05-25 | 2015-02-25 | 歌乐株式会社 | 数据解压/压缩装置 |
CN103258030A (zh) * | 2013-05-09 | 2013-08-21 | 西安电子科技大学 | 基于字典与游长编码的移动设备内存压缩方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109151002A (zh) * | 2018-08-02 | 2019-01-04 | 苏州蜗牛数字科技股份有限公司 | 方块地形差异信息同步方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10116325B2 (en) | Data compression/decompression device | |
CN104378117B (zh) | 数据压缩方法及装置、数据传输方法及系统 | |
CN107506153B (zh) | 一种数据压缩方法、数据解压方法及相关系统 | |
CN107948334A (zh) | 基于分布式存储系统的数据处理方法 | |
CN105204781A (zh) | 压缩方法、装置和设备 | |
CN103326732A (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
CN101561819A (zh) | 一种矢量数据精简与压缩方法以及相应的解压缩方法 | |
EP1866776A1 (en) | Method for detecting the presence of subblocks in a reduced-redundancy storage system | |
CN104199951B (zh) | 网页处理方法及装置 | |
CN103685589A (zh) | 基于二进制编码的dns数据压缩、解压缩方法及系统 | |
CN112953550A (zh) | 数据压缩的方法、电子设备及存储介质 | |
CN102970043A (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
CN108122189B (zh) | 硬件中的顶点属性压缩和解压缩 | |
CN105024702A (zh) | 一种面向科学计算的浮点型数据无损压缩方法 | |
CN103428494A (zh) | 基于云计算平台的图像序列编码及恢复方法 | |
CN107943424A (zh) | 一种网络游戏中方块地形信息的压缩方法 | |
CN113312325B (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
CN108900196A (zh) | 一种基于lzw算法的数据解码方法、装置、设备及介质 | |
US8488894B2 (en) | Method and system for dot-matrix font data compression and decompression | |
CN202931290U (zh) | 一种基于gzip的压缩硬件系统 | |
CN105117403A (zh) | 日志数据分片与查询方法及装置 | |
CN105573775A (zh) | Fpga配置文件加载方法和解码器 | |
CN105490683B (zh) | 保存范式哈夫曼树的方法及装置 | |
CN105574053B (zh) | Fpga配置文件的压缩方法和装置 | |
CN109255090B (zh) | 一种web图的索引数据压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180420 |