In this lesson, you will learn how to synchronize your game’s remote content with your client launcher by implementing precise build versioning and manifest generation.
When deploying live services, the launcher doesn't just download "the game"; it relies on a BuildManifest.json file. This file acts as a map, listing every chunk, individual asset, and executable version included in a specific build. Without accurate versioning, your launcher cannot perform differential patching—the process of updating only the changed bits rather than the entire multi-gigabyte install.
The Role of Build Versioning
Every time you trigger a build using the Unreal Automation Tool (UAT), you must define a unique BuildVersion. This acts as an identifier that the launcher queries. If the server-side version string is newer than the client-side local version, the launcher triggers the update process.
Manifest Generation Workflow
Manifests are generated automatically during the staging phase of your packaging process. When you use the BuildPatchTool (BPT), it compares your new cooked content against a "base" build folder. It generates a manifest file that includes the hash for every file. If an asset hasn't changed, the hash remains identical, and the launcher skips downloading it.
To ensure your pipeline handles this correctly, you should integrate the BuildPatchTool into your deployment script:
BuildPatchTool.exe -Mode=PatchGeneration \
-BuildRoot="C:\Builds\MyGame\WindowsNoEditor" \
-OutputFile="C:\Deployment\Build_1.0.1\Manifest.json" \
-CloudDir="C:\Deployment\CloudStorage" \
-BuildVersion="1.0.1"
In this flow, the BuildRoot is the output of your recent packaging, and the CloudDir is where the BPT stores the chunks for the launcher. The Manifest.json is the "table of contents" you upload to your CDN. When a player opens your launcher, it reads this JSON, compares the file hashes against their local installation, and only downloads the chunks that don't match the new version. This ensures that updates are rapid and reliable, preventing massive redownloads of stable assets.
Key Takeaway: Precise versioning combined with manifest-based chunk comparison is the foundation of efficient live-service updates, allowing your launcher to verify and patch only the modified content.