虚幻引擎 的 ChunkDownloader 修补解决方案要求你将.pak文件分发到Web服务器,并且你还必须构建 清单文件(manifest file)。这是一个文本文件,其中包含用户希望下载的所有文件列表以及每个文件的预期大小。
当修补流程开始后,清单是ChunkDownloader将下载到用户设备的第一项内容,它使用此信息逐个请求和下载每个.pak文件。预期文件大小让系统能够识别每个文件的进度。
1.必要设置
本指南使用准备资产进行文件分块中的项目。这是一个空白项目,使用Boris、Crunch和Khaimera的Paragon资产。按照该指南的步骤下载资产并为每项资产设置主要资产标签,然后烘焙包含其已分块数据的.pak文件。但是只要你将资产划分成.pak文件,就可以按照下节中的步骤进行操作。
2.构建清单文件
要创建清单文件,请按照以下步骤操作:
-
在项目的基本目录内部创建名为 PatchingDemoKey 的文件夹。在我们的示例中,该文件夹为 PatchingDemo/PatchingDemoKey。
-
创建一个名为 BuildManifest-Windows.txt 的新文件,然后在文本编辑器中打开该文件。
-
添加具有
$NUM_ENTRIES字段的新行,将其值设置为等于你要追踪的pak文件数。在我们的示例中,此值为 3。
BuildManifest-Windows.txt
$NUM_ENTRIES = 3
- 添加具有
$BUILD_ID字段的新行,将其值设置为 PatchingDemoKey。
BuildManifest-Windows.txt
$BUILD_ID = PatchingDemoKey
-
为你的每个.pak文件添加条目,并包含以下信息:
-
.pak文件名(.pak filename)。
-
.pak的文件大小(字节)(.pak's file size in bytes)。要找到此信息,请右键点击.pak文件,并查看其 属性(properties)。
-
确保使用该.pak文件的文件大小,而不是磁盘大小。
+ .pak版本(.pak version)。你可以将其设置为任意字符串。
+ .pak编号(.pak number)。此值应该匹配你用于主要资产标签的 文件块索引(chunk index)。
+ .pak文件路径(.pak file path),相对于清单文件所在位置。
每个字段都必须在同一行中,用制表符分隔,否则将无法正确解析。例如,我们的pakchunk1001行如下所示:
BuildManifest-Windows.txt
pakchunk1001-WindowsNoEditor.pak 922604157 ver 1001 /Windows/pakchunk1001-WindowsNoEditor.pak
-
将
/WindowsNoEditor/PatchingDemo/Content/Paks/中的.pak文件和名为 Windows 的子文件夹中的清单复制到 PatchingDemoKey 文件夹。
无论何时打包你的项目或要更改可供用户使用的文件,都需要重复此流程。我们示例的最终清单文件如下所示:
BuildManifest-Windows.txt
$NUM_ENTRIES = 3
$BUILD_ID = PatchingDemoKey
pakchunk1001-WindowsNoEditor.pak 922604157 ver 1001 /Windows/pakchunk1001-WindowsNoEditor.pak
pakchunk1002-WindowsNoEditor.pak 2024330549 ver 1002 /Windows/pakchunk1002-WindowsNoEditor.pak
pakchunk1003-WindowsNoEditor.pak 1973336776 ver 1003 /Windows/pakchunk1003-WindowsNoEditor.pak
3.将文件托管到本地测试服务器
现在,你已经打包了文件,那么需要将其托管到服务器上以供您的游戏下载,并且需要告知ChunkDownloader如何找到服务器。出于演示目的,我们将设置一个简单的本地网站。
-
在Windows资源管理器中,打开 开始菜单(Start Menu),搜索 打开或关闭Windows功能(Turn Windows Features on or off),将其打开。
-
在 Windows功能(Windows Features) 菜单中,启用 Internet Information Services,然后点击 确定(OK)。
-
打开 Internet Information Services管理器(IIS管理器)(Internet Information Services Manager (IIS Manager)),然后启用 目录浏览(Directory Browsing)。
-
在窗口左侧的 连接(Connections) 菜单中,展开 网站(Sites) 并点击 默认网站(Default Web Site)。
-
在 默认网站主页(Default Web Site Home) 菜单中,双击 MIME类型(MIME Types)。
-
在 MIME类型(MIME Types) 菜单中,点击右键 然后点击 添加(Add)。
-
在 添加MIME类型(Add MIME Type) 窗口中,将 文件扩展名(File Name extension) 设置为 .pak,然后将 MIME类型(MIME type) 设置为
application/octet-stream。
这将确保IIS在收到请求时就可以下载文件。
-
导航至 默认网站(Default Web Site) 文件夹。默认为
C:\inetpub\wwwroot。创建名为 PatchingDemoCDN 的文件夹。
-
将 PatchingDemoKey 文件夹复制到 PatchingDemoCDN 中。
-
打开你的项目的
DefaultGame.ini文件,然后添加以下信息以定义 CDN基本URL(CDN Base URL):
DefaultGame.ini
[/Script/Plugins.ChunkDownloader PatchingDemoLive]
+CdnBaseUrls=127.0.0.1/PatchingDemoCDN
此URL将ChunkDownloader指向文件所在的网站。PatchingDemoLive 限定符让你可以根据目标平台来使用不同的CDN部署配置。
我们在此示例中使用的URL仅指向我们在早前步骤中设置的本地网站。如果你要尝试连接至具有本地局域网或远程CDN的服务器,你需要提供额外的配置和安全性。
最终结果
现在,你已经将资产拆分成.pak文件,然后放到本地网站上,你可以利用虚幻引擎中的修补解决方案访问这些文件。