[游戏更新]游戏更新框架的设计

主要是通过文章来记录一下游戏更新流程的框架设计、资源打包、资源下载等。热更新的功能框架使用的是XLua,这里不做详细介绍。

流程图:

[游戏更新]游戏更新框架的设计_第1张图片

因为是海外游戏,考虑到GooglePlay对包体大小的限制。因此,会有一些资源做成压缩包,在特定时间进行下载。即第6,7两个步骤。如果是国内游戏,不考虑控制安装包大小的,可以略过这两个步骤。因为东南亚兄弟的网速和机型十分感人的缘故,AssetBundle、配置表和lua代码这里我们进行了7z压缩,下载7z包后再解压,相对于散文件来说,下载速度更有保障。这里使用的是AssetStore里的一个插件。整个检测更新的过程使用状态机来实现。降低各个流程之间的耦合性。接下来详细的梳理一下每个步骤的流程。

1.获取版本号信息

[游戏更新]游戏更新框架的设计_第2张图片

在与服务器版本校验之前,会先对本地的资源进行一个校验,如果是首次安装或者玩家将数据清除掉了,首先校验磁盘空间,空间充足,那么直接将StreamingAssets下的7z解压到persistentDataPath目录下,并将版本号记录到文件中。使用该版本号和从服务器获取的版本号信息进行校验。详细见下一个流程。

2.更新操作判定

[游戏更新]游戏更新框架的设计_第3张图片

因为游戏支持离线模式,所以,当网络无法连接的时候,走离线模型登录游戏,跳过更新判定。版本号定义了3位,前两位用于控制游戏安装包的版本,第3位用于判断资源更新,每次发布安装包,资源版本号从0开始统计。在版本兼容这一块,可以兼容两个版本,即可能同时存在1.0.0和1.1.0。

3.大版本更新

          这个逻辑比较简单,就是有新版本时弹窗提示玩家,如果玩家版本还在受支持的版本号中,弹窗就有两个按钮,一个关闭,一个跳转。玩家关了之后就可以继续进游戏,反之,弹窗只有一个跳转商店按钮,除非离线,否则不能进游戏。就不画流程图了。

4.资源更新

        这个过程是强制的,涉及的判断较多。

[游戏更新]游戏更新框架的设计_第4张图片

这里边比较核心的内容是http下载这块的逻辑。后边再做详细的分析。

5.登录游戏

       判断玩家网络是否畅通,如果畅通就走在线模式,否则,走离线模式。

6.场景资源检测

       这个用途可能比较广泛,虽然国内市场不考虑包体可以不做场景资源的分包,但是考虑到大版本更新对用户体验的影响,建议游戏支持场景资源扩展更新。这个过程主要是对场景资源版本的校验,流程比较简单。不做流程图展示了。

7.场景资源更新

[游戏更新]游戏更新框架的设计_第5张图片

以上就是游戏更新流程的介绍。

 

你可能感兴趣的:(Unity开发那些事)