프로젝트 설정과 기본 옵션
입력·렌더링·맵·패키징·플랫폼에 적용되는 프로젝트 설정을 구분하고 팀과 빌드가 공유할 기준값을 정합니다.
앞 글에서 바꾼 에디터 환경설정(Editor Preferences)은 이 컴퓨터에서 일하는 사람 개인의 작업 방식을 정했습니다. 이번에는 프로젝트 전체의 규칙을 정할 차례입니다. 프로젝트 설정(Project Settings)은 지금 프로젝트의 입력과 렌더링, 시작 맵, 패키징처럼 그 프로젝트를 여는 모든 사람과 만들어지는 결과물에 함께 적용되는 값을 정합니다. 그래서 이 설정을 정확히 이해해야 팀원마다 결과가 달라지거나, 에디터에서는 되는데 빌드에서는 안 되는 일을 줄일 수 있습니다.
이 글에서는 프로젝트 설정 창의 주요 카테고리를 살펴보고, 특히 헷갈리기 쉬운 시작 맵 설정을 그림으로 구분합니다. 그다음 설정을 바꿀 때 주의할 점과 자주 쓰는 예를 정리합니다.
프로젝트 설정 창 열기
프로젝트 설정 창은 에디터 환경설정과 비슷하게 위쪽 메뉴의 Edit에서 Project Settings를 눌러 엽니다. 왼쪽에 카테고리가 나열되어 있고, 위쪽의 검색창으로 설정 이름을 바로 찾을 수 있습니다. 보이는 항목은 엔진 버전과 켜 둔 플러그인, 대상 플랫폼에 따라 달라지므로, 본문의 항목이 보이지 않으면 검색창에 이름을 넣어 찾습니다.
프로젝트 설정은 렌더링, 입력, 맵, 플랫폼 옵션이 서로 영향을 주기 때문에, 하나를 바꿀 때 무엇이 함께 달라지는지 확인하며 다뤄야 합니다. 아래에서는 게임 개발에서 자주 다루는 항목을 카테고리별로 살펴봅니다.
Project 카테고리: 이름, 맵, 패키징
Description
Description에는 프로젝트의 이름(Project Name)과 버전(Project Version), 설명, 홈페이지 주소, 라이선스 정보 같은 기본 정보를 적습니다. 프로젝트 버전은 나중에 패치를 배포할 때 어느 빌드인지 구분하는 데 쓰이므로, 버전 관리 및 패치 적용에서 다시 다룹니다.
Maps & Modes
Maps & Modes는 어떤 맵으로 시작하고, 어떤 게임 규칙을 쓸지 정합니다. Default Maps에는 두 가지 맵 설정이 있습니다. Editor Startup Map은 에디터를 실행했을 때 처음 열리는 맵이고, Game Default Map은 따로 맵을 지정하지 않고 게임을 시작했을 때 불러올 기본 맵입니다. 두 맵은 같을 필요가 없고, 둘 다 지금 열린 레벨을 실행하는 PIE와도 다릅니다.
Default Modes의 Default GameMode는 다른 방식으로 지정하지 않았을 때 쓸 게임 모드(GameMode) 클래스입니다. 게임 모드는 플레이어가 조종할 Pawn과 PlayerController, HUD 같은 기본 클래스를 정하며, 맵마다 월드 세팅(World Settings)에서 다른 게임 모드로 바꿔 쓸 수도 있습니다. 게임 모드가 맡는 일과, 게임 모드 블루프린트를 만들어 Default GameMode와 월드 세팅에 지정하는 방법은 블루프린트 교재의 게임 모드, 스테이트 블루프린트에서 자세히 다룹니다.
같은 Maps & Modes에는 Game Instance Class도 있습니다. 게임 인스턴스(Game Instance)는 게임을 실행하는 동안 맵을 바꿔도 사라지지 않고 유지되는 객체입니다. 다만 프로그램이 끝나면 함께 사라지므로, 종료한 뒤에도 남아야 하는 저장 데이터를 대신하지는 않습니다.
Packaging과 Supported Platforms
Packaging은 게임을 실행 파일로 묶을 때의 설정입니다. Build Configuration에서 개발용(Development)이나 배포용(Shipping) 같은 빌드 구성을 고르는데, Shipping은 배포를 위한 구성이라 디버깅과 개발용 기능이 빠집니다. 다만 Shipping으로 만들었다고 결과물의 크기나 속도가 정해지는 것은 아니고, 실제 결과는 콘텐츠와 쿠킹, 압축, 실행 환경에 따라 달라집니다. 패키징에 넣거나 뺄 콘텐츠도 이곳에서 정합니다.
실제로 어느 플랫폼으로 패키징할지는 에디터 툴바의 Platforms 메뉴에서 고르며, 그 플랫폼의 구성 요소와 SDK가 설치되어 있어야 합니다. Supported Platforms에서는 이 프로젝트가 지원할 플랫폼을 명시적으로 고릅니다. 지원 대상으로 고르지 않은 플랫폼에서 패키징하거나 실행, 쿠킹하려 하면 경고가 나타납니다. 하지만 이 목록에서 고른다고 SDK와 빌드 환경까지 준비되는 것은 아닙니다. 빌드 구성과 패키징은 패키징 및 빌드 설정에서 자세히 다룹니다.
시작 맵과 지금 플레이하는 레벨 구분하기
MAPS & MODES · THREE ENTRY POINTS
시작 맵 설정과 지금 플레이할 레벨은 다릅니다
아래는 세 맵을 서로 다르게 지정한 예입니다. 에디터를 열 때, 현재 레벨을 PIE로 시험할 때, 게임이 기본 맵으로 시작할 때를 구분합니다.
Editor Startup Map은 Lobby, 지금 열린 레벨은 Arena, Game Default Map은 Menu로 서로 다르게 정한 예입니다. 각 연결은 독립적인 시작 조건입니다.
설정 변경 후 확인할 것
PIE가 Arena에서 잘 실행돼도 Game Default Map을 확인한 것은 아닙니다. 배포 대상 실행에서 기본 맵과 해당 콘텐츠의 포함 여부를 따로 확인합니다.
위 그림은 세 맵을 서로 다르게 지정한 예로, 레벨이 열리는 세 가지 시작 조건을 나란히 보여 줍니다. 첫째, 에디터를 실행하면 Editor Startup Map으로 지정한 Lobby가 열립니다. 둘째, 지금 Arena를 열어 둔 상태에서 PIE를 실행하면, 시작 맵 설정과 상관없이 현재 레벨인 Arena를 복사한 실행 복사본으로 시험합니다. 셋째, 맵을 따로 지정하지 않고 게임을 시작하면 Game Default Map인 Menu가 열립니다.
그림의 설명처럼 세 화살표는 하나로 이어지는 실행 순서가 아니라 서로 다른 시작 조건입니다. 그래서 그림 아래의 카드가 짚듯이, PIE로 Arena가 잘 실행되었다고 해서 Game Default Map을 확인한 것은 아닙니다. 배포할 결과물에서 기본 맵인 Menu가 제대로 열리는지, 그 맵과 필요한 콘텐츠가 패키지에 들어갔는지는 패키징한 결과를 실행해 따로 확인해야 합니다.
같은 구분으로 하나를 더 생각해 볼 수 있습니다. Editor Startup Map만 Lobby에서 Arena로 바꾸면 Game Default Map도 Arena가 될까요? 두 설정은 서로 다른 항목이므로 게임 기본 맵은 여전히 Menu입니다. 맵 목록에서 저장한 맵을 골라 이 설정을 바꾸는 절차는 Epic의 기본 레벨 안내에서 볼 수 있습니다.
Engine 카테고리: 렌더링, 입력, 충돌, 물리
Rendering
Rendering에서는 장면을 그리는 방식의 기본값을 정합니다. Default Postprocessing Settings는 노출, 색 보정, 블룸 같은 장면 전체의 후처리 효과의 기본값입니다. 또 안티에일리어싱 방식 같은 기본 품질 옵션과 함께, 간접 조명을 계산하는 방식(Dynamic Global Illumination Method), 반사를 계산하는 방식(Reflection Method), 그림자를 만드는 방식(Shadow Map Method)을 고릅니다. 간접 조명과 반사에서는 루멘(Lumen)이나 화면 공간(Screen Space) 방식 같은 선택지가 있으며, 이 항목들은 글로벌 일루미네이션과 반사 설정에서 자세히 다룹니다.
렌더링 설정은 화면 품질과 성능을 함께 바꾸므로, 프로젝트가 목표로 하는 성능과 시각 품질 사이에서 균형을 잡는 곳입니다. 대상 플랫폼이 정해지지 않은 상태에서 높은 품질만 켜 두면, 나중에 성능을 맞출 때 되돌릴 것이 많아집니다.
Input
Input은 플레이어의 키보드, 마우스, 게임패드 입력을 게임의 동작으로 연결하는 설정입니다. UE5에서 기본으로 쓰는 입력 시스템은 향상된 입력(Enhanced Input)으로, UE 5.1부터 기본값이 되었습니다. 향상된 입력에서는 점프나 이동 같은 동작을 입력 액션(Input Action) 에셋으로 만들고, 어떤 키가 어떤 액션을 일으킬지를 입력 매핑 컨텍스트(Input Mapping Context) 에셋에 모은 뒤, 그 컨텍스트를 플레이어에 적용해 입력을 처리합니다. 입력 액션과 입력 매핑 컨텍스트를 만들고 플레이어에 연결하는 과정은 C++ 교재의 입력 처리(Input Mapping)에서 다루며, 에셋을 만드는 단계는 에디터에서, 컨텍스트를 플레이어에 등록하는 단계는 C++ 코드로 보여 줍니다.
Input 카테고리의 Bindings에 있는 Action Mappings와 Axis Mappings는 그 전부터 쓰던 기존 입력 방식입니다. Action Mappings는 스페이스 바를 누르면 Jump처럼 키를 누르거나 뗄 때 일어나는 이벤트를, Axis Mappings는 조이스틱 기울기나 마우스 이동에 따라 MoveForward처럼 연속된 값을 만드는 입력을 정의했습니다. UE5에서는 이 방식을 더 이상 권장하지 않으므로, 새 프로젝트는 향상된 입력으로 만듭니다. 기존 Action Mappings에 항목을 더하는 것만으로는 향상된 입력과 같은 구성이 되지 않습니다.
마우스 감도처럼 게임 입력의 마우스 속성도 이곳에서 확인합니다. 앞 글에서 본 에디터 비행 카메라의 마우스 감도와는 별개의 설정입니다.
Collision, Physics, Navigation Mesh
Collision에서는 충돌 채널과 충돌 프로필의 기본 응답을 정합니다. 이 값을 바꾸면 이미 만들어 둔 액터와 블루프린트가 서로 부딪히는 방식이 달라질 수 있으므로, 바꾼 뒤에는 그 충돌을 쓰는 상호작용을 다시 확인합니다. Physics에서는 중력, 마찰, 충돌처럼 프로젝트 전체의 물리 시뮬레이션 기본값을 정하며, 이 내용은 기본 물리 엔진 설정에서 다룹니다.
Navigation Mesh에서는 AI 캐릭터가 걸어 다닐 수 있는 영역을 나타내는 내비게이션 메시(navigation mesh)를 정합니다. 특히 Runtime Generation은 이 메시를 게임 실행 중에 다시 만들지 여부를 정하는데, 문이 열리거나 벽이 무너지는 것처럼 실행 중에 지형이 바뀌는 게임이라면 이 값을 확인해야 합니다.
게임 UI와 현지화
UI의 글꼴은 위젯의 텍스트와 폰트 에셋에서 지정합니다. 프로젝트 설정 한 곳에서 모든 UI의 기본 글꼴을 바꾸는 항목이 있다고 가정하지 않습니다. 여러 언어를 지원하려면 Tools 메뉴의 현지화 대시보드(Localization Dashboard)에서 번역 대상을 관리하고, Packaging에서 패키지에 넣을 언어와 현지화 데이터 설정을 함께 확인합니다.
프로젝트 설정을 바꿀 때 주의할 점
먼저 적용 범위입니다. 프로젝트 설정에서 바꾼 내용은 지금 열린 프로젝트에만 적용되고, 다른 프로젝트나 에디터 자체의 설정에는 영향을 주지 않습니다. 반대로 같은 프로젝트를 함께 쓰는 팀원 모두에게는 영향을 줍니다. 프로젝트 설정은 프로젝트 폴더의 Config 안에 있는 설정 파일에 저장되어 소스 관리로 공유되기 때문입니다.
다음은 적용 시점입니다. 렌더링이나 패키징과 관련된 일부 설정은 바꾼 뒤 에디터를 다시 시작해야 적용됩니다. 설정 창에 다시 시작하라는 안내가 나타나면, 다시 시작한 뒤에 결과를 확인합니다.
또 성능을 생각해야 합니다. 렌더링 품질이나 물리 설정은 게임의 성능에 직접 영향을 줍니다. 그래서 개발 초기부터 목표 플랫폼과 성능 예산을 정해 두고, 설정을 바꾼 뒤에는 실제 대상 기기에서 비용을 확인합니다.
마지막으로 기록입니다. 중요한 설정을 바꾸기 전에는 백업이 있는지, 소스 관리에 지금 상태가 올라가 있는지 확인합니다. 팀과 공유할 설정 파일과 에셋의 변경, 그리고 바꾼 이유를 기록해 두고, 다시 시작한 뒤의 실행 결과와 패키징 결과를 확인합니다. 실행 중에 이름이나 경로로 동적으로 불러오는 에셋은 쿠킹 대상에 포함되는지도 따로 확인해야 합니다. 에디터에서는 프로젝트의 모든 에셋을 쓸 수 있지만, 패키지에는 참조된 에셋만 들어가기 때문입니다.
더 깊이: 같은 설정이 여러 파일에 있으면 어느 값이 쓰일까
설정은 .ini 확장자의 설정 파일(configuration file)에 섹션별로 키와 값의 쌍으로 저장되며, 같은 범주의 설정이 여러 파일에 나뉘어 있을 수 있습니다. 설정 파일 문서에 따르면 엔진은 이 파일들을 정해진 순서로 읽고, 같은 키가 여러 번 나오면 나중에 읽은 파일의 값이 앞의 값을 덮어씁니다. Engine 범주라면 엔진 폴더의 BaseEngine.ini를 먼저 읽고, 프로젝트의 Config/DefaultEngine.ini를 그다음에, 프로젝트의 Config/Windows/WindowsEngine.ini 같은 플랫폼별 파일을 그 뒤에 읽습니다. 문서의 예처럼 BaseEngine.ini가 GameDefaultMap을 엔진의 템플릿 맵으로 두고 있어도, 프로젝트의 DefaultEngine.ini에 다른 맵이 적혀 있으면 프로젝트가 시작될 때는 이 값이 쓰입니다. GameDefaultMap은 Maps & Modes의 Game Default Map에 해당하는 키입니다.
이 순서 때문에 프로젝트 설정 창에서 본 값과 특정 플랫폼에서 실제로 쓰이는 값이 다를 수 있습니다. 어떤 플랫폼에서만 다르게 동작한다면 그 플랫폼의 설정 파일이 같은 키를 덮어쓰고 있지 않은지 확인하고, 지금 불러온 설정에서 그 키의 값은 GetIni 콘솔 명령으로 확인할 수 있습니다. 또 모든 설정이 프로젝트 설정 창에 나오는 것은 아니어서, 창에 없는 값은 설정 파일을 직접 고쳐야 합니다.
자주 쓰는 설정 예
게임이 시작되는 맵을 바꾸고 싶다면 Maps & Modes의 Game Default Map을 새 맵으로 바꿉니다. 이때 바꾼 것은 게임이 기본으로 시작하는 맵이고, 에디터를 열 때의 맵과 지금 PIE로 시험하는 레벨은 그대로입니다.
플레이어가 키를 누르면 캐릭터가 점프하고, 마우스를 움직이면 카메라가 돌아가게 하려면 먼저 프로젝트가 어떤 입력 시스템을 쓰는지 확인합니다. 향상된 입력을 쓰는 프로젝트라면 입력 액션과 입력 매핑 컨텍스트를 만들고, 플레이어에 컨텍스트를 적용한 뒤, 액션이 일어났을 때의 처리를 연결합니다. 기존 방식으로 만든 오래된 프로젝트라면 Action Mappings와 Axis Mappings를 설정합니다.
모바일 게임을 만든다면 플랫폼별 SDK와 프로젝트의 Android, iOS 설정을 준비하고, Rendering에서 모바일 렌더링과 관련된 옵션을 조절해 성능을 맞춥니다. 모바일에서 확인할 점은 크로스 플랫폼 배포 고려사항에서 다시 다룹니다.
정리
- 에디터 환경설정은 개인의 작업 방식을, 프로젝트 설정은 그 프로젝트의 모든 사람과 결과물에 적용되는 규칙을 정하며, 프로젝트 설정은
Config폴더의 파일로 공유됩니다. - Maps & Modes의 Editor Startup Map은 에디터를 열 때의 맵, Game Default Map은 맵을 지정하지 않은 게임 시작의 맵이며, PIE는 지금 열린 레벨을 실행합니다.
- Default GameMode는 기본 Pawn과 PlayerController, HUD를 정하고 맵마다 월드 세팅에서 바꿀 수 있으며, Game Instance는 맵을 바꿔도 유지되지만 종료 뒤의 저장을 대신하지 않습니다.
- Packaging의 Build Configuration과 Supported Platforms를 고른다고 SDK와 빌드 환경이 준비되지는 않습니다.
- UE5의 기본 입력 시스템은 향상된 입력이며, Bindings의 Action Mappings와 Axis Mappings는 권장하지 않는 기존 방식입니다.
- 충돌, 렌더링, 물리 설정을 바꾸면 기존 동작과 성능이 달라질 수 있으므로, 다시 시작한 뒤 실행 결과와 패키징 결과를 확인하고 변경과 이유를 기록합니다.
연습 문제
1. 시작 맵만 바꿨을 때
Editor Startup Map은 Lobby, Game Default Map은 Menu입니다. Editor Startup Map만 Arena로 바꾸고, 지금은 Lobby를 연 상태에서 PIE를 실행했습니다. 에디터를 다시 열면 어떤 맵이 열리고, PIE는 어떤 레벨을 실행했으며, 패키징한 게임은 어떤 맵으로 시작할까요?
해설 보기
에디터를 다시 열면 바뀐 Editor Startup Map인 Arena가 열립니다. PIE는 시작 맵 설정과 상관없이 실행할 때 열려 있던 Lobby를 실행했습니다. 패키징한 게임은 Game Default Map을 따르므로, 바꾸지 않은 Menu로 시작합니다.
세 맵은 서로 다른 시작 조건이라, 하나를 바꿔도 다른 둘은 그대로입니다.
2. PIE에서는 되는데 패키지에서는 안 될 때
PIE로 Arena를 시험할 때는 문제없이 동작했습니다. 그런데 패키징한 게임을 실행하니 첫 화면이 기대와 다르고, 실행 중에 이름으로 불러오는 효과 에셋 하나가 보이지 않습니다. 각각 무엇을 확인해야 할까요?
해설 보기
첫 화면은 PIE가 아니라 Game Default Map이 정하므로, Maps & Modes의 Game Default Map이 의도한 맵인지 확인합니다.
효과 에셋은 실행 중에 이름으로 불러오는 에셋이라, 다른 에셋이 직접 참조하지 않으면 쿠킹 대상에서 빠질 수 있습니다. 에디터에서는 프로젝트의 모든 에셋을 쓸 수 있으므로 PIE에서는 문제가 드러나지 않습니다. 패키징 설정에서 그 에셋이 쿠킹 대상에 포함되도록 했는지 확인합니다.
3. Action Mappings에 점프를 추가했는데
향상된 입력으로 만든 UE5 템플릿 프로젝트에서, Input 카테고리의 Action Mappings에 스페이스 바로 Jump를 추가했습니다. 그런데 플레이해도 캐릭터가 점프하지 않습니다. 왜 그럴까요?
해설 보기
이 프로젝트의 캐릭터는 향상된 입력으로 입력을 처리하므로, 기존 방식의 Action Mappings에 추가한 항목은 캐릭터의 입력 처리와 연결되지 않습니다. Action Mappings에 항목을 더하는 것만으로는 향상된 입력과 같은 구성이 되지 않습니다.
점프를 추가하려면 점프용 입력 액션을 만들고, 플레이어에 적용된 입력 매핑 컨텍스트에서 스페이스 바를 그 액션에 연결한 뒤, 액션이 일어났을 때 캐릭터가 점프하도록 처리를 연결해야 합니다.
프로젝트 설정의 각 항목은 Epic의 프로젝트 설정 안내에서, 향상된 입력은 Epic의 향상된 입력 안내에서 확인할 수 있습니다.
다음 글 에디터의 성능 최적화에서는 에디터가 느려지는 원인을 확인하고, 편집할 때의 반응성을 높이는 설정을 살펴봅니다.