HttpChunkInstaller 관련 문의 드립니다.

기본 패키지에 청크ID 0만 포함하고 다른 컨텐츠를 HttpChunkInstallData를 통해 다운로드되는 프로젝트를 개발하고 있습니다.

질문은 2가지입니다.

1)

HttpChunkInstallData를 통해 다운로드하는 방식을 사용하는 경우 -iostore를 사용할 수 없는것으로 보이는데 앞으로도 유지되는지요?

(질문에 참조된 게시물: [Question about the result of -createchunkinstall in RunUAT.bat [Content removed]

2)

HttpChunkInstallData를 통해 패키징하는 경우, 빌드머신에서 문제가 생기고 있습니다.

20:50:10 [2025.06.04-11.50.10:468][ 0]LogBuildPatchTool: Executed with commandline: -mode=patchgeneration -usehyperthreading -UNATTENDED -BuildRoot=C:\Dev1Next\Windows\Test\pakchunk1 -CloudDir=C:\Dev1Next\Windows\CloudDir -AppID=1 -AppName=Sol_pakchunk1 -BuildVersion=Test -AppLaunch= -AppArgs= -custom=bIsPatch=false -customint=ChunkID=1 -customint=PakReadOrdering=0 -stdout -AllowStdOutLogVerbosity 20:50:10 [2025.06.04-11.50.10:468][ 0]LogBuildPatchTool: Continuing with 63 spawned worker threads. 20:50:10 [2025.06.04-11.50.10:502][ 0]LogBuildPatchTool: FeatureLevel was not provided, defaulting to LatestJson. Please provide the FeatureLevel commandline argument which matches the existing client support. 20:50:10 [2025.06.04-11.50.10:503][ 0]LogPatchGeneration: Running NEW Chunks Patch Generation for: 1:Sol_pakchunk1 Test 20:50:10 [2025.06.04-11.50.10:549][ 0]LogBuildStreamer: Enumerated 1 files in 153 us 20:50:10 [2025.06.04-11.50.10:549][ 0]LogBuildStreamer: Stripping ignorable files 20:50:10 [2025.06.04-11.50.10:549][ 0]LogBuildStreamer: Stripped 0 ignorable file(s) 20:50:10 [2025.06.04-11.50.10:809][ 0]/-------- FStatsCollector Log --------------------- 20:50:10 [2025.06.04-11.50.10:809][ 0]| Generation: Total Time: 305.804 ms 20:50:10 [2025.06.04-11.50.10:809][ 0]| Generation: Layers: 0 20:50:10 [2025.06.04-11.50.10:809][ 0]| Generation: Scanner Backlog: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Generation: Unmatched Buffers Allocation: 1.052 MB, 1.003 MiB 20:50:11 [2025.06.04-11.50.10:892][ 0]| Generation: Unmatched Buffers Use: 1.048 MB, 0.999 MiB 20:50:11 [2025.06.04-11.50.10:892][ 0]| Chunk Writer: Serialize Time: 13.041 ms 20:50:11 [2025.06.04-11.50.10:892][ 0]| Chunk Writer: Num Saved: 1 20:50:11 [2025.06.04-11.50.10:892][ 0]| Chunk Writer: Data Size Written: 4.616 kB, 4.508 KiB 20:50:11 [2025.06.04-11.50.10:892][ 0]| Chunk Writer: Compression Ratio: 0.44% 20:50:11 [2025.06.04-11.50.10:892][ 0]| Chunk Writer: Data Write Speed: 353.949 kB/s, 345.653 KiB/s 20:50:11 [2025.06.04-11.50.10:892][ 0]| Cloud Enumeration: Manifests Loaded: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Cloud Enumeration: Manifests Rejected: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Cloud Enumeration: Chunks Enumerated: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Cloud Enumeration: Chunks Rejected: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Cloud Enumeration: Enumeration Time: 165 us 20:50:11 [2025.06.04-11.50.10:892][ 0]| Cloud Enumeration: Unique Window Sizes: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Open Time: 9.076 ms 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Read Time: 47 us 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Hash Time: 4 us 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Enqueue Time: 1 us 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Data Access Speed: 404.467 kB/s, 394.987 KiB/s 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Potential Throughput: 404.286 kB/s, 394.811 KiB/s 20:50:11 [2025.06.04-11.50.10:892][ 0]| Build Stream: Total Data Read: 3.69 kB, 3.604 KiB 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Created Scanners: 1 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Running Scanners: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Complete Scanners: 1 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: CPU Time: 1.665 ms 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Real Time: 1.666 ms 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Hash Collisions: 0 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Total Data: 1.052 MB, 1.003 MiB 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Skipped Data: 0 B, 0 B 20:50:11 [2025.06.04-11.50.10:892][ 0]| Scanner: Processing Speed: 631.877 MB/s, 602.604 MiB/s 20:50:11 [2025.06.04-11.50.10:892][ 0]\-------------------------------------------------- 20:50:11 [2025.06.04-11.50.10:892][ 0]LogPatchGeneration: Created 1 chunks (3690 build bytes) (4616 compressed bytes) 20:50:11 [2025.06.04-11.50.10:892][ 0]LogPatchGeneration: Completed in 305.804 ms. 20:50:11 [2025.06.04-11.50.10:904][ 0]LogPatchGeneration: Saved manifest to C:/Dev1Next/Windows/CloudDir/Sol_pakchunk1Test.manifest. 20:50:11 [2025.06.04-11.50.10:914][ 0]LogCore: Engine exit requested (reason: BuildPatchToolMain Exiting) 20:50:11 [2025.06.04-11.50.10:914][ 0]LogUObjectArray: CloseDisregardForGC: 0/0 objects in disregard for GC pool 20:50:13 Took 3.03s to run BuildPatchTool.exe, ExitCode=-1073740791 20:50:13 Command failed (Result:-1073740791): C:\Program Files\Epic Games\UE_5.5\Engine\Binaries\Win64\BuildPatchTool.exe -BuildRoot="C:\Dev1Next\Windows\Test\pakchunk1" -CloudDir="C:\Dev1Next\Windows\CloudDir" -AppID=1 -AppName="Sol_pakchunk1" -BuildVersion="Test" -AppLaunch="" -AppArgs="" -custom="bIsPatch=false" -customint="ChunkID=1" -customint="PakReadOrdering=0" -stdout. See logfile for details: 'BuildPatchTool_pakchunk1-2025.06.04-20.50.09.txt'

위와 같이 windows/android에서는 AutomationTool exiting with ExitCode=-1073740791 (-1073740791) 에러와 함께 패키징이 실패합니다.

iOS에서는 무한 루프에 빠지는것 같습니다. (6시간 소요)

로컬에서 동일한 명령어는 성공했는데, 로컬에서도 동일한 에러가 발생한적이 있습니다.

​BuildPatchTool을 커스텀 엔진으로 빌드해서 테스트해보면, ~FPakPlatformFile()에서 크래시가 발생하고, Log상으로는 Pure virtual function being called로 WindowsPlatformMisc.cpp:747 에서 발생합니다. 더 이상 어디서 왜 발생하는지는 찾기 쉽지 않네요… 혹시 힌트가 있을까요?

감사합니다.

안녕하세요. 확인이 늦어진 점 사과드립니다.

HttpChunkInstaller 가 만들어진지 오래되었고, 이후에 등장한 ChunkDownloader에서는 IO Store 컨테이너 사용에 필요한 설정과 함께 사용하실 수 있을 것으로 예상됩니다.

참고로 두 기능은 유지보수 및 기능 개발이 활발한 상태가 아니며, InstallBunldeManager 기반의 실험기능 상태의 솔루션을 개발중인 것으로 보여집니다.

https://dev.epicgames.com/documentation/en-us/unreal-engine/hosting-a-manifest-and-assets-for-chunkdownloader-in-unreal-engine?application_version=5.5

https://dev.epicgames.com/documentation/en-us/unreal-engine/cooking-content-and-creating-chunks-in-unreal-engine?application_version=5.5

그리고 말씀하신 createchunkinstall 옵션을 사용한 패키징 빌드 에러는 리포팅 할 수 있도록 하겠습니다.

감사합니다.

답변에 감사드립니다.

  1. 그러면 언리얼에서는 이제 HttpChunkInstaller가 아닌 ChunkDownloader로 전환했다고 봐도 무방할까요? 추후 프로덕트 패치에 ChunkDownloader를 사용하면 될까요?
  2. HttpChunkInstaller의 경우에는 .pak 파일을 2MB 단위의 chunk로 나누어 패치하는것이 가능했는데, ChunkDownloader는 보기에 불가능해보입니다. 그러면 ChunkDownloader가 받는 ucas/utoc 파일들의 이어받기가 가능한지 궁금합니다.
  3. 혹시 발표된 5.6에서 추가/변경된 내용이 존재하거나, 5.7 이후의 추후 개발 과정에서 관련하여 공유해주시면 감사하겠습니다.

안녕하세요.

ChunkDownloader 플러그인이 HttpChunkInstaller 플러그인을 대체하기 위해 만들어졌었던 것으로 보여지고 프로젝트에 사용한 상태로 확인됩니다.

ChunkDownloader 가 활발하게 개발중인 상태는 아니고, 청크 배포 솔루션에 필요한 기본적인 동작만 제공하기 때문에 IO Store 사용이나 프로젝트 환경에서 필요한 기능에 추가적인 구현과 설정이 필요할 수 있을 것으로 생각되고, 이 경우 적용시 충분한 테스트 통해 안정성을 확인하시고 사용하시는 것이 좋을 것 같습니다.

https://github.com/EpicGames/UnrealEngine/commit/343c0c6c50ef9c2f27e7f9ca892a8102707fa4bf

관련 기능에 관하여, 5.6에서 ChunkDownloader와 관련하여 파일 사이즈 오버플로우로 인한 오류 수정 사항이 있고, 앞서 말씀드린 InstallBundleManager가 실험기능으로 있지만 문서나 사용에 대한 정보가 부족하고, 엔진에서 추후 개발 방향성이 아직 결정되지 않아 공유드리기 어려운점 양해 부탁 드립니다.

감사합니다.