概述
- UE4 中主要使用 Project Launcher 來進行補丁和DLC的制作
- 補丁與 DLC 都需要基於某個版本而制作
- 補丁 與 DLC 最后以 Pak 形式表現,
- 補丁的 pak 可以重命名,但最后以 _p.pak 結尾
- Pak 會根據 PakOrder 來排序掛載
- Paks 目錄下 ,項目名開頭的 PakOrder = 4;非項目名開頭的 PakOrder 與上一級目錄的 PakOrder 相同
- 項目名/Content 目錄下的 PakOrder = 3;
- Engine/Content 目錄下的 PakOrder = 2;
- Saved 目錄下的 PakOrder = 1;
- _p.pak PakOrder額外加100
- n_p.pak PakOrder額外加 n*100+100
補丁 Patch
- 對發布之后的版本進行更新,稱之為打補丁
- 通常用於
- 內容更新
- 解決已知問題
- 修復版本漏洞
- 打補丁的方法
- 保留原始版本或之前版本中的文件,但添加一個指向新內容的指針
- 使用二進制補丁轉換原始版本中的內容
DLC
- Downloadable Content(可下載內容),也稱“可下載資料包”
- 用於游戲發布后的內容擴展,如新增地圖、新游戲模式、新劇情等
- 目前暫不支持增量更新
擴展:熱更新
- 藍圖本身作為資源,可以熱更新
- C++ 是編譯型語言,因而無法熱更行
- 可以使用 Lua 腳本來寫業務邏輯,進行熱更新
- UnLua
- sluaunreal
- 參考:UE 熱更新:基於 UnLua 的 Lua 編程指南
補丁配置與版本迭代
游戲主體配置 V1.0
-
創建 BP_Patch 並放置到場景中,配置 Project Launcher 打包,設為 Release 1.0

補丁配置 V1.1
-
修改 BP_Patch 代碼
-
配置 Project Launcher
- 基於1.0 打包,當前補丁我們假設為 patch 1.1
- 並將當前關卡 使用 release 的打包配置,更改為 Release 1.1 進行打包(后續要用到)

-
打包 輸出 DesignPatterns-WindowsNoEditor_0_P.pak
- 方便起見,重命名為 DesignPatterns-BaseV1.0_11_P.pak,其中 V1.0 代表 Release 1.0,11 代表 Patch 1.1
- 復制到 Release 的
WindowsNoEditor\DesignPatterns\Content\Paks目錄下
-
測試結果對比

補丁配置 V1.2
-
創建 BP_Patch2 並放置到場景中

-
配置 Project Launcher ,打包兩個版本。並將補丁復制到對應 Release 的
WindowsNoEditor\DesignPatterns\Content\Paks目錄下- 基於 release 1.0 打包 patch 1.2,輸出 DesignPatterns-BaseV1.0_12_P.pak
- 基於 release 1.1 打包 patch 1.2,輸出 DesignPatterns-BaseV1.0_12_P.pak
-
測試結果如下
- Release 1.2 等同於
- 基於 Release 1.0 的基礎包,打上 BaseV1.0_11、BaseV1.1_12 兩個補丁
- 基於 Release 1.0 的基礎包,打上 BaseV1.0_12 補丁
- 基於 Release 1.1 的基礎包,打上 BaseV1.1_12 補丁

- Release 1.2 等同於
版本迭代思路
-
維護兩個文本信息
- 服務器更新的補丁列表 server_patch_list.json
- 本地的補丁更新情況記錄 local_patch_list.json,記錄當前版本號以及已更新的補丁
-
啟動時從 server_patch_list 讀取補丁列表信息,對比 local_patch_list,
- 如果 local_patch_list 沒有則下載對應版本的補丁
- 如果多個小版本合並為一個版本,則刪除原來已下載的小版本,再下載合並后的版本
-
pak 刪除與添加,涉及卸載和掛載,使用時具體分析,下圖為舉例示例,非實際應用

DLC 配置
-
UE4 DLC 以插件形式存在,因此第一步先創建插件
-
在C++工程 .build.cs 添加插件模塊,模塊名為插件名,編譯

-
在 插件的 Content 目錄下創建新的場景、資源

-
配置 Project Launcher
- 打包后的路徑
\Plugins\[插件名]\Saved\StagedBuilds\WindowsNoEditor\[項目名]\Plugins\[插件名]\Content\Paks\WindowsNoEditor

- 打包后的路徑
-
測試結果
- 關於 插件 Content 目錄
- File - > Package - > 平台 打包,默認會將插件 Content 目錄一起打包進去
- Project Launcher 打包 Release ,默認不打包插件 Content 目錄
- Project Launcher 打包 DLC ,默認只打包插件 Content 目錄
- 關於 插件 Content 目錄

-
至此 Project Launcher

