热更新流程概览
主要流程
设置热更配置表数据结构
确定热更的资源,记录资源的大小,资源对应的版本和补丁包,每次热更的描述文件。
在多版本并行的情况下,不同的版本有不同的热更配置。
本地记录下载热更版本,方便比较
生成热更包及热更配置表放到服务器
自动生成热更包及自动生成热更配置表
资源加密,解密
热更回退
下载热更配置表读取需要热更文件
下载热更文件
热更下载中断等处理
游戏中加载热更
热更资源下载后校验
资源解密
资源解压
热更流程图
准备阶段
打包时记录打包版本以及所有资源信息。所有信息指的是打包的当前AB包的所有信息,包括MD5码以及资源大小。由于ab包名是唯一的,所以我们把ab包名作为key值,MD5和资源大小等作为Value值。这里资源信息我们使用xml序列化成二进制,或者直接使用Json都可以。
对AB包进行加密
这些信息都放在Unity的Resources文件夹下
Unity一键生成热更资源
根据资源信息,对比新旧AB包,找出需要热更的部分。将需要热更的部分存放在指定的文件夹中
热更包及配置表
根据需要热更的资源,生成对应的热更补丁配置表和热更包
服务器文件部署
将生成的热更包放在指定的文件夹下,热更的配置表放在服务器指定的总配置表patch里。
客户端配置表下载
将服务器配置表进行下载——与本地储存配置表以及已下载文件进行对比(如果没有本地配置表则进行完全下载)
文件校验
下载完热更包,需要进行文件校验(MD5),保证热更包在传输过程中没有发生错误,如果错误就重新下载。
我们使用UnityWebRequest
进行服务器文件的下载,如果没有下载完成,UnityWebRequest
会产生一个不合格的小文件,所以我们需要MD5校验。
如果下载文件校验错误超过了一定次数,就弹出网络环境的警告。
进入游戏加载热更
记录好游戏热更文件的位置并进行加载,需要注意客户端覆盖安装时旧的热更资源需要清理。
AB包——将AB包读取成字节——将字节解密——使用LoadFormMemory
API进行加载。
如果是安卓,将AB包解压到persistentDatapath
,再进行解密。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ATAO2017,阿宅创造奇迹!!