h5游戏工具集的设计

一:热更工具的设计

1:补丁生成原理

  1. 遍历所有文件,为每个文件生成md5码并记录
  2. 当次生成的md5文件和上次md文件对比,找出差异文件
  3. 差异文件依目录拷贝出来

2:补丁热更原理

laya本地缓存策略:缓存最近50m,当到达临界值时删除最先5m

laya版本管理策略:发布时所有资源重新命名(名字+hashcode)保证和上次不重复,生成version.json记录原有资源和新资源映射关系,读取资源时通过原资源名映射获取新资源,本地资源热更通过与上个资源名不一致实现本地资源热更

3:工具设计

  1. 遍历所有文件,生成md5码并记录文件,生成version.json,其中新资源的命名使用md5码
  2. 对比上次生成md5文件,找出差异文件,生成补丁,补丁里的文件使用md5码命名
  3. Version.json不使用本地缓存策略,每次加载都是从服务器加载version.json,资源读取和缓存都是用version.json映射后的名字
  4. 被热更后的资源一般会被laya的资源缓存策略移除,所以不用担心资源涌余

二:代码混淆工具的设计

1:生成不可混淆关键字:

  1. 混淆文件里的字符串(全部提取出来
  2. 系统关键字
  3. 库文件里所有字符,配置表键

2:生成关键字转换关系

  1. 查找混淆文件里所有字符
  2. 通过与不可混淆关键字对比,找出可被混淆的关键字
  3. 通过字符长度和使用频率对关键字排序
  4. 特定算法算出最短被替换关键字生成替换字典
  5. 使用正则表达式完成替换

三:配置表打包的设计

原有问题:

    1.必须合表,减少io次数

        合表 意味着需要每次生成配置都要读取所有表生成合并成一张表,但是这样会相当耗时,分  析耗时主要是库文件解析配置表时的消耗,占到90%以上

    2.生成的json合表文件太大

解决方案:

1:每次导表为配置生成表的解析文本文件,表的合并其实就是所有文本文件的合并(文本文件的解析速度远远快于库文件解析解析配置表的速度

2:数据以数组的形式存取,即所有key都被省略,在游戏开始的时候去一一解析

再使用zlib库对文件进行压缩

测试:以18张表做测试发现

1:不合并直接生成json表的情况下文件总大小为2.8m

2:合并json并删除多余字符紧密排列时文件大小为2.3m

3:使用排除key的数组方式存储,文件大小为917k

4:使用zlib库对文件进行压缩,文件大小为194k

对比合并后的json文件的压缩率在90%以上 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值