유니티 빌드와 상반되는 언리얼 프로젝트 기반 빌드 구조를 파악해보자
🔥 1. 쿠킹 (Cooking)
정의
- 쿠킹은 개발 중인 리소스(에셋)들을 플레이어가 실제로 사용할 수 있도록 가공하는 단계
주요 내용:
-
에디터에서 사용하는 원본 에셋(예: .uasset, 텍스처, 모델, 사운드 등)을 런타임에서 읽기 쉬운 포맷으로 변환
-
사용하지 않는 리소스를 제외하고 필요한 것만 포함
-
특정 플랫폼(Windows, Android, iOS 등)에 맞게 최적화
예시 작업:
- 텍스처 압축
- 블루프린트 컴파일
- 머티리얼 쉐이더 전처리
- LOD, Mesh 간소화
📦 2. 패키징 (Packaging)
정의:
- 쿠킹된 결과물을 가지고 최종 실행 파일(EXE, APK, IPA 등)이나 설치 가능한 형식으로 묶는 단계
주요 내용:
- 쿠킹된 콘텐츠 + 바이너리(코드) + 설정 파일 등을 하나의 패키지로 생성
- 플랫폼별로 패키징 방식이 다름 (예: 윈도우는 .exe, 안드로이드는 .apk 등)
- 디버그/릴리즈/디스트리뷰션 빌드 구분
예시 작업:
- 실행 파일 생성
- 필수 DLL 포함
- 플랫폼 설정 적용 (권한, 해상도, Input 등)
- 암호화 또는 서명 (특히 모바일에서 중요)
✅ 요약 흐름도
[개발 리소스 / 코드]
↓
🔥 쿠킹
(런타임 최적화 및 변환)
↓
📦 패키징
(실행 파일로 묶기)
↓
🎮 유저가 실행할 수 있는 빌드 결과물
🎮 언리얼 엔진 빌드 프로세스 (쿠킹 → 패키징)
🔥 1. 쿠킹 (Cooking)
목적:
- 개발 중에 쓰던 리소스를 게임 실행 시 최적화된 포맷으로 변환하는 과정.
작업 내용:
- .uasset → 플랫폼에 맞는 cooked asset으로 변환 (예: PAK 파일 내 binary 포맷)
- 블루프린트 → 바이트코드로 컴파일
- 쉐이더 미리 컴파일
- 모바일의 경우 텍스처 포맷을 ASTC/ETC2 등으로 변경
- Level Streaming, LOD 등 런타임 효율 고려한 구조로 최적화
📦 2. 패키징 (Packaging)
목적:
- 쿠킹된 결과물 + 엔진 바이너리 + 설정 파일을 하나로 묶어 배포 가능한 실행 파일(빌드)로 만드는 과정
작업 내용:
- 실행 파일 (YourGame.exe, YourGame.apk 등) 생성
- 필요한 DLL, 라이브러리, 리소스 묶기
- 설정 파일 포함 (config, ini, manifest 등)
- 모바일의 경우 APK 서명도 포함
- Pak 파일 생성 (리소스를 묶는 압축 파일)
패키징 모드 종류:
- Development: 디버깅 가능, 로그 풍부, 성능 저하
- Shipping: 릴리즈용, 최적화, 로그 제한, 보안 강화
- Test: QA 용, 성능 측정 가능
언리얼 에디터에서 경로:
File → Package Project → [플랫폼 선택]
결과물:
- /Saved/StagedBuilds/ 또는 지정된 아카이브 경로
- EXE, APK 등 실행 파일과 함께 PAK 리소스 포함
💡 보너스: 쿠킹/패키징 자주 쓰는 옵션 정리
옵션 설명
-cook 쿠킹 실행
-stage 쿠킹 결과를 패키징할 준비
-package 실제로 묶는 패키징 단계
-archive 빌드 결과를 압축된 형태로 내보냄
-compressed Pak 파일 압축
-encrypt Pak 파일 암호화
-distribution 스토어 배포용 최종 빌드 (Shipping 빌드와 함께 사용)