기본 레벨 생성 및 구조 설정
새 레벨을 만들고 용도에 맞는 환경 액터와 플레이 공간을 배치하며 프로젝트 시작 맵까지 작업 가능한 기본 구조로 설정합니다.
에디터 인터페이스와 에셋 관리를 익혔다면, 이제 실제 플레이 공간을 만드는 단계로 넘어갑니다. 새 레벨을 만들 때 처음 잡는 구조는 이후의 배치와 조명, 최적화 작업 전체에 영향을 줍니다. 처음부터 저장 위치가 엉키거나 어떤 액터가 무슨 일을 하는지 모른 채 시작하면, 나중에 조명이 이상하거나 플레이어가 엉뚱한 곳에서 시작할 때 원인을 찾기 어렵습니다.
이 글에서는 레벨이 무엇으로 이루어지는지 살펴보고, 새 레벨을 템플릿으로 만들어 저장한 뒤, 기본으로 들어 있는 액터들의 역할을 익힙니다. 그다음 의자 하나를 배치해 값을 바꿔 보고, 프로젝트의 기본 맵 설정까지 확인합니다. 이 글의 목표는 예쁘게 꾸미는 것이 아니라, 작업할 수 있는 뼈대를 정확히 세우는 것입니다.
레벨은 무엇으로 이루어지나
언리얼 엔진에서 레벨(level)은 게임이나 인터랙티브 콘텐츠가 플레이되는 3D 공간의 단위로, 다른 게임 엔진에서는 씬(scene)이라고 부르기도 합니다. 레벨 하나는 다음과 같은 요소로 이루어집니다.
| 요소 | 내용 |
|---|---|
| 지형(Landscape) | 땅이나 산 같은 자연 환경입니다. |
| 액터(Actor) | 3D 모델, 조명, 카메라, 캐릭터, 사운드, 이펙트처럼 레벨에 배치되는 모든 오브젝트입니다. |
| 조명(Lighting) | 레벨의 빛과 그림자입니다. |
| 후처리(Post Process) | 색 보정, 블룸, 안티에일리어싱처럼 최종 화면에 적용되는 시각 효과입니다. |
| 게임플레이 로직 | 레벨 안에서 일어나는 이벤트와 상호작용입니다. |
게임은 보통 레벨 하나가 아니라 여러 레벨로 이루어집니다. 예를 들어 메인 메뉴 레벨, 튜토리얼 레벨, 스테이지마다의 레벨처럼 나눌 수 있으며, 이렇게 나누면 지금 필요한 공간만 불러오고 작업도 레벨별로 나눠 할 수 있습니다.
새 레벨 만들고 저장하기
새 레벨은 위쪽 메뉴의 File에서 New Level을 눌러 만듭니다. 그러면 새 레벨(New Level) 창에 시작할 레벨 템플릿들이 나타납니다.
| 템플릿 | 시작 상태 |
|---|---|
| Empty Level | 아무것도 없는 완전히 빈 레벨입니다. 가장 기본적인 상태에서 시작하고 싶을 때 고릅니다. |
| Basic | 바닥과 조명, 대기, 높이 안개가 들어 있는 시작점입니다. 포함된 액터는 버전에 따라 확인하고, 플레이어 시작 위치는 필요하면 추가합니다. |
| Open World | 넓은 지형과 볼류메트릭 클라우드(Volumetric Cloud)처럼 오픈 월드 환경에 맞춘 기본 설정이 된 레벨입니다. |
| Empty Open World | 콘텐츠 없이 월드 파티션(World Partition) 구성만 쓰는 시작점입니다. |
설치한 버전과 프로젝트에 따라 다른 템플릿이 더 있을 수 있습니다. 이때 프로젝트를 만들 때 고르는 VR 같은 프로젝트 템플릿과, 여기서 고르는 레벨 템플릿은 서로 다른 것이라는 점을 구분합니다.
이 글에서는 Basic을 고르고 Create를 누르기를 권장합니다. 바닥과 조명이 있어서 바로 배치 연습을 시작하기 쉽기 때문입니다. 다만 Basic은 공간을 준비해 줄 뿐이므로, 어떤 게임 모드(GameMode)와 Pawn으로 플레이할지, 어디서 시작할지는 따로 확인해야 합니다.
새로 만든 레벨은 아직 저장되지 않은 상태이므로 바로 저장합니다. 툴바의 저장 버튼을 누르거나 Ctrl+S를 누르면 다른 이름으로 레벨 저장(Save Level As) 창이 나타나고, 저장할 폴더와 이름을 정합니다. 예를 들어 Content/Maps 폴더에 MyFirstGameLevel로 저장하면 Content/Maps/MyFirstGameLevel.umap 파일이 생깁니다. 레벨 파일은 모두 .umap 확장자를 가지므로, Content/Maps 폴더를 만들어 한곳에 모아 두면 찾기 쉽습니다.
새 레벨을 만든 뒤에는 저장 위치와 기본 액터, 기본 맵 설정, 플레이 시험을 한 번에 점검해 두면 이후 작업이 흔들리지 않습니다. 아래에서 차례로 살펴봅니다.
기본으로 들어 있는 액터의 역할
Basic 템플릿으로 레벨을 만들었다면 뷰포트에는 몇 가지 액터가 이미 놓여 있습니다. 이 조합이 모든 콘텐츠에 꼭 필요한 것은 아니므로, 여기서는 사람이 걸어 다닐 3D 시험 공간을 기준으로 각 액터의 역할을 살펴봅니다.
플레이어 시작 위치
플레이어 시작 위치(Player Start)는 게임이 시작될 때 플레이어 캐릭터가 생성(spawn)되는 위치를 나타내는 액터로, 아웃라이너에서 PlayerStart라는 이름으로 찾을 수 있습니다. 일반적인 게임 모드는 이 액터를 기준으로 Pawn을 생성합니다.
다만 모든 레벨에 꼭 있어야 하는 것은 아닙니다. Player Start가 없으면 원점 근처에서 시작할 수 있고, 레벨에 미리 배치한 Pawn을 플레이어가 자동으로 조종하게 하거나 직접 만든 생성 방식을 쓸 수도 있습니다. 이 연습에서는 Player Start를 두고, 그 위치에서 생성되는 Pawn이 바닥과 충돌하는지, 어느 방향을 보고 시작하는지 확인합니다.
조명과 하늘
Basic 레벨에는 주로 두 가지 조명 액터가 들어 있습니다. 첫째는 디렉셔널 라이트(Directional Light)로, 태양빛처럼 한 방향으로 나란히 들어오는 빛을 비춥니다. 낮의 태양이나 밤의 달 역할을 하며, 아주 먼 곳에서 오는 빛을 흉내 내므로 위치는 상관없고 회전(Rotation)만 빛의 방향을 정합니다. 아웃라이너에서는 DirectionalLight로 찾습니다.
둘째는 스카이 라이트(Sky Light)로, 하늘 전체에서 들어오는 빛을 흉내 내어 야외의 환경광을 표현합니다. 주변 하늘이나 HDRI 이미지 같은 환경의 색 정보를 받아 레벨에 적용하며, 아웃라이너에서는 SkyLight로 찾습니다.
하늘을 표현하는 방식도 두 가지가 있습니다. 스카이 어트모스피어(Sky Atmosphere)는 대기에서 빛이 흩어지는 현상을 계산해 하늘의 색을 만듭니다. 반면 예전 콘텐츠에서 볼 수 있는 BP_Sky_Sphere는 하늘 모양의 큰 메시를 블루프린트로 제어하는 방식입니다. 스카이 어트모스피어가 해의 위치에 맞춰 하늘색을 바꾸려면 디렉셔널 라이트의 Atmosphere Sun Light 설정이 켜져 있어야 하고, 스카이 스피어는 그 블루프린트가 갱신되는 방식에 따릅니다. 조명은 기본 조명 설정과 환경 조정에서 자세히 다룹니다.
바닥이나 지형
플레이어가 걷고 오브젝트를 놓을 바닥면도 필요합니다. Basic 레벨에는 Floor나 Plane 같은 이름의 스태틱 메시가 바닥으로 들어 있을 수 있고, 템플릿에 따라 랜드스케이프(Landscape) 액터가 있을 수도 있습니다. 랜드스케이프는 넓은 야외 환경을 만들 때 쓰며, 높낮이를 조절하고 표면을 칠해 여러 지형을 만들 수 있습니다. 랜드스케이프는 다음 글에서 자세히 다룹니다.
의자 하나를 배치하고 값 바꿔 보기
이제 이 레벨에 첫 오브젝트를 배치해 봅니다. 시작용 콘텐츠를 포함한 프로젝트라면 콘텐츠 브라우저의 StarterContent/Props 폴더로 갑니다. 시작용 콘텐츠가 없다면 기본 큐브나 직접 가져온 메시로 같은 연습을 할 수 있습니다. SM_Chair나 SM_Table 같은 스태틱 메시를 찾아 뷰포트로 끌어다 놓고, 바닥에 제대로 놓이지 않았다면 이동(W) 기즈모로 바닥에 닿도록 옮깁니다. 물리 시뮬레이션으로 물체를 바닥에 떨어뜨리는 방법은 기본 물리 엔진 설정에서 배웁니다.
다음으로 방금 놓은 의자를 뷰포트나 아웃라이너에서 선택하고, F2를 눌러 SM_Chair_01처럼 의미 있는 이름으로 바꿉니다. 그리고 디테일 패널의 Transform에서 Location, Rotation, Scale 값을 직접 바꿔 봅니다. Location의 Z로 높이를 조절하고, Rotation의 Z를 90으로 바꿔 의자를 돌려 보고, Scale을 2로 바꿔 두 배로 키워 봅니다. 값 옆의 되돌리기 화살표 아이콘을 누르면 그 속성이 기본값으로 돌아갑니다.
여기서 하나 주의할 것은 Location Z의 의미입니다. Z = 0은 액터의 피벗이 있는 높이일 뿐, 메시의 바닥면이나 레벨의 바닥과 반드시 같은 높이는 아닙니다. 피벗이 메시의 가운데에 있다면 Z = 0으로 두었을 때 의자의 아래쪽 절반이 바닥에 파묻힐 수 있습니다. 그래서 숫자만 보고 맞추기보다, 뷰포트에서 바닥에 닿았는지 눈으로 함께 확인합니다.
값을 바꿨다면 툴바의 플레이 버튼으로 레벨을 실행해, 배치한 의자가 레벨에 나타나는지 확인합니다.
프로젝트의 기본 맵 설정하기
만든 레벨이 에디터를 시작할 때나 게임을 실행할 때 기본으로 열리게 할 수 있습니다. Edit 메뉴의 Project Settings를 열고, Project의 Maps & Modes에서 Default Maps를 찾습니다.
Editor Startup Map은 에디터를 실행했을 때 처음 열릴 레벨입니다. 드롭다운을 눌러 저장한 레벨을 고릅니다. Game Default Map은 맵을 따로 지정하지 않고 게임을 시작할 때 쓸 기본 레벨입니다. PIE는 보통 지금 열린 레벨을 시험하므로 이 설정과는 별개이고, 에디터에서 작업할 맵과 게임이 시작할 맵이 서로 달라도 됩니다. 이 구분은 프로젝트 설정과 기본 옵션에서 그림으로 살펴봤습니다.
설정을 바꾼 뒤에는 에디터를 다시 열었을 때의 동작과 게임을 시작했을 때의 동작을 각각 확인합니다. PIE에서 지금 레벨이 잘 열렸다는 사실만으로는 Game Default Map 설정이 맞는지 알 수 없습니다.
첫 실행에서 카메라만 떠다닐 때
Basic 레벨을 처음 플레이하면 사람이 걷는 대신 카메라만 떠다니는 경우가 있습니다. 그렇다고 새 레벨 저장에 실패한 것은 아닙니다. Basic은 공간을 준비하는 레벨 템플릿일 뿐이고, 플레이어가 조종할 Pawn과 그것을 정하는 게임 모드는 따로 정하기 때문입니다. 게임 모드가 따로 지정되지 않았다면 엔진의 기본 Pawn이 생성되는데, 이 Pawn은 떠다니며 이동하는 카메라처럼 동작합니다.
그러니 이번 배치 연습을 마쳤는지는 의자가 보이고, 저장한 레벨을 다시 열었을 때 의자의 위치가 그대로인지로 판단합니다. 사람이 걸어 다니는 시험까지 하려면 사용할 Pawn과 게임 모드, Player Start를 정한 뒤, 충돌과 시작 위치를 추가로 확인합니다.
정리
- 레벨은 지형, 액터, 조명, 후처리, 게임플레이 로직으로 이루어진 3D 공간의 단위이며, 게임은 보통 여러 레벨로 나뉩니다.
- File 메뉴의 New Level에서 Empty Level, Basic, Open World, Empty Open World 같은 레벨 템플릿을 고르며, 프로젝트 템플릿과 레벨 템플릿은 다릅니다.
- 새 레벨은 바로
Content/Maps같은 폴더에.umap으로 저장합니다. - Player Start는 일반적인 Pawn 생성 위치지만 모든 레벨에 필수는 아니고, 디렉셔널 라이트는 회전이 방향을 정하며, 스카이 라이트는 하늘의 환경광을 표현합니다.
- Location Z = 0은 피벗의 높이이므로 메시 바닥과 다를 수 있습니다.
- Editor Startup Map과 Game Default Map은 다른 설정이고, PIE로 Game Default Map을 확인할 수는 없습니다.
- 카메라만 떠다니는 것은 Pawn과 게임 모드를 정하지 않았기 때문이며, 저장 실패가 아닙니다.
연습 문제
1. 바닥에 파묻힌 의자
의자의 Location Z를 0으로 맞췄는데 의자의 다리가 바닥 아래로 파묻혀 보입니다. 바닥의 윗면도 Z = 0에 있습니다. 왜 이런 일이 생길까요?
해설 보기
Location Z는 액터의 피벗 높이이고, 메시의 바닥면 높이가 아닙니다. 의자의 피벗이 메시의 가운데에 있다면, 피벗을 Z = 0에 두었을 때 피벗 아래쪽에 있는 메시의 절반이 바닥 아래로 들어갑니다.
피벗에서 의자 바닥까지의 거리만큼 Z를 올리거나, 뷰포트에서 바닥에 닿을 때까지 옮기며 눈으로 확인합니다.
2. 디렉셔널 라이트를 옮겼는데
해 질 녘처럼 빛이 낮게 들어오게 하려고 디렉셔널 라이트를 레벨의 한쪽 끝으로 멀리 옮겼습니다. 그런데 빛의 방향이 전혀 바뀌지 않았습니다. 무엇을 바꿔야 할까요?
해설 보기
디렉셔널 라이트는 아주 먼 곳에서 나란히 들어오는 빛을 흉내 내므로 위치는 빛에 영향을 주지 않고, 회전만 빛의 방향을 정합니다.
빛이 낮게 들어오게 하려면 디렉셔널 라이트의 Rotation을 바꿔, 빛이 지평선에 가까운 각도로 들어오게 합니다. 스카이 어트모스피어를 쓴다면 Atmosphere Sun Light가 켜져 있을 때 하늘색도 함께 해 질 녘처럼 바뀝니다.
3. 게임 기본 맵을 확인하는 방법
Game Default Map을 방금 만든 MyFirstGameLevel로 바꾼 뒤, 그 레벨을 열어 둔 상태에서 PIE로 실행했더니 잘 열렸습니다. 이것으로 Game Default Map 설정이 맞다고 확인한 것일까요?
해설 보기
아닙니다. PIE는 Game Default Map과 상관없이 지금 열린 레벨을 실행하므로, 그 레벨이 열린 것은 지금 그 레벨을 열어 두었기 때문입니다.
Game Default Map을 확인하려면 맵을 따로 지정하지 않고 게임을 시작해야 합니다. 예를 들어 Standalone Game으로 실행하거나 패키징한 결과를 실행해, 어떤 레벨로 시작하는지 봅니다.
레벨 템플릿과 레벨 만들기는 Epic의 레벨 안내에서도 확인할 수 있습니다.
다음 글 지형 (랜드스케이프) 생성 및 조정에서는 넓은 지면을 만드는 랜드스케이프를 생성하고, 높낮이를 조각하고 표면을 칠하는 방법을 다룹니다.