[UE4] uasset 이외의 자산에 ChunkID 설정 (ue4.22 이상)
6432 단어 위 4UnrealEngineUnrealEngine4
Chunk란?
ue4로 어플리케이션을 릴리스 할 때에는 게임을 구성하는 에셋을 일괄 정리한 팩 파일에 일괄 정리하는 경우가 많습니다만,
그것을 여러 개로 나누는 기능입니다.
우선은 이쪽의 슬라이드를 부디!
UE4의 모바일 개발에서 콘텐츠 업데이트 이야기 - Chunk ID와의 격투편 -
슬라이드에있는 것처럼 모바일에서 자산 분할 다운로드를 위해 만들어진 기능입니다.
모바일 이외의 플랫폼에서도 다운로드 콘텐츠나 게임을 시작할 때의 다운로드 대기 시간을 최소화하기 위해서도 사용됩니다.
최근에는 PrimaryAssetLabel 등을 활용하여 유연하게 ChunkId를 제어할 수 있게 되었습니다.
NonAsset 파일은?
UE4는 대부분의 자산을 엔진 내에서 uasset로 변환하여 사용합니다.
다만 미들웨어가 이용하는 일부의 에셋이나 동영상 파일등은 변환하지 않고 그대로 취급할 수 있습니다.
사용할 때는 특정 폴더 아래에 자산을 모아 Additional Non-asset Directory to Package에 경로를 설정합니다.
그리고는 PrimaryAssetLabel을 배치해 끝!
그리고 흥미롭고, 패키지 해 보면 모두 chunk0에 배치되는 결과가 되어 버립니다.
PrimaryAssetLabel이 Cook 처리의 마지막에 uasset의 배치를 관리하는 에셋 레지스트리와 제휴해 파일을 배분해, Non-asset 파일은 Cook가 끝난 후, 필요한 파일만을 추출하는 Staging 처리 중에서 ini 파일을 참조 하면서 배치되기 때문입니다.
다만 동영상 파일이나 미디어 파일은 크기 때문에 가능하면 Chunk 측으로 분할해 배분하고 싶은 곳이므로, 이것은 곤란합니다.
조치 (UE4.22 이상)
UE4.22부터 조용히 Non-Asset 파일을 포함한 모든 파일에 대해 ChunkId를 조작할 수 있는 PakFileRule.ini가 추가되었습니다.
이것을 작성하여 Chunk를 조작 할 수 있습니다.
사용법
프로젝트를 새로 만들 때 기본적으로 Config 폴더에
DefaultPakFileRule.ini는 자동으로 만들어지지 않습니다.
우선 이쪽을 신규 작성하는 곳부터 시작합시다. ini 파일은 일반 텍스트 파일입니다.
PakFileRule.ini 파일 형식
Engine/Config/BasePakFileRules.ini에 설명이 있습니다.
BasePakFileRules.ini; These rules are applied in order, the first rule that applies per file is taken and no others are evaluated
; [SectionName]
; bOverrideChunkManifest=false ; If true this allows overriding assignments from the cooker
; bExcludeFromPaks=false ; If true this removes entirely, cannot coexist with overridepaks
; OverridePaks="pakchunk1" ; If set this will override pak list, comma separated
; Platforms="iOS,Android" ; If set this rule will only apply to these platforms
; Targets="Shipping,Test" ; If set this rule will only apply to these configurations
; bOnlyChunkedBuilds=true ; If set this rule will only apply to chunked builds
; bOnlyNonChunkedBuilds=true ; If set this rule will only apply to non-chunked builds
; +Files=".../*FileMask*.*" ; List of file masks to apply to, using the C# FileFilter class
필터에서 지정한 파일의 Chunk를 전환하거나 필터에서 지정한 파일을 Pak에서 제외할 수 있습니다.
설명 예
DefaultPakFileRule.ini[Movies]
OverridePaks="pakchunk3"
bOverrideChunkManifest=true
+Files="*.mp4"
[NonAssetsInChunk1]
OverridePaks="pakchunk1"
bOverrideChunkManifest=true
+Files=".../NonAssets/Chunk1/..."
[OnlyMoviesInChunk2]
OverridePaks="pakchunk2"
bOverrideChunkManifest=true
+Files=".../NonAssets/Chunk2/.../*.mp4"
※2020/2/18 패스의 기술을 수정
pak 내용물 확인
pak을 확인하려면 UnrealPak이 편리합니다. 포함된 파일을 리스팅하려면 -List
옵션을 사용합니다.
다음은 작동 예입니다. Chunk1에 지정된 mp4 파일이 포함되어 있음을 알 수 있습니다.
> UE423\Engine\Binaries\Win64\UnrealPak.exe DestDir\WindowsNoEditor\ChunkPackage423\Content\Paks\pakchunk1-WindowsNoEditor.pak -List
LogPakFile: Display: Using command line for crypto configuration
LogPakFile: Display: Added 0 entries to add to pak file.
LogPakFile: Display: Mount point ../../../ChunkPackage423/Content/
LogPakFile: Display: "Maps/NewWorld.uexp" offset: 0, size: 250 bytes, sha1: 737C2BA2106A6D0A689280A4F0EAEFF31D42EFF4, compression: Zlib.
LogPakFile: Display: "Maps/NewWorld.umap" offset: 323, size: 1029 bytes, sha1: B43AE5295E60BAFE2B6B51C617B53275FA03BDF7, compression: Zlib.
LogPakFile: Display: "MyAsset/Chunk1/Chunk1.mp4" offset: 2048, size: 900034 bytes, sha1: CB8C9A02D7EA029BB08FE35898E0A60A28668F0D, compression: None.
LogPakFile: Display: 3 files (901313 bytes), (0 filtered bytes).
LogPakFile: Display: Unreal pak executed in 0.004506 seconds
관련 로그 등
AutomationTool이 Staging 처리를 수행하기 때문에 Engine\Programs\AutomationTool\Saved\Logs
폴더 등에 로그가 저장됩니다.
참고 소스 파일
UE4는 대부분의 자산을 엔진 내에서 uasset로 변환하여 사용합니다.
다만 미들웨어가 이용하는 일부의 에셋이나 동영상 파일등은 변환하지 않고 그대로 취급할 수 있습니다.
사용할 때는 특정 폴더 아래에 자산을 모아 Additional Non-asset Directory to Package에 경로를 설정합니다.
그리고는 PrimaryAssetLabel을 배치해 끝!
그리고 흥미롭고, 패키지 해 보면 모두 chunk0에 배치되는 결과가 되어 버립니다.
PrimaryAssetLabel이 Cook 처리의 마지막에 uasset의 배치를 관리하는 에셋 레지스트리와 제휴해 파일을 배분해, Non-asset 파일은 Cook가 끝난 후, 필요한 파일만을 추출하는 Staging 처리 중에서 ini 파일을 참조 하면서 배치되기 때문입니다.
다만 동영상 파일이나 미디어 파일은 크기 때문에 가능하면 Chunk 측으로 분할해 배분하고 싶은 곳이므로, 이것은 곤란합니다.
조치 (UE4.22 이상)
UE4.22부터 조용히 Non-Asset 파일을 포함한 모든 파일에 대해 ChunkId를 조작할 수 있는 PakFileRule.ini가 추가되었습니다.
이것을 작성하여 Chunk를 조작 할 수 있습니다.
사용법
프로젝트를 새로 만들 때 기본적으로 Config 폴더에
DefaultPakFileRule.ini는 자동으로 만들어지지 않습니다.
우선 이쪽을 신규 작성하는 곳부터 시작합시다. ini 파일은 일반 텍스트 파일입니다.
PakFileRule.ini 파일 형식
Engine/Config/BasePakFileRules.ini에 설명이 있습니다.
BasePakFileRules.ini; These rules are applied in order, the first rule that applies per file is taken and no others are evaluated
; [SectionName]
; bOverrideChunkManifest=false ; If true this allows overriding assignments from the cooker
; bExcludeFromPaks=false ; If true this removes entirely, cannot coexist with overridepaks
; OverridePaks="pakchunk1" ; If set this will override pak list, comma separated
; Platforms="iOS,Android" ; If set this rule will only apply to these platforms
; Targets="Shipping,Test" ; If set this rule will only apply to these configurations
; bOnlyChunkedBuilds=true ; If set this rule will only apply to chunked builds
; bOnlyNonChunkedBuilds=true ; If set this rule will only apply to non-chunked builds
; +Files=".../*FileMask*.*" ; List of file masks to apply to, using the C# FileFilter class
필터에서 지정한 파일의 Chunk를 전환하거나 필터에서 지정한 파일을 Pak에서 제외할 수 있습니다.
설명 예
DefaultPakFileRule.ini[Movies]
OverridePaks="pakchunk3"
bOverrideChunkManifest=true
+Files="*.mp4"
[NonAssetsInChunk1]
OverridePaks="pakchunk1"
bOverrideChunkManifest=true
+Files=".../NonAssets/Chunk1/..."
[OnlyMoviesInChunk2]
OverridePaks="pakchunk2"
bOverrideChunkManifest=true
+Files=".../NonAssets/Chunk2/.../*.mp4"
※2020/2/18 패스의 기술을 수정
pak 내용물 확인
pak을 확인하려면 UnrealPak이 편리합니다. 포함된 파일을 리스팅하려면 -List
옵션을 사용합니다.
다음은 작동 예입니다. Chunk1에 지정된 mp4 파일이 포함되어 있음을 알 수 있습니다.
> UE423\Engine\Binaries\Win64\UnrealPak.exe DestDir\WindowsNoEditor\ChunkPackage423\Content\Paks\pakchunk1-WindowsNoEditor.pak -List
LogPakFile: Display: Using command line for crypto configuration
LogPakFile: Display: Added 0 entries to add to pak file.
LogPakFile: Display: Mount point ../../../ChunkPackage423/Content/
LogPakFile: Display: "Maps/NewWorld.uexp" offset: 0, size: 250 bytes, sha1: 737C2BA2106A6D0A689280A4F0EAEFF31D42EFF4, compression: Zlib.
LogPakFile: Display: "Maps/NewWorld.umap" offset: 323, size: 1029 bytes, sha1: B43AE5295E60BAFE2B6B51C617B53275FA03BDF7, compression: Zlib.
LogPakFile: Display: "MyAsset/Chunk1/Chunk1.mp4" offset: 2048, size: 900034 bytes, sha1: CB8C9A02D7EA029BB08FE35898E0A60A28668F0D, compression: None.
LogPakFile: Display: 3 files (901313 bytes), (0 filtered bytes).
LogPakFile: Display: Unreal pak executed in 0.004506 seconds
관련 로그 등
AutomationTool이 Staging 처리를 수행하기 때문에 Engine\Programs\AutomationTool\Saved\Logs
폴더 등에 로그가 저장됩니다.
참고 소스 파일
; These rules are applied in order, the first rule that applies per file is taken and no others are evaluated
; [SectionName]
; bOverrideChunkManifest=false ; If true this allows overriding assignments from the cooker
; bExcludeFromPaks=false ; If true this removes entirely, cannot coexist with overridepaks
; OverridePaks="pakchunk1" ; If set this will override pak list, comma separated
; Platforms="iOS,Android" ; If set this rule will only apply to these platforms
; Targets="Shipping,Test" ; If set this rule will only apply to these configurations
; bOnlyChunkedBuilds=true ; If set this rule will only apply to chunked builds
; bOnlyNonChunkedBuilds=true ; If set this rule will only apply to non-chunked builds
; +Files=".../*FileMask*.*" ; List of file masks to apply to, using the C# FileFilter class
[Movies]
OverridePaks="pakchunk3"
bOverrideChunkManifest=true
+Files="*.mp4"
[NonAssetsInChunk1]
OverridePaks="pakchunk1"
bOverrideChunkManifest=true
+Files=".../NonAssets/Chunk1/..."
[OnlyMoviesInChunk2]
OverridePaks="pakchunk2"
bOverrideChunkManifest=true
+Files=".../NonAssets/Chunk2/.../*.mp4"
> UE423\Engine\Binaries\Win64\UnrealPak.exe DestDir\WindowsNoEditor\ChunkPackage423\Content\Paks\pakchunk1-WindowsNoEditor.pak -List
LogPakFile: Display: Using command line for crypto configuration
LogPakFile: Display: Added 0 entries to add to pak file.
LogPakFile: Display: Mount point ../../../ChunkPackage423/Content/
LogPakFile: Display: "Maps/NewWorld.uexp" offset: 0, size: 250 bytes, sha1: 737C2BA2106A6D0A689280A4F0EAEFF31D42EFF4, compression: Zlib.
LogPakFile: Display: "Maps/NewWorld.umap" offset: 323, size: 1029 bytes, sha1: B43AE5295E60BAFE2B6B51C617B53275FA03BDF7, compression: Zlib.
LogPakFile: Display: "MyAsset/Chunk1/Chunk1.mp4" offset: 2048, size: 900034 bytes, sha1: CB8C9A02D7EA029BB08FE35898E0A60A28668F0D, compression: None.
LogPakFile: Display: 3 files (901313 bytes), (0 filtered bytes).
LogPakFile: Display: Unreal pak executed in 0.004506 seconds
제대로 작동하지 않으면 위의 소스 파일을 들여다 봅니다.
주석 처리된 LogInformation 행에서 주석을 제거하면 추가 정보를 얻을 수 있습니다!
Cleaning Stage Directory: D:\dev\ue424Projects\Package424\Saved\StagedBuilds\WindowsNoEditor
Creating pak using streaming install manifests.
Adding to PakFileRules for Section NonAssetsInChunk1 : .../Chunk/Chunk1/.../*.mp4 <----DefaultPakFileRules.iniからセクションが追加された
Adding to PakFileRules for Section NonAssetsInChunk2 : .../Chunk/Chunk2/.../*.mp4 <----DefaultPakFileRules.iniからセクションが追加された
Setting pak assignment for file D:\dev\ue424Projects\Package424\Content\Chunk\Chunk1\Chunk1.mp4 to pakchunk1 <----ChunkIDが適用された
Setting pak assignment for file D:\dev\ue424Projects\Package424\Content\Chunk\Chunk2\Chunk2.mp4 to pakchunk2 <----ChunkIDが適用された
Creating Pak files utilizing 12 cores
Executing 3 UnrealPak commands...
Waiting for child processes to complete (3/3)
Reference
이 문제에 관하여([UE4] uasset 이외의 자산에 ChunkID 설정 (ue4.22 이상)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/EGJ-Takashi_Suzuki/items/d7e980d7a71e9adb6857텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)