언리얼 C++ 프로그래밍

[언리얼 C++] 컨텐츠 쿠킹

언린이 2021. 8. 26. 09:46

언리얼 엔진에서는 컨텐츠 애셋을 내부적으로 사용되는 특정 포맷으로 저장하는데, 텍스처 데이터는 PNG, 오디오는 WAV입니다. 그러나 이러한 컨텐츠들은 다양한 플랫폼에 맞는 여러가지 포맷으로 변환해줘야 합니다.

해당 플랫폼이 독점 포맷을 사용한다던가, 언리얼의 애셋 저장 포맷을 지원하지 않는다던가, 메모리 또는 퍼포먼스 측면에서 더욱 효율적인 포맷이 존재한다던가 하는 이유 때문입니다.

이렇게 내부 포맷에서 플랫폼 전용 포맷으로 컨텐츠를 변환하는 프로세스를 쿠킹이라고 합니다.

 

 

1. 명령줄에서 컨텐츠 쿠킹하기

게임 데이터 쿠킹을 위해서 Cook 커맨드렛을 사용해야 합니다.

 

UE4Editor.exe <GameName or uproject> -run=cook -targetplatform=<Plat1>+<Plat2> [-cookonthefly] [-iterate] [-map=<Map1>+<Map2>]
UE4Editor-Cmd.exe <GameName> -run=cook -targetplatform=<Plat1>+<Plat2> [-cookonthefly] [-iterate] [-map=<Map1>+<Map2>]

기본적인 쿠킹 방법은 위와 같습니다.

커맨드렛으로 -run=cook을 붙여 실행해야 하며, 쿠킹할 플랫폼 역시 지정해줘야 합니다.

 

<Game>/Saved/Sandboxes/Cooked-<Platform>

지정된 플랫폼에 대해 쿠킹된 데이터가 생성되어 위 위치에 저장됩니다.

 

 

2. 컨텐츠 쿠킹 옵션

옵션 설명
-targetplatform=<Plat1>+<Plat2> 쿠킹할 플랫폼을 지정합니다. 사용가능한 플랫폼은 WindowsNoEditor, WindowsServer, LinuxServer, PS4, XboxOne, IOS, Android 입니다.
-iterate 쿠커가 철지난(OOD) 항목만 쿠킹하도록 설정합니다. 이 옵션이 없으면 샌드박스 디렉터리를 삭제하고 모든 것을 다시 쿠킹합니다.
-Map=<Map1>+<Map2>+... 빌드할 맵을 지정합니다.
-cookonthefly 쿠커가 서버 모드에서 시작되도록 합니다. 그러면 게임 접속을 기다리다가 쿠킹된 데이터를 요청에 따라 제공해 주는 서버가 실행됩니다. 이 옵션이 사용되면 게임은 명령줄에 -filehostip= 옵션을 붙여야 서버에 접속 가능합니다.
-MapIniSection=<ini file section> 맵 이름이 포함된 ini 파일 섹션을 지정합니다. 쿠커는 지정된 섹션에 지정된 모든 맵을 쿠킹합니다.
-UnVersioned 쿠킹된 패키지 전부를 버전 없이 저장합니다. 그러면 이들은 로드시 현재 버전인 것으로 간주됩니다.
-CookAll 모두 쿠킹합니다.
-Compressed 쿠킹된 패키지를 압축합니다.