우들 데이터

우들 데이터를 사용하여 사용자에게 최적으로 패키지 파일을 전달하는 방법에 대해 간략하게 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

추가 참고

우들 데이터(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)이 아닌 우들 데이터를 사용하여 타깃 플랫폼에 대한 패키징이 이루어집니다.