更新流程
- 從伺服器擷取版本資訊(檢查更新)
- 此檔案在每次發版本(包括整包和更新包)的時候生成
-
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"
}
]
}
- 對比版本資訊和用戶端資訊
// 本地的Json檔案示例
{
"baseVersion": 23,
"latestPatchVersion": 24
}
-
将本地的Json檔案和最新的json檔案baseVersion和latestPatchVersion的進行對比
1. 若baseVersion和latestPatchVersion均和本地一緻,則直接進入遊戲
2. 若本地baseVersion過小,則需要去應用商店擷取最新用戶端
3. 若本地latestPatchVersion過小,則需要去下載下傳目前版本from到最新版本to的資源檔案
- 下載下傳zip檔案
- 若檢查到網絡非WiFi信号,則提示是否需要開啟流量下載下傳
- 若下載下傳過程中網絡中斷,下載下傳失敗并提示使用者是否需要重試(下載下傳采用斷點續傳)
- 校驗下載下傳檔案
- 對比軟體包大小和md5值
- 若軟體包大小和md5值相同,則進入解壓加載流程
- 若不相同,提示使用者出現異常,給出錯誤原因,詢問是否重新嘗試
- 解壓并加載資源檔案
- 解壓資源檔案
- 加載資源檔案
- 更新版本号
- 更新完成,進入遊戲
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檔案(基礎包的版本檔案)所在的路徑