天天看点

UE5 热更新方案

更新流程

  1. 从服务器获取版本信息(检查更新)
  2. 此文件在每次发版本(包括整包和更新包)的时候生成
  3. Json文件格式

    1. baseVersion 打包的基本资源版本号,后续用于比较增量更新,递增

    2. latestPatchVersion 最新的版本号

    3. patchList 资源包列表

    4. url:这里使用压缩包格式,减少空间消耗和方便资源的管理

{
    "baseVersion": 23,
    "latestPatchVersion": 25,
    "patchList": [
        {
            "from": 23,
            "to": 25,
            "size": 90532468,
            "md5": "ddfadecf655414732dd2f75e428d2b57",
            "url":  "http://127.0.0.1/patch_23-25.zip"
        },
        {
            "from": 24,
            "to": 25,
            "size": 40552678,
            "md5": "732dd2f75e428d2b57ddfadecf655414",
            "url":  "http://127.0.0.1/patch_24-25.zip"
        }
    ]
}
           
  1. 对比版本信息和客户端信息
// 本地的Json文件示例
{
    "baseVersion": 23,
    "latestPatchVersion": 24
}
           
  1. 将本地的Json文件和最新的json文件baseVersion和latestPatchVersion的进行对比

    1. 若baseVersion和latestPatchVersion均和本地一致,则直接进入游戏

    2. 若本地baseVersion过小,则需要去应用商店获取最新客户端

    3. 若本地latestPatchVersion过小,则需要去下载当前版本from到最新版本to的资源文件

  2. 下载zip文件
  3. 若检查到网络非WiFi信号,则提示是否需要开启流量下载
  4. 若下载过程中网络中断,下载失败并提示用户是否需要重试(下载采用断点续传)
  5. 校验下载文件
  6. 对比软件包大小和md5值
  7. 若软件包大小和md5值相同,则进入解压加载流程
  8. 若不相同,提示用户出现异常,给出错误原因,询问是否重新尝试
  9. 解压并加载资源文件
  10. 解压资源文件
  11. 加载资源文件
  12. 更新版本号
  13. 更新完成,进入游戏
    UE5 热更新方案

构建流程(命令行打包)

整包

  • start CALL C:\UE5.0\UnrealEngine\Engine\Build\BatchFiles\RunUAT.bat BuildCookRun -project=C:\Work\AndroidProject\AndroidProject.uproject -noP4 -Platform=Android -createreleaseversion=1.0 -UTF8Output -bulid -clientconfig=Development -serverconfig=Development -cook -allmaps -CookFlavor=ASTC -Compressed -SkipCookingEditorContent -pak -skipstage -archive -archivedirectory=C:\Work\Release -package

  • C:\UE5.0\UnrealEngine\Engine\Build\BatchFiles\RunUAT.bat 为UE安装路径下脚本文件
  • C:\Work\AndroidProject\AndroidProject.uproject 为工程路径下可执行程序
  • C:\Work\Release为整包生成路径
  • 其他参数不变,如需更改,可以参考命令行参数查询表

    https://blog.csdn.net/u010385624/article/details/89916184

版本确定

  • 在整包更新中一个重要的参数为createreleaseversion=1.0,他用来定义release版本,版本信息用于dlc补丁
  • 执行完成后会在C:\Work\Release\Android_ASTC\下生成apk文件,其就是需要的整包

    更新包

  • start CALL C:\UE5.0\UnrealEngine\Engine\Build\BatchFiles\RunUAT.bat BuildCookRun -project=C:\Work\AndroidProject\AndroidProject.uproject -noP4 -Platform=Android -basedonreleaseversion=1.0 -generatepatch -UTF8Output -bulid -clientconfig=Development -serverconfig=Development -cook -allmaps -CookFlavor=ASTC -Compressed -SkipCookingEditorContent -pak -skipstage -archive -archivedirectory=C:\Work\Patch -package
  • 这里唯一不同为C:\Work\Patch为补丁包生成路径

版本确定

  • 在这里对应整包basedonreleaseversion=1.0 中的createreleaseversion=1.0,说明他是基于1.0版本的补丁包,-generatepatch 表示补丁为打补丁
  • 执行完成后在C:\Work\Pitch\Android_ASTC\AndroidUpdate\Content\Paks路径下生成pak文件,在后缀有_P的包为需要的补丁包,无.pak的文件为基础包的资源,在进行更新的时候,只需要将补丁包上传到服务器即可

在虚幻打包中他只会带入UE的资源文件,而我们要带入的是Json文件,所以需要在这里声明Json文件(基础包的版本文件)所在的路径

UE5 热更新方案