이 절에서는 프로젝트를 효과적으로 빌드하고 다양한 플랫폼에 배포하는 기본적인 프로세스를 살펴보겠습니다.
개발, 테스트, 출시 빌드 구성
언리얼 엔진은 다양한 빌드 구성을 제공합니다.
개발 빌드 : 디버깅 정보 포함, 최적화 최소화
테스트 빌드 : 일부 최적화 적용, 프로파일링 정보 포함
출시 빌드 : 최대 최적화, 디버깅 정보 제거
빌드 구성 설정 예시 (Build.cs)
다양한 플랫폼에 대한 빌드 설정
각 플랫폼별 빌드 설정
PC
콘솔 (예 : PlayStation)
모바일
언리얼 빌드 툴 및 언리얼 헤더 툴 활용
UBT는 프로젝트 빌드를, UHT는 언리얼 엔진의 리플렉션 시스템을 위한 코드 생성을 담당합니다.
UBT 커맨드 라인 사용 예시
UHT는 UCLASS(), USTRUCT(), UFUNCTION() 등의 매크로를 처리합니다.
쿠킹 프로세스
쿠킹은 게임 콘텐츠를 대상 플랫폼에 최적화하는 과정입니다.
패키징 옵션 설정
프로젝트 설정에서 패키징 옵션을 구성할 수 있습니다.
Edit > Project Settings > Packaging
맵 & 모드, 쿠킹, 스테이징 등의 옵션 설정
배포용 빌드 최적화 기법
사용하지 않는 에셋 제거
쉐이더 사전 컴파일
텍스처 압축 최적화
코드 예시 (Build.cs)
자동화된 빌드 파이프라인 구축
Jenkins나 TeamCity와 같은 CI/CD 도구를 사용하여 자동화된 빌드 파이프라인을 구축할 수 있습니다.
Jenkins 파이프라인 스크립트 예시
빌드 버전 관리 전략
시맨틱 버저닝 사용 (MAJOR.MINOR.PATCH)
빌드 번호 자동 증가
DefaultGame.ini 예시
빌드 스크립트에서 버전 증가
다양한 배포 채널에 대한 배포 프로세스
스팀
Steamworks SDK 통합
스팀 빌드 툴을 사용하여 디포 생성 및 업로드
에픽 게임즈 스토어
에픽 게임즈 스토어 SDK 통합
에픽 게임즈 런처를 통한 빌드 업로드
콘솔 디지털 스토어
각 콘솔 제조사의 SDK 및 인증 프로세스 따르기
제조사 제공 툴을 사용하여 빌드 제출
대규모 프로젝트의 효율적인 빌드 관리
모듈화 : 프로젝트를 여러 모듈로 분리
병렬 빌드 활용
분산 빌드 시스템 구축 (예 : Incredibuild)
Build.cs 예시
빌드 시간 최적화 전략
프리컴파일드 헤더(PCH) 최적화
Unity 빌드 활용
불필요한 ##include 제거
PCH 최적화 예시
Unity 빌드 설정 (Build.cs)
언리얼 엔진 C++ 프로젝트의 빌드 및 배포 프로세스는 복잡하지만 체계적인 접근으로 효율적으로 관리할 수 있습니다. 개발, 테스트, 출시 단계에 따라 적절한 빌드 구성을 사용하고, 각 대상 플랫폼의 특성을 고려한 빌드 설정을 적용해야 합니다.
언리얼 빌드 툴(UBT)과 언리얼 헤더 툴(UHT)은 빌드 프로세스의 핵심 도구로, 이들을 효과적으로 활용하면 빌드 과정을 크게 최적화할 수 있습니다. 쿠킹 프로세스를 통해 게임 콘텐츠를 대상 플랫폼에 최적화하고, 적절한 패키징 옵션을 설정하여 최종 배포 파일을 생성합니다.
자동화된 빌드 파이프라인을 구축하면 반복적인 빌드 작업을 효율적으로 관리할 수 있습니다. CI/CD 도구를 활용하여 코드 변경사항이 발생할 때마다 자동으로 빌드, 테스트, 패키징 과정을 수행할 수 있습니다.
빌드 버전 관리는 프로젝트의 진행 상황을 추적하고 문제 발생 시 특정 버전으로 롤백하는 데 중요합니다. 시맨틱 버저닝과 같은 체계적인 버전 관리 전략을 채택하고, 빌드 번호를 자동으로 증가시키는 시스템을 구현하는 것이 좋습니다.
다양한 배포 채널에 대한 프로세스는 각 플랫폼의 요구사항에 맞춰 조정해야 합니다. 스팀, 에픽 게임즈 스토어, 콘솔 디지털 스토어 등 각 플랫폼별로 SDK 통합, 빌드 업로드, 인증 프로세스 등이 다르므로 이에 대한 이해와 준비가 필요합니다.
대규모 프로젝트의 경우, 모듈화, 병렬 빌드, 분산 빌드 시스템 등을 활용하여 빌드 시간을 관리해야 합니다. 프리컴파일드 헤더 최적화, Unity 빌드 활용, 불필요한 ##include 제거 등의 기법을 통해 빌드 시간을 단축할 수 있습니다.