패키징 및 빌드 설정
이전 절에서 게임 배포를 위한 기본적인 환경 설정들을 최종 점검하는 방법을 배웠습니다. 이제 실제로 언리얼 엔진 프로젝트를 실행 가능한 게임 파일로 변환하는 핵심 과정인 패키징(Packaging) 과 관련된 상세 설정들에 대해 알아볼 차례입니다. 패키징은 개발 환경에서 구동되던 게임을 특정 플랫폼(PC, 모바일, 콘솔 등)에서 독립적으로 실행될 수 있는 형태로 만드는 과정입니다. 이 과정에서 다양한 빌드 설정을 조절함으로써 최종 게임의 파일 크기, 성능, 로딩 시간, 그리고 보안 수준이 결정됩니다. '나 혼자 언리얼 기본' 교재를 통해 여러분이 언리얼 엔진의 패키징 및 빌드 설정을 능숙하게 다루고, 이를 통해 목표 플랫폼에 최적화된 게임 빌드를 생성할 수 있도록 안내해 드리겠습니다. 마치 복잡한 제품의 생산 라인을 관리하듯, 여러분의 게임 빌드 과정을 체계적으로 제어해 봅시다.
패키징 및 빌드의 이해
패키징은 언리얼 엔진 프로젝트를 플레이어가 설치하고 실행할 수 있는 최종 게임 파일(예: .exe
파일, .apk
파일)로 변환하는 일련의 과정입니다. 이 과정에는 쿠킹(Cooking), 링크(Linking), 패키징(Packaging) 등의 단계가 포함됩니다.
- 쿠킹 (Cooking): 개발 환경에서 사용하는 에셋(메시, 텍스처, 머티리얼, 블루프린트 등)을 특정 플랫폼에서 가장 효율적으로 로드하고 사용할 수 있는 형태로 변환하는 과정입니다. 이 단계에서 불필요한 데이터가 제거되거나 압축됩니다.
- 링크 (Linking): 엔진 코드, 게임 코드, 외부 라이브러리 등을 하나로 묶어 실행 가능한 바이너리 파일을 생성합니다.
- 패키징 (Packaging): 쿠킹된 콘텐츠와 링크된 바이너리 파일을 하나의 패키지(예:
.pak
파일, 설치 프로그램)로 묶는 과정입니다.
패키징 설정 핵심 항목
파일(File) > 프로젝트 패키징(Package Project) > 설정(Settings...)
또는 편집(Edit) > 프로젝트 세팅(Project Settings) > 프로젝트(Project) > 패키징(Packaging)
메뉴에서 패키징 관련 설정을 조정할 수 있습니다.
빌드 구성 (Build Configuration)
가장 중요한 설정 중 하나로, 최종 빌드의 목적과 포함될 디버그 정보 수준을 결정합니다.
Development
(개발)- 디버그 정보가 포함되어 개발 및 테스트에 용이합니다.
- 최적화 수준이 낮아 파일 크기가 크고 성능이 저하될 수 있습니다.
- 콘솔 명령 및 디버그 기능(예:
Stat
명령어)이 활성화됩니다.
Shipping
(배포)- 최종 사용자에게 배포할 때 사용합니다.
- 최고 수준으로 최적화되어 파일 크기가 가장 작고 성능이 가장 좋습니다.
- 디버그 정보가 거의 제거되어 보안성이 높습니다.
- 콘솔 명령 및 디버그 기능이 대부분 비활성화됩니다.
DebugGame
(디버그 게임)Development
와 유사하지만, C++ 코드 디버깅에 필요한 정보가 더 많이 포함됩니다.- 성능은
Development
보다 약간 좋을 수 있습니다.
Debug
(디버그)- 가장 많은 디버그 정보가 포함되어 디버깅에 매우 용이하지만, 파일 크기가 매우 크고 성능이 가장 낮습니다. 일반적으로 사용되지 않습니다.
빌드 타겟 (Build Target)
프로젝트 세팅 > 프로젝트 > 패키징
또는파일 > 프로젝트 패키징
메뉴에서 선택할 수 있습니다.Game
: 일반적인 게임 실행 파일을 빌드합니다. (주로 사용)Client
: 네트워크 게임에서 클라이언트 전용 실행 파일을 빌드합니다.Server
: 네트워크 게임에서 전용 서버 실행 파일을 빌드합니다.
쿠킹 (Cooking) 설정
쿠킹은 최종 빌드에 포함될 콘텐츠를 효율적으로 만드는 과정입니다.
List of maps to include in a packaged build
(패키지 빌드에 포함할 맵 목록):- 필수 확인 사항: 게임에 사용되는 모든 맵(시작 맵, 플레이 맵, 로딩 맵 등)이 이 목록에 추가되어야 합니다. 누락되면 게임에서 해당 맵을 로드할 수 없습니다.
Cook everything in the project content directory
(프로젝트 콘텐츠 디렉토리의 모든 것을 쿠킹):- 활성화 시, 콘텐츠 폴더 내의 모든 자산을 빌드에 포함하려고 시도합니다. 간편하지만, 불필요한 자산이 포함될 수 있어 빌드 크기가 커질 수 있습니다.
- 비활성화 시, 위에 설정된 맵 목록과 맵에서 직접 참조되는 자산만 쿠킹합니다. 빌드 크기 최적화에 유리하지만, 동적으로 로드되는 자산이 누락될 수 있으므로 주의해야 합니다.
Generate chunk files
(청크 파일 생성)- 게임 데이터를 여러 개의 청크(
.pak
파일)로 분할하여 생성합니다. - 활용: 대용량 게임에서 특정 청크만 다운로드하거나, 패치를 용이하게 할 때 사용됩니다.
- 설정:
Project Settings > Game > Asset Manager
에서Primary Asset Types to Scan
과Chunk IDs
를 설정하여 어떤 자산이 어떤 청크에 포함될지 정의할 수 있습니다. (고급 기능)
- 게임 데이터를 여러 개의 청크(
패키징 설정
Use Pak File
(Pak 파일 사용)- 권장: 활성화하여 모든 게임 데이터를
.pak
파일이라는 하나의 압축된 아카이브 파일로 묶습니다. - 장점: 파일 수 감소, 파일 크기 감소, 디스크 I/O 최적화, 로딩 속도 향상, 데이터 암호화 및 무단 변조 방지에 유리합니다.
- 비활성화 시, 모든 자산이 원본 파일 형태로 배포됩니다.
- 권장: 활성화하여 모든 게임 데이터를
For Distribution
(배포용)- 활성화 시, 최종 배포를 위한 추가적인 최적화 및 보안 기능이 적용됩니다. (예: 추가적인 데이터 압축, 일부 디버그 정보 제거, 플랫폼별 서명 요구 사항 활성화)
- 특히 모바일 플랫폼에서 앱 스토어에 제출할 때 필수적입니다.
Encrypt Ini Files
/Encrypt Pak Index
/Encrypt UAsset Files
(Ini 파일 / Pak 인덱스 / UAsset 파일 암호화)- 활성화 시, 게임 데이터에 암호화를 적용하여 데이터 추출 및 변조를 어렵게 합니다. 보안이 중요한 게임에 유용합니다.
- 주의: 암호화를 사용하려면
Project Settings > Crypto
에서 암호화 키를 설정해야 합니다.
플랫폼별 패키징 설정 (재강조 및 추가)
각 대상 플랫폼에 따라 추가적인 설정이 필요합니다.
- Windows
Project Settings > Platforms > Windows
Target RHI
: 사용할 렌더링 API (DirectX 11, DirectX 12, Vulkan 등). 기본적으로 모든 지원 API를 포함하지만, 특정 API만 포함하여 빌드 크기를 줄일 수 있습니다.Packaging
섹션에서 런타임에 필요한Prerequisites
(예: Visual C++ Redistributable)를 설치 프로그램에 포함할지 여부를 설정할 수 있습니다.
- Android
Project Settings > Platforms > Android
APK Packaging
Build Configuration
:Shipping
Package for Google Play
: Google Play Store 배포 시 활성화 (AAB 파일 생성).ETC2 / DXT / ASTC
등Texture Compression Format
선택: 디바이스 호환성 및 파일 크기에 큰 영향을 미칩니다. 모든 디바이스를 지원하려면 여러 포맷을 포함해야 할 수 있습니다.Architectures to Package
:ARM64
활성화.
Signing
:Android SDK
설치 시 생성된Keystore
파일을 사용하여 앱 서명 정보를 설정해야 합니다. (이름, 별칭, 비밀번호 등)
- iOS
Project Settings > Platforms > iOS
Bundle Identifier
,Version Number
,Build Number
설정.Signing
: Apple Developer 계정에서 발급받은Certificate
및Provisioning Profile
을 설정해야 합니다.Supported Orientations
: 세로/가로 모드 지원 여부.
- 콘솔: 각 콘솔 제조사(Sony, Microsoft, Nintendo)의 개발자 프로그램에 등록하고, 해당 SDK가 설치된 환경에서 언리얼 엔진의 전용 빌드 파이프라인을 사용해야 합니다. 설정은 콘솔별로 다릅니다.
패키징 실행 및 문제 해결
패키징 실행
파일(File) > 프로젝트 패키징(Package Project) > [대상 플랫폼]
을 선택합니다.- 패키징이 시작되고
출력 로그(Output Log)
창에서 진행 상황을 확인할 수 있습니다. - 성공적으로 완료되면 지정된 출력 폴더에 실행 가능한 게임 파일이 생성됩니다.
일반적인 패키징 오류 및 해결책
쿠킹 실패 (Cook Failed)
- 원인: 콘텐츠에 오류(잘못된 참조, 누락된 자산, 컴파일 오류가 있는 블루프린트)가 있는 경우.
- 해결:
출력 로그
를 자세히 확인하여 어떤 자산 또는 블루프린트에서 오류가 발생했는지 파악하고 수정합니다.Fix Up Redirectors in Folder
(콘텐츠 브라우저에서 폴더 우클릭)를 주기적으로 실행하여 리다이렉터(Redirector) 오류를 수정합니다.
링킹 실패 (Linking Failed)
- 원인: C++ 코드에 컴파일 오류가 있거나, 종속성 문제가 있는 경우.
- 해결: Visual Studio에서 C++ 프로젝트를 빌드하여 오류를 먼저 해결합니다.
서명 실패 (Signing Failed)
(주로 모바일)- 원인: Android Keystore 정보가 잘못되었거나, iOS 인증서/프로비저닝 프로파일이 만료되었거나 잘못 설정된 경우.
- 해결: 플랫폼별 서명 설정(
Project Settings > Platforms > Android/iOS
)을 다시 확인하고, 유효한 서명 정보를 사용합니다.
맵 누락 (Map Not Found)
- 원인:
Project Settings > Packaging > List of maps to include in a packaged build
에 필요한 맵이 포함되지 않은 경우. - 해결: 해당 맵을 목록에 추가합니다.
- 원인:
크래시 (Crash)
발생- 원인: 패키징된 빌드 실행 중 크래시가 발생하면, 디버그 정보가 거의 없으므로
Shipping
빌드 대신Development
또는DebugGame
빌드로 패키징하여 문제를 재현하고 디버거를 붙여 원인을 파 찾습니다.
- 원인: 패키징된 빌드 실행 중 크래시가 발생하면, 디버그 정보가 거의 없으므로
패키징 및 빌드 설정은 게임 개발의 최종 결과물을 만들어내는 매우 중요한 과정입니다. 이 절에서 배운 빌드 구성, 쿠킹 설정, 플랫폼별 패키징 설정, 그리고 일반적인 문제 해결 방법을 숙지하여, 여러분의 게임이 목표 플랫폼에서 가장 최적화되고 안정적인 형태로 배포될 수 있도록 준비하세요. 완벽하게 준비된 빌드만이 플레이어에게 최고의 경험을 선사할 수 있습니다.