一种网络游戏中方块地形信息的压缩方法技术

技术编号:17779343 阅读:130 留言:0更新日期:2018-04-22 07:39
一种网络游戏中方块地形信息的压缩方法,包括以下步骤:(1)设置压缩缓存区域;(2)依次从地形信息中取出方块数据的编号;(3)统计连续的方块编号为相同方块数据的方块重复数量;(4)将方块重复数量和与其对应的方块数据合并为压缩数据;(5)将压缩数据储存在压缩缓冲区域中;(6)重复步骤(3)至(5),将压缩缓存区域中的所有压缩数据存储为压缩文件。本发明专利技术的网络游戏中方块地形信息的压缩方法,具有很高的压缩率和压缩效率,可以满足实时压缩和解压缩大量数据。

【技术实现步骤摘要】
一种网络游戏中方块地形信息的压缩方法
本专利技术涉及网络游戏
,特别是涉及一种网络游戏中方块地形信息的压缩方法。
技术介绍
方块地形是游戏中地形全部由不同的方块(土,沙子,岩石,矿物等)组成,这些方块可以任意破坏和挖掘和替换。此类游戏中地形是由大量数据构成,以世界高度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;将Compressd本文档来自技高网...
一种网络游戏中方块地形信息的压缩方法

【技术保护点】
一种网络游戏中方块地形信息的压缩方法,包括以下步骤:(1)设置压缩缓存区域;(2)依次从地形信息中取出方块数据的编号;(3)统计连续的方块编号为相同方块数据的方块重复数量;(4)将方块重复数量和与其对应的方块数据合并为压缩数据;(5)将压缩数据储存在压缩缓冲区域中;(6)重复步骤(3)至(5),将压缩缓存区域中的所有压缩数据存储为压缩文件。

【技术特征摘要】
1.一种网络游戏中方块地形信息的压缩方法,包括以下步骤:(1)设置压缩缓存区域;(2)依次从地形信息中取出方块数据的编号;(3)统计连续的方块编号为相同方块数据的方块重复数量;(4)将方块重复数量和与其对应的方块数据合并为压缩数据;(5)将压缩数据储存在压缩缓冲区域中;(6)重复步骤(3)至(5),将压缩缓存区域中的所有压缩数据存储为压缩文件。2.根据权利要求1所述的网络游戏中方块地形信息的压缩方法,其特征在于,所述步骤(3),进一步包括:取出一个方块数据,并进行保存;设置保存当前方块重复数量的变量;依次取出下一个方块数据,并与所保存的方块数据进行比对,如果数据相同,则将所定义的变量加1。3.根据权利要求2所述的网络游戏中方块地形信息的压缩方法,其特征在于,所述步骤(3),进一步包括:如果所保存的方块数据与取出...

【专利技术属性】
技术研发人员:梁现凯
申请(专利权)人:苏州蜗牛数字科技股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1