主要流程

设置热更配置表数据结构

确定热更的资源,记录资源的大小,资源对应的版本和补丁包,每次热更的描述文件。

在多版本并行的情况下,不同的版本有不同的热更配置。

本地记录下载热更版本,方便比较

生成热更包及热更配置表放到服务器

自动生成热更包及自动生成热更配置表

资源加密,解密

热更回退

下载热更配置表读取需要热更文件

下载热更文件

热更下载中断等处理

游戏中加载热更

热更资源下载后校验

资源解密

资源解压

热更流程图

准备阶段

打包时记录打包版本以及所有资源信息。所有信息指的是打包的当前AB包的所有信息,包括MD5码以及资源大小。由于ab包名是唯一的,所以我们把ab包名作为key值,MD5和资源大小等作为Value值。这里资源信息我们使用xml序列化成二进制,或者直接使用Json都可以。

对AB包进行加密

这些信息都放在Unity的Resources文件夹下

Unity一键生成热更资源

根据资源信息,对比新旧AB包,找出需要热更的部分。将需要热更的部分存放在指定的文件夹中

热更包及配置表

根据需要热更的资源,生成对应的热更补丁配置表和热更包

服务器文件部署

将生成的热更包放在指定的文件夹下,热更的配置表放在服务器指定的总配置表patch里。

客户端配置表下载

将服务器配置表进行下载——与本地储存配置表以及已下载文件进行对比(如果没有本地配置表则进行完全下载)

文件校验

下载完热更包,需要进行文件校验(MD5),保证热更包在传输过程中没有发生错误,如果错误就重新下载。

我们使用UnityWebRequest进行服务器文件的下载,如果没有下载完成,UnityWebRequest会产生一个不合格的小文件,所以我们需要MD5校验。

如果下载文件校验错误超过了一定次数,就弹出网络环境的警告。

进入游戏加载热更

记录好游戏热更文件的位置并进行加载,需要注意客户端覆盖安装时旧的热更资源需要清理。

AB包——将AB包读取成字节——将字节解密——使用LoadFormMemoryAPI进行加载。

如果是安卓,将AB包解压到persistentDatapath,再进行解密。

热更流程图