游戏资源打包

游客

标题:游戏资源打包
正文:
游戏资源打包几乎是一个网络游戏客户端必备的功能。页游和微端根据实际需求可能不打包资源或者使用小包。资源打包有这么几个好处：1、加快客户端安装时间。拷贝3000个1mb文件所消耗的时间要远大于拷贝一个3g的文件所消耗的时间2、客户端更加整洁，也可以&ldquo;稍微&rdquo;避免游戏资源被他人使用。3、ios和android上面可以避免文件名大小写不一致造成的文件读取失败。或者说包内可以做到全平台大小写无关4、压缩资源，如果是大量png等图片资源可能还体现不出来，但是如果有大量文本和未压缩模型资源，那么打包可以有效减小客户端 这里介绍两个开源库，可以非常方便的给客户端加入资源打包功能。1、StormLib(http://www.zezula.net/en/mpq/stormlib.html)，这个就是暴雪MPQ打包格式开源实现版本。通过这个库可以轻易的实现一个PackageManager来加载包内资源2、ZPack (http://multi-crash.com/?page_id=340) 这个同样是一个开源打包格式实现。对比上面的MPQ，它更精简，当然功能也更弱一些。不过现有的一些功能已经完全能满足我的实际需求了 主要特性： 速度 以文件名hash方式检索，读取效率至上 删除包内文件时，只删除文件索引，不需要移动包内数据 在两次flush之间用户可以添加任意多个文件（例如添加整个目录），这期间除了被添加文件数据的写入，没有任何其它多余的文件IO操作 尺寸 添加文件时，优先插入到之前删除文件留下的空闲位置，尽可能利用空间 用户可以调用countFragmentSize检查当前包内空闲空间字节数，必要的话可以调用defrag进行整理以释放空间 暂不支持数据压缩，但用户很容易自行添加压缩支持 安全/健壮 严格保证在用户调用flush()之前，包文件的有效性。这样当用户一次添加/删除较多文件的过程中即使发生意外（例如停电，进程被强行终止等），包文件能保持最后一次flush后的逻辑结构，不会发生灾难性后果 包文件以只读方式打开时，原始的文件名信息不会被加载到
[<<][[1]][2][>>]

查看评论(1)
发表评论

首页