완성은 '다른 사람이 실행할 수 있을 때' 시작된다
지금까지 우리는 작은 3D 수집 게임을 조금씩 만들었다. 플레이어 캐릭터가 움직이고, 카메라가 따라오고, 동전을 먹으면 점수가 오르며, HUD와 사운드, 이펙트가 반응한다. 이제 마지막 단계는 이 프로젝트를 에디터 안에서만 실행하는 것이 아니라, 다른 사람이 실행할 수 있는 파일로 만드는 것이다.
언리얼 엔진에서는 이 과정을 패키징(Packaging)이라고 부른다. 패키징은 프로젝트에 들어 있는 맵, 블루프린트, 머티리얼, 사운드, UI 같은 에셋을 실행 가능한 게임 형태로 묶는 작업이다. 우리가 에디터에서 누르던 Play 버튼은 개발 중 확인용 실행이고, 패키징된 게임은 에디터 없이도 실행할 수 있는 결과물이다.
처음부터 완벽한 게임을 만들 필요는 없다. 중요한 것은 "작게 만들고, 끝까지 실행해 보고, 다른 사람에게 전달해 보는 경험"이다. 이 한 번의 마무리 과정이 다음 프로젝트를 훨씬 쉽게 만들어 준다.
AI 생성 이미지
패키징 전 전체 흐름 점검하기
패키징은 마지막 버튼이지만, 버튼을 누르기 전에 게임이 처음부터 끝까지 이어지는지 먼저 확인해야 한다. 에디터에서 Play를 누르고 아래 흐름을 차례대로 테스트하자.
플레이 흐름 체크리스트
게임을 시작하면 의도한 레벨에서 시작되는가?
플레이어 캐릭터가 올바른 위치에 생성되는가?
WASD 이동, 마우스 카메라 회전, Space 점프가 작동하는가?
추가로 만든 F 플래시라이트, Esc 일시정지 같은 입력이 작동하는가?
동전에 닿으면 점수가 증가하는가?
동전 획득 사운드와 이펙트가 너무 늦거나 과하지 않게 재생되는가?
HUD의 점수 표시가 실제 점수와 맞는가?
모든 동전을 모으면 클리어 화면이 뜨는가?
일시정지 메뉴에서 Resume, Quit 같은 버튼이 의도대로 작동하는가?
화면에 불필요한
Print String디버그 문구가 남아 있지 않은가?
한 번 통과했다고 바로 끝내지 말고, 에디터의 Play In Editor뿐 아니라 가능하면 Standalone Game으로도 실행해 보자. Standalone Game은 에디터 창 안이 아니라 별도 게임 창으로 실행하는 방식이라 실제 실행 파일에 조금 더 가까운 환경을 확인할 수 있다.
자주 놓치는 부분은 "처음에는 되는데 다시 시작하면 안 되는 기능"이다. 예를 들어 점수가 초기화되지 않거나, 일시정지 후 입력이 돌아오지 않거나, 클리어 위젯이 남아 있는 경우가 있다. 이런 문제는 패키징 후에 발견하면 더 번거롭다. 지금 고치는 것이 가장 빠르다.
Project Settings에서 기본 정보를 확인하기
패키징 전에 반드시 확인할 곳은 Project Settings다. 상단 메뉴에서 Edit > Project Settings를 연다. 여기에는 게임 이름, 시작 맵, 입력, 패키징 방식 같은 중요한 설정이 모여 있다.
게임 이름과 설명 정리하기
왼쪽 목록에서 Project > Description 항목을 확인한다. 버전에 따라 보이는 항목 이름은 조금 다를 수 있지만, 보통 다음 정보를 정리할 수 있다.
Project Name: 게임 이름
Company Name: 제작자 또는 팀 이름
Project Version: 버전
Description: 짧은 설명
처음 만든 게임이라면 이름은 거창할 필요가 없다. 예를 들어 Coin Collector, My First Unreal Game, Small Coin Adventure처럼 짧고 알아보기 쉽게 정하면 된다. 한글 이름도 가능하지만, 폴더와 파일 경로는 영어와 숫자를 중심으로 두는 것이 오류를 줄이는 데 안전하다.
시작 맵 설정하기
다음으로 Project > Maps & Modes를 확인한다. 여기서 중요한 항목은 Game Default Map이다. Game Default Map은 패키징된 게임을 실행했을 때 처음 열리는 레벨이다.
예를 들어 우리가 만든 최종 레벨이 M_CoinLevel이라면 다음처럼 맞춘다.
Editor Startup Map: 에디터를 열 때 기본으로 열 맵
Game Default Map: 실제 게임 실행 시 시작할 맵
둘 다 최종 플레이 맵으로 맞춰 두면 초보자에게 가장 안전하다. Game Default Map이 다른 테스트 맵으로 되어 있으면, 패키징은 성공했는데 실행해 보니 빈 맵이나 예전 맵이 나오는 일이 생긴다.
또한 Default GameMode가 의도한 GameMode인지 확인한다. Third Person 템플릿을 기반으로 만들었다면 플레이어 캐릭터가 제대로 생성되는 GameMode가 연결되어 있어야 한다. 특정 레벨에서만 GameMode를 따로 바꿨다면, 레벨의 World Settings도 함께 확인하자.
입력 설정 확인하기
이 책에서는 Enhanced Input을 사용했다. Enhanced Input은 키보드 키를 기능에 바로 연결하기보다, IA_Move, IA_Jump, IA_Flashlight 같은 Input Action과 IMC_Default 같은 Input Mapping Context를 통해 조작을 구성하는 방식이다.
패키징 전에는 다음을 확인한다.
IA_Move,IA_Look,IA_Jump,IA_Flashlight,IA_Pause에셋이 삭제되지 않았는가?IMC_Default에 필요한 키가 매핑되어 있는가?캐릭터의 BeginPlay에서
Add Mapping Context가 실행되는가?일시정지 메뉴를 닫은 뒤 입력 모드가 게임 입력으로 돌아오는가?
에디터에서는 우연히 작동하는 것처럼 보였는데, 패키징 후 입력이 안 되는 경우도 있다. 대부분은 Mapping Context 등록이 빠졌거나, UI 입력 모드가 게임 입력을 막고 있는 경우다.
Windows용으로 패키징하기
이제 실제 패키징을 해 보자. 언리얼 엔진 5에서는 상단의 Platforms 메뉴에서 대상 플랫폼과 빌드 구성을 선택해 패키징할 수 있다. Windows용 게임은 보통 Platforms > Windows > Package Project 흐름으로 만든다.1
패키징 전에 Ctrl+Shift+S 또는 Save All로 모든 에셋을 저장한다. 저장하지 않은 블루프린트나 맵이 남아 있으면 최신 변경 사항이 결과물에 반영되지 않을 수 있다.
Development와 Shipping 선택하기
패키징할 때 자주 보이는 설정 중 하나가 Build Configuration이다. 쉽게 말해 "테스트용으로 만들 것인가, 배포용에 가깝게 만들 것인가"를 정하는 옵션이다.
Development: 테스트용 빌드다. 로그와 디버깅 정보가 비교적 남아 있어 문제를 찾기 쉽다.
Shipping: 최종 배포용 빌드다. 불필요한 디버그 요소가 줄어들고, 실제 배포에 더 가깝다.
처음 패키징할 때는 Development를 추천한다. 패키징이 성공하고, 실행도 잘 되고, 가족이나 친구에게 보여 줄 준비가 되면 그다음에 Shipping으로 다시 만들어 보자. 초보자에게는 바로 Shipping으로 가는 것보다 Development로 문제를 먼저 확인하는 흐름이 안전하다.2
패키징 실행 순서
상단 메뉴에서
Platforms를 연다.Binary Configuration또는 비슷한 항목에서Development를 선택한다.Windows항목을 찾는다.Package Project를 선택한다.결과물을 저장할 폴더를 고른다.
패키징이 끝날 때까지 기다린다.
결과물 폴더는 프로젝트 내부의 Content 폴더 안에 만들지 말자. 예를 들어 다음처럼 별도 폴더를 추천한다.
D:/UnrealBuilds/CoinCollector_Windows_Dev경로는 짧고 영어로 두는 것이 좋다. 바탕 화면/새 폴더/최종/진짜최종처럼 긴 한글 경로를 쓰면 나중에 파일 경로 문제를 만나기 쉽다.
생성된 파일 구조 확인하기
패키징이 끝나면 선택한 폴더 안에 Windows 실행용 파일들이 만들어진다. 구조는 엔진 버전과 설정에 따라 조금 다르지만, 보통 다음과 비슷하다.
CoinCollector_Windows_Dev/
CoinCollector.exe
Engine/
CoinCollector/
Binaries/
Content/
Paks/가장 먼저 확인할 것은 .exe 파일이다. 이 파일을 더블 클릭하면 게임이 실행되어야 한다. 단, 다른 사람에게 공유할 때는 .exe 파일 하나만 보내면 안 된다. 주변 폴더와 데이터 파일이 함께 있어야 게임이 정상 실행된다.
공유할 때는 패키징된 최상위 폴더 전체를 압축한다.
CoinCollector_Windows_Dev.zip그리고 압축을 풀어 .exe를 실행하라고 안내한다. 실행 파일만 따로 꺼내면 필요한 데이터 파일을 찾지 못해 실행되지 않을 수 있다.
패키징 실패 로그 읽기
패키징이 실패해도 당황하지 말자. 패키징은 프로젝트 전체를 검사하는 과정이라, 에디터에서 그냥 넘어가던 문제를 더 엄격하게 발견하기도 한다. 실패했을 때는 화면의 마지막 줄만 보지 말고 Output Log를 열어 원인을 찾는다.
가장 먼저 할 일은 로그에서 다음 단어를 검색하는 것이다.
Error
Failed
Unknown Cook Failure
SDK
BlueprintCook은 게임에 필요한 에셋을 실행 가능한 형태로 준비하는 과정이다. Unknown Cook Failure는 말 그대로 조리 과정에서 문제가 났다는 뜻인데, 실제 원인은 그보다 위쪽 로그에 적혀 있는 경우가 많다. 그래서 맨 아래 문장만 보지 말고, 첫 번째 Error 근처를 찾아야 한다.
자주 만나는 원인들
첫째, Windows SDK나 빌드 도구가 없는 경우다. 로그에 Windows SDK, toolchain, Visual Studio 같은 단어가 보이면 개발 도구가 부족한 상황일 수 있다. 이때는 Visual Studio Build Tools 또는 Windows SDK 설치가 필요할 수 있다.
둘째, 블루프린트 컴파일 오류다. 에디터에서는 열어 보지 않은 블루프린트에 오류가 숨어 있다가 패키징 때 드러날 수 있다. Blueprint Compile Error가 보이면 해당 블루프린트를 열고 Compile을 눌러 오류 노드를 확인한다.
셋째, 시작 맵이 잘못되었거나 패키징에 포함되지 않은 경우다. 실행은 되는데 빈 화면이 나오거나 다른 맵이 열린다면 Maps & Modes의 Game Default Map을 다시 확인한다. 필요하다면 Project Settings > Packaging에서 패키징에 포함할 맵 목록을 지정할 수 있다. 맵을 명시적으로 포함하면 원하지 않는 테스트 맵이 들어가거나, 필요한 맵이 빠지는 문제를 줄이는 데 도움이 된다.1
넷째, 파일 경로가 너무 길거나 특수 문자가 많은 경우다. 프로젝트와 빌드 경로는 짧게 유지하자. 예를 들어 D:/UEProjects/CoinGame처럼 단순한 경로가 안전하다.
다섯째, 참조가 깨진 에셋 문제다. 지난 장에서 배운 것처럼 파일 이동은 윈도우 탐색기가 아니라 Content Browser에서 해야 한다. 의심되는 폴더가 있다면 우클릭 후 Fix Up Redirectors를 실행하고, 다시 Save All을 한 뒤 패키징한다.
공유 전에 README 만들기
게임을 친구나 가족에게 보낼 때는 짧은 안내 문서를 함께 넣자. 거창한 매뉴얼이 아니라 README.txt 하나면 충분하다. 게임을 만든 사람에게는 당연한 조작도, 처음 실행하는 사람에게는 전혀 당연하지 않다.
예시는 다음과 같다.
Coin Collector
실행 방법
1. 압축 파일을 풉니다.
2. CoinCollector.exe를 실행합니다.
게임 목표
- 맵에 있는 동전을 모두 모으면 클리어됩니다.
조작법
- 이동: W A S D
- 카메라 회전: 마우스
- 점프: Space
- 플래시라이트: F
- 일시정지: Esc
알려진 문제
- 처음 실행할 때 Windows 보안 경고가 뜰 수 있습니다.
- 실행 파일만 따로 옮기면 게임이 실행되지 않을 수 있습니다. 폴더 전체를 유지해 주세요.
제작자
- Your Name
- Version 1.0이 문서는 단순하지만 효과가 크다. 플레이어가 무엇을 해야 하는지 바로 알 수 있고, 실행이 안 될 때 어떤 실수를 피해야 하는지도 알려 준다.
첫 결과물을 남기기
마지막으로 패키징된 게임을 직접 실행해 다시 한 번 끝까지 플레이해 보자. 에디터에서는 괜찮았지만 패키징된 게임에서는 해상도, 입력, 사운드 크기, 시작 맵이 다르게 느껴질 수 있다.
최종 확인은 짧게 정리하면 된다.
압축을 풀고 실행했는가?
에디터 없이 실행되는가?
시작부터 클리어까지 막히지 않는가?
조작법 문서가 함께 들어 있는가?
다른 사람에게 보낼 폴더 전체를 압축했는가?
여기까지 왔다면 첫 게임은 완성된 것이다. 규모가 작아도 괜찮다. 중요한 것은 설치부터 프로젝트 생성, 레벨 제작, 블루프린트, 입력, UI, 사운드, 이펙트, 오류 해결, 패키징까지 한 바퀴를 직접 돌았다는 점이다.
다음 프로젝트에서는 더 큰 맵, 다른 캐릭터, 새로운 아이템, 적 AI, 스테이지 선택 메뉴를 추가할 수 있다. 하지만 시작은 늘 같다. 작은 기능을 만들고, 실행해 보고, 문제가 생기면 로그를 읽고, 다시 고친다. 그리고 끝까지 패키징한다.
언리얼 엔진을 배우는 가장 좋은 방법은 완성 가능한 크기의 게임을 계속 만들어 보는 것이다. 이번 첫 결과물이 그 출발점이다.
참고
1How to package Unreal Engine 5 Projects for Distribution
2Mastering Project Packaging Settings & Build Configurations in Unreal Engine 5
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.