Summary
When packaging a project with bBuildHttpChunkInstallData=True and assets assigned to chunks > 0, BuildPatchTool (BPT) fails with: FeatureLevel was not provided. Please provide the FeatureLevel commandline argument which matches the existing client support.
What Type of Bug are you experiencing?
Foundation (C++ Tools, Profiling, & Pipeline)
Steps to Reproduce
- Enable bBuildHttpChunkInstallData=True in DefaultGame.ini
- Assign at least one asset to a chunk ID > 0 (via Primary Asset Labels or similar)
- Set HttpChunkInstallDataDirectory and HttpChunkInstallDataVersion
- Package the project (BuildCookRun with -stage -manifests -createchunkinstall)
Expected Result
BPT generates chunk manifests successfully.
Observed Result
BPT fails with message “FeatureLevel was not provided. Please provide the FeatureLevel commandline argument which matches the existing client support.”
Affects Versions
5.8
Platform(s)
Windows
Additional Notes
Add the following line after CmdLine += " -stdout";: CmdLine += " -FeatureLevel=LatestJson";
The status of UE-386370 changed to ‘Needs Triage’. We are routing this to the appropriate team for investigation.
Since I haven’t received a single reply, here is my final workaround…
UAT Patch: BuildPatchTool FeatureLevel (UE 5.8 EGS)
Error fixed
LogBuildPatchTool: Error: FeatureLevel was not provided. Please provide the FeatureLevel commandline argument which matches the existing client support.
Occurs during Windows/Android packaging when bBuildHttpChunkInstallData=True and bGenerateChunks=True in DefaultGame.ini.
Root cause
Epic bug - BuildPatchTool v1.9.0 (UE 5.8) requires -FeatureLevel as a mandatory argument but the UAT script CopyBuildToStagingDirectory.Automation.cs does not pass it when invoking BPT for chunk install.
Fix
1. Modify the source file
File: UE_5.8\Engine\Source\Programs\AutomationTool\Scripts\CopyBuildToStagingDirectory.Automation.cs
Find:
CmdLine += " -customint=\"PakReadOrdering=0\"";
CmdLine += " -stdout";
Replace with:
CmdLine += " -customint=\"PakReadOrdering=0\"";
CmdLine += " -FeatureLevel=Latest";
CmdLine += " -stdout";
2. Recompile UAT scripts
"UE_5.8\Engine\Binaries\ThirdParty\DotNet\10.0\win-x64\dotnet.exe" build "UE_5.8\Engine\Source\Programs\AutomationTool\Scripts\\AutomationScripts.Automation.csproj" -c Development
The patched DLL is written to:
UE_5.8\Binaries\DotNET\AutomationTool\AutomationScripts\Scripts\net10.0\AutomationScripts.Automation.dll
3. Proceed with build menu in Unreal Editor (EGS)
Build as usual.
Notes
- The fix takes effect on the next UAT launch (not on a packaging already in progress).
- A Verify from Epic Games Launcher OVERWRITES the patch : redo steps 1 and 2.
- The value
Latest corresponds to EFeatureLevel::ManifestEncryptionSupport (int 24), defined in BuildPatchFeatureLevel.h.
- Regression comes from commit : 4fea19f8ab6974f8569d03db231f4899bb8d563e on ChunkDirectoryMode.cpp versus good but deleted old PatchGenerationMode.cpp file :
// Grab the FeatureLevel. This is required param but safe to default, we can change this to a warning after first release, and then an error later, as part of a friendly roll out.
PARSE_SWITCH(FeatureLevel);
FeatureLevel.TrimStartAndEndInline();
if (FeatureLevel.IsEmpty())
{
UE_LOG(LogBuildPatchTool, Log, TEXT("FeatureLevel was not provided, defaulting to LatestJson. Please provide the FeatureLevel commandline argument which matches the existing client support."));
FeatureLevel = TEXT("LatestJson");
}