天天看點

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 熱更新方案