우들 데이터(Oodle Data) 는 .pak
파일과 IOStore 파일에 대한 압축 포맷을 제공합니다. 기본적으로 활성화되어야 하는 플러그인으로 제공됩니다.

IOStore 파일과 함께 우들 데이터를 사용하기 위한 파라미터와 세팅은 언리얼 엔진 에서 .pak 파일을 사용하기 위한 파라미터 및 세팅과 같습니다.
패키징 시, 메서드와 레벨에 대한 특정 세팅이 나열된 다음과 비슷한 로그가 표시되면 우들 데이터를 사용하고 있다는 뜻입니다.
Oodle v2.9.0 initializing with method=Kraken, level=3=Fast
패키지 파일을 디코딩하기 위해 우들 데이터가 필요한 다른 상황에서는 로그에 다음과 같은 내용이 표시됩니다.
LogPluginManager: Mounting plugin OodleData
우들 데이터의 핵심 개념
우들 데이터는 출력을 관리하는 두 개의 컨트롤을 노출합니다. 바로 압축 메서드 와 압축 레벨 입니다. 이 두 컨트롤의 차이를 이해해야 합니다.
-
압축 메서드 는 데이터가 줄어드는 크기와 디코딩의 속도를 절충합니다.
-
압축 레벨 은 데이터 인코딩에 걸리는 시간을 결정합니다.
런타임 시 디코더는 어떤 메서드가 사용되었는지 알 필요가 없습니다.
압축 메서드
각기 다른 수준의 압축 및 디코딩 속도를 나타내는 네 가지 압축 메서드를 사용할 수 있습니다.
메서드 | 설명 |
---|---|
Kraken | 괜찮은 디코딩 속도에 높은 압축률을 보여주며, 보통 이 메서드를 디폴트로 사용합니다. |
Mermaid | Kraken보다 압축률이 더 낮고 디코딩 속도가 더 빠릅니다. CPU 사용이 제한적일 때나 CPU 성능이 낮은 플랫폼에서 효과적입니다. |
Selkie | Mermaid보다 압축률이 더 낮고 디코딩 속도가 더 빠릅니다. |
Leviathan | Kraken보다 압축률이 더 높고 디코딩 속도가 더 느립니다. |
압축 레벨(에포트 레벨)
압축 레벨은 -4에서 9 사이의 숫자로 인코딩 속도를 나타냅니다. 압축 레벨 값은 다음과 같이 표현됩니다.
레벨 | 이름 | 기타 정보 |
---|---|---|
-4 | HyperFast4 | |
-3 | HyperFast3 | |
-2 | HyperFast2 | |
-1 | HyperFast1 | |
0 | 없음 | 단순히 원시 바이트를 복사합니다. |
1 | SuperFast | |
2 | VeryFast | |
3 | Fast | 일상적으로 사용하기 좋습니다. |
4 | Normal | |
5 | Optimal1 | |
6 | Optimal2 | 권장 기준 최적 인코더입니다. |
7 | Optimal3 | |
8 | Optimal4 | |
9 | Optimal5 |
우들 데이터 활성화하기
다양한 오버라이드 때문에 여러 위치에서 우들 데이터를 활성화하고 환경설정해야 합니다. 우들 데이터를 활성화하는 기준 방법은 프로젝트 세팅(Project Settings) 창에서 패키징(Packaging) 세팅을 사용하는 것입니다.
프로젝트 패키징 세팅에서 고급(Advanced) 파라미터를 펼치면 다음과 같은 세팅이 표시됩니다.

