언리얼 엔진(UE) 은 애플리케이션의 메인 실행파일 이외의 에셋을 패키징 파일 형태로 제공할 수 있습니다. 그러려면 에셋을 청크로 정리해야 합니다. 청크란 쿠킹 프로세스를 통해 인식할 수 있는 에셋 파일의 그룹입니다. 이 튜토리얼에서는 언리얼 에디터 에서 에셋을 청크로 정리하는 방법을 설명합니다. 이 과정을 마치면 샘플 프로젝트로 패키징 파일을 만들어 패치 시스템으로 제공할 수 있습니다.
권장 에셋
이 가이드에서는 언리얼 마켓플레이스 에서 무료로 다운로드할 수 있는 Paragon 의 Crunch, Boris, Khaimera 에셋을 사용합니다. 여러 폴더로 안전하게 그룹화할 수 있는 에셋이 있다면 굳이 이 에셋을 사용하지 않아도 됩니다. Paragon 캐릭터 에셋 은 이미 UE에서 이 방식으로 정리해 두었기 때문에 테스트 예시로 사용하기 편합니다.

필수 구성
계속 진행하기 전에 ChunkDownloader 플러그인 구성하기를 살펴보아야 합니다.
레퍼런스 가이드에 설명된 대로 다음 단계를 따라야 합니다.
-
기본 템플릿(Blank template) 을 기반으로 하는 C++ 프로젝트 를 생성합니다. 이 프로젝트의 이름을 PatchingDemo 로 설정합니다.
-
플러그인(Plugins) 메뉴에서 ChunkDownloader 플러그인을 활성화합니다.
-
프로젝트 세팅(Project Settings) > 프로젝트(Project) > 패키징(Packaging) 에서 Pak 파일 사용(Use Pak File) 및 청크 생성(Generate Chunks) 을 활성화합니다.
-
Visual Studio 에서 프로젝트의
[프로젝트 이름]Build.cs
파일을 편집합니다. -
Visual Studio 프로젝트 파일을 생성합니다.
-
Visual Studio에서 프로젝트를 빌드합니다.
청킹 스키마 정리하기
청킹을 활성화하고 플러그인을 구성했다면 이제 에셋을 정리해서 청크로 패키징할 차례입니다.
청킹 프로세스에 대한 자세한 내용은 쿠킹 및 청킹을 참조하세요.
-
ParagonBoris 폴더에서 우클릭한 다음, 고급 에셋 생성(Create Advanced Asset) > 기타(Miscellaneous) 로 이동하여 새로운 데이터 에셋(Data Asset) 을 생성합니다.
-
프라이머리 에셋 라벨(PrimaryAssetLabel) 을 새 데이터 에셋의 베이스 클래스로 선택합니다.
C++에서 프라이머리 에셋 라벨의 하위 클래스를 만들면 기타 메타데이터를 추가할 수 있습니다. 블루프린트에서 만드는 프라이머리 에셋 라벨의 하위 클래스는 청킹 프로세스에서 작동하지 않습니다.
-
새 프라이머리 에셋 라벨의 이름을 Label_Boris 로 지정합니다.
-
Label_Boris 를 열고 아래 프로퍼티를 입력합니다.
프로퍼티 값 청크 ID(Chunk ID) 각 폴더의 고유한 값을 입력해야 합니다. 여기서는 Boris에게 1001 을 사용합니다. 우선순위(Priority) 0보다 큰 값이어야 합니다. 여기서는 모두 1 로 설정합니다. 쿠킹 규칙(Cook Rule) 항상 쿠킹(Always Cook) 으로 설정합니다. 내 디렉터리 내 라벨 에셋(Label Assets in My Directory) 활성화 로 설정합니다. 런타임 라벨 여부(Is Runtime Label) 활성화 로 설정합니다. -
ParagonCrunch 와 ParagonKhaimera 에도 1~4단계를 반복합니다. 이 예시에서는 Crunch와 Khaimera의 ChunkID 를 각각 1002 와 1003 으로 설정합니다.
-
프로젝트의 콘텐츠를 패키징하거나 쿠킹합니다.
최종 결과
모두 올바르게 구성했다면 UE의 패키징이 끝났을 때 빌드 디렉터리의 /Windows/PatchingDemo/Content/Paks
에서 패키징 파일을 확인할 수 있습니다. UE는 지정한 Chunk ID에 따라 각 파일에 이름을 붙입니다. 각 파일에는 캐릭터 세 명의 에셋이 들어 있을 것입니다.

툴(Tools) > 검사(Audit) > 에셋 검사(Asset Audit) 를 클릭하면 표시되는 에셋 검사 창에서도 청크를 볼 수 있습니다.

에셋 검사에 대한 자세한 내용은 쿠킹 및 청킹에서 확인할 수 있습니다.
