StarForce改热更

发布时间 2023-11-27 00:18:42作者: mc宇少

改热更的方法:GameFramework框架详解之 资源打包和热更新流程_gameframework 热更新-CSDN博客

总结:

1.流程:

1.以windows为例,请求资源版本文件WindowsVersion.txt,得到资源版本信息,和本地的资源版本缓存相对比,查看是否需要更新

2.如果需要更新,就请求下载GameFrameworkVersion.dat(包含资源列表)文件和本地的资源列表(第一次进是只读路径(application.streamingAssetsPath)下的GameFrameworkList.dat,热更后就是用最新的可读写目录(application.persistentDataPath)下的GameFrameworkList.dat(热更资源也下载到这个目录))对比后得出需要更新的资源列表。

3.更新版本资源文件(本地的资源版本号和GameFrameworkList.dat)

4.校验资源:校验一下资源信息和资源配置(名字、大小等)是否匹配,如果不匹配说明资源损坏,更新 需要更新的资源列表

5.根据 需要更新的资源列表,更新资源。

2.游戏内的资源来源

Resource(bundle)存在可读写目录下(热更目录,application.persistentDataPath),所有的热更资源也都存在这,存取的时候用ugf封装的文件系统(UpdatableVersionList.FileSystem),从FileSystem中拿到Resource,再从Resource中拿Asset。

3.加载资源流程

在加载资源A的时候,先检查其对应的Resource(bundle)是否通过校验(是否存在),不存在就走下载逻辑(UpdateResource),存在就根据ResourceInfo(进游戏的时候就将所有bundle信息存下来)加载对应的Resource,从Resource中读取资源。

4.资源列表格式

资源列表会被解析成四类数据:

1.UpdatableVersionList.Asset(主要是asset的路径)

 2.UpdatableVersionList.Resource(打出来的bundle,主要是resource的asset列表、大小、压缩后大小等)

 3.UpdatableVersionList.FileSystem(热更文件的文件名)

 和下载下来的热更文件对应

 4.UpdatableVersionList.ResourceGroup(资源组,没看懂)