[/Script/UnrealEd.ProjectPackagingSettings]
헤더 아래의 BaseGame.ini
파일에서 이러한 세팅을 직접 편집할 수도 있습니다.
프로퍼티/세팅
다음은 프로젝트 패키징 영역의 관련 프로퍼티와 그에 상응하는 .ini
파일 세팅입니다.
프로퍼티 | .ini 파일 세팅 | 설명 |
---|---|---|
압축된 쿠킹 패키지 생성(Create compressed cooked packages) | bCompressed | 활성화하면, 언리얼은 오버라이드되지 않는 한 출력 패키지를 압축합니다. |
Pak 파일 압축 포맷(Pak File Compression Format(s)) | PakFileCompressionFormats | 압축 포맷의 목록을 설정합니다. 우들 데이터를 사용하려면 이 프로퍼티를 Oodle로 설정합니다. |
Pak 파일 압축 명령줄 옵션(Pak File Compression Commandline Options) | PakFileAdditionalCompressionOptions | 압축 포맷에 전달할 추가 옵션을 지정합니다. 우들의 경우, -compressionblocksize=256KB 로 설정하는 것이 좋습니다. |
하드웨어 오버라이드 없이 이 압축 포맷 사용(Use this Compression Format not hardware override) | bForceUseProjectCompressionFormatIgnoreHardwareOverride | 이 프로퍼티를 설정하면 DataDrivenPlatformInfo.ini 파일의 HardwareCompressionFormat 을 무시하고 이 세팅을 사용합니다. 따라서 위의 세팅을 사용하여 구성하고 HardwareCompressionFormat 을 사용하여 무시한 다음, 이 세팅으로 그것을 무시하고 시작 위치로 돌아갈 수 있습니다. |
Pak 파일 압축 메서드(Pak File Compression Method) | PakFileCompressionMethod | 위에서 설명한 대로 압축 메서드(예: Kraken)를 지정합니다. |
디버그 및 개발용 인코더 압축 레벨(Encoder Effort Level for Debug & Development) | PakFileCompressionLevel_DebugDevelopment | 인코딩에 소요되는 시간을 지정합니다. 위에서 설명한 압축 레벨 세팅의 숫자입니다(디폴트: 3). |
테스트 및 출시용 인코더 압축 레벨(Encoder Effort Level for Test & Shipping) | PakFileCompressionLevel_TestShipping | 인코딩에 소모되는 시간을 지정합니다. 위에서 설명한 압축 레벨 세팅의 숫자입니다(디폴트: 5). |
배포용 인코더 압축 레벨(Encoder Effort Level for Distribution) | PakFileCompressionLevel_Distribution | 인코딩에 소요되는 시간을 지정합니다. 위에서 설명한 압축 레벨 세팅의 숫자입니다(디폴트: 7). |
예시 세팅
BaseGame.ini
파일에서 대표적인 세팅 세트는 다음과 같습니다.
[/Script/UnrealEd.ProjectPackagingSettings]
bCompressed=True
PakFileCompressionFormats=Oodle
PakFileAdditionalCompressionOptions=-compressionblocksize=256KB
PakFileCompressionMethod=Kraken
PakFileCompressionLevel_Distribution=7
PakFileCompressionLevel_TestShipping=5
PakFileCompressionLevel_DebugDevelopment=3
bForceUseProjectCompressionFormatIgnoreHardwareOverride=False
플랫폼별 예외
주어진 타깃 플랫폼에서 하드웨어 데이터 압축을 지원하는 경우, 플랫폼의 환경설정 디렉터리에 있는 DataDrivenPlatformInfo.ini
파일에 노출되어 있을 것입니다. 예를 들면 다음과 같습니다.
[DataDrivenPlatformInfo]
HardwareCompressionFormat=Zlib
그렇지만, 하드웨어 데이터 압축을 우회하여 우들 데이터를 사용하고 싶다면, 플랫폼의 (Platform)Game.ini
파일 세팅에서 bForceUseProjectCompressionFormatIgnoreHardwareOverride=True
를 설정할 수 있습니다.
이렇게 하면 하드웨어 데이터 압축(이 예시에서는 zlib)이 아닌 우들 데이터를 사용하여 타깃 플랫폼에 대한 패키징이 이루어집니다.