手游的热更方案与动态更新策略

打补丁包进行热更需要处理的内容如下:
1.游戏的大部分代码逻辑使用lua或JS等脚本语言来编写。(脚本语言方便热更后重新加载)
2.每次打包资源时都生成一份对比文件。文件内含全资源的(资源名、MD5值、分包号)等信息,实际内容根据项目本身需求而定。
3.修改运行游戏时优先读取文件的目录路径。需要优先读取下载文件目录下的文件(因为APK或IOS内含的资源会和下载下来的资源重复)
4.下载完毕后,之前加载过的内容需要重新reload。

下载补丁包的形式:
1.把需要更新的文件压缩到一个压缩包内,游戏中下载这个压缩包后解压放到下载目录中。
生成压缩包时,通过对比文件把这次更新的内容挑出来,然后集中压缩生成补丁包。
优点:生成压缩包,资源经过压缩下载的资源量会小一点,而且压缩成一个包,下载速度也比较快,也没那么容易出错。
缺点:假如现在游戏已经上了10个版本的补丁包,对于新玩家来讲,刚下完整包就一定要从第一个补丁包开始下载到第十个补丁包,即使这10个补丁包内有大量重复资源(例如每次更新补丁都会更新某张图)。如果长时间不出下一个整包,对于新玩家来说,可能补丁包总量还远大于整包本身。

2.把最新版本的所有资源都上传到服务器,玩家需要下载哪个资源就直接从服务器中下载对应资源到下载目录中。
把对比文件放到APK(IPA)中,需要更新时从服务器处下载最新版的对比文件,然后和当前版本的文件对比,就可以知道需要下载哪些资源,然后一个个从服务器中进行下载。
优点:即使我现在上了100个版本的补丁,无需理会中间的补丁内容是什么,直接拿我当前版本的对比文件和服务器中的对比文件进行对比,即可下载需要的资源,且同名资源会直接下载最新的而不会下载中间版本的资源。 比较灵活。
缺点:即使这次补丁包只更新一张图片,仍然需要把整个游戏所有资源都上传都服务器。 散文件下载速度也不及压缩包而且资源没压缩。

三种资源下载的方式:
1.进入游戏前下载的资源。
这种方式就是最常规的下载方式,启动游戏检测版本号,看是否需要更新,需要就更新完再进游戏。

2.进游戏后,玩家手动点击下载更新。
这种就属于分包的形式了,不下载分包的,首包内容会支持你玩大部分的功能,但某些资源量特别大的功能就可能需要下载分包后才能玩了。 如果有分包,就可以让首包包体小点。无论是appstore还是google都有限制包体的大小,而且推广的时候根据不同的推广策略,可能也存在包体小会比较好推广。

3.动态更新资源,就是用到哪张资源就去下载对应的资源。
一般我们的采用,先显示临时资源(例如一个转圈的动图表示正在下载),正式资源下载好后就会替换成正式资源的方式。
其实就像以前的页游,打开界面时才一块块去下载资源显示出来。这种方式看着最高级实则做起来最麻烦。每一个加载资源的方法入口都得写下载处理逻辑,而且根据不同地方的需求处理逻辑还不一样。(目的都是不改源码的情况下加入下载代码)。
如果需要很细致的做好这个动态下载资源就不得不改动源码了(我的项目是做好后,才提需求要做这个动态下载方案的,新项目可以一开始设计好框架)。例如某些地方会对下载好的资源进行处理,那就必须等资源下载完成再执行后续操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值