본문 바로가기
Unreal Engine

Unreal Engine 레벨(Levels) 다루기

by hfgraphic 2025. 9. 9.
반응형

 

이번에는 **레벨(Levels)**에 대해 탐구하고 배우겠습니다. 레벨이라는 개념이 너무 단순하다고 생각할 수도 있지만, 언리얼 엔진에서 레벨을 다루는 방법을 제대로 아는 것은 매우 중요합니다.

우리는 모두 레벨이 무엇을 의미하는지 알고 있습니다. 예를 들어, 비디오 게임에는 여러 레벨이 있고, 각 레벨마다 다른 과제와 미션이 있으며, 각기 다른 분위기를 가질 수 있습니다. 하지만 언리얼 엔진에서 건축 프로젝트를 작업할 때, 레벨의 개념은 조금 다르게 해석될 수 있으므로 프로젝트에서 레벨을 사용하는 방법을 배워야 합니다.


레벨 관리

프로젝트가 완전히 로드되었습니다. **콘텐츠 브라우저(Content Browser)**로 가서 필터를 레벨로 설정하면 접근할 수 있는 레벨들이 보입니다. 아이콘에 주황색 막대가 있는 것을 볼 수 있습니다. Starter Map으로 가보겠습니다. 이 것이 Starter Map입니다. 언리얼 엔진을 설치할 때 **스타터 콘텐츠(Starter Content)**를 선택했다면 이 레벨을 얻게 됩니다. 여기에는 많은 평면과 재질이 있어서 다양한 것들을 탐색하고 테스트할 수 있습니다.

이제 기본 레벨인 Default Level로 돌아가서 Advanced Lighting Level로 가보겠습니다. Advanced Lighting Level입니다. 이제 Starter Map을 삭제하겠습니다. 삭제합니다. Advanced Lighting Map도 삭제하고 싶지만, 현재 그 안에 있으므로 먼저 Default Level로 돌아가야 합니다. 이제 Advanced Lighting Level도 삭제할 수 있습니다.


레벨 생성 및 복사

우리만의 레벨을 만들 수도 있습니다. 콘텐츠 브라우저에서 오른쪽 클릭하고 Level을 선택하면 됩니다. 이름을 '01'로 짓겠습니다. 안에 들어가면 저장할지 묻는 메시지가 뜹니다. 저장을 누르면 완전히 비어 있는 빈 화면이 나타납니다. 스타터 콘텐츠가 전혀 없습니다.

이 레벨을 삭제하겠습니다. 기존 레벨을 **복제(duplicate)**할 수도 있습니다. 오른쪽 클릭하고 Duplicate를 선택한 후, 이름을 'H01'로 짓겠습니다. 이 레벨로 들어가면, Default Level의 완벽한 복사본임을 알 수 있습니다.


레벨 저장

 

H01 레벨에 몇 가지 변경을 가하고 싶습니다. 이 탁자와 그 위에 있는 조각상만 남기고 나머지는 모두 지우겠습니다. 모든 것을 지웁니다. 모든 것이 삭제되었는지 확인하기 위해 아웃라이너(Outliner) 패널로 가서, 이전에 지우지 않은 다른 것들을 지울 수 있습니다. 이 Static Meshes 폴더를 제외한 모든 것을 지우겠습니다. 이제 남은 것은 탁자와 조각상뿐입니다. 뷰 모드를 Unlit으로 바꾸면 볼 수 있습니다.

이 레벨을 저장하고 싶다면, **파일(File)**로 가서 Save All을 선택하기만 하면 됩니다. 이제 이 레벨이 자체적으로 저장되었습니다. Default Level로 돌아가 보겠습니다. Unlit 모드로 놓겠습니다. 아무 변화도 없습니다. H01로 돌아가면 테이블만 남아 있습니다.

Default Level로 돌아가서, 예를 들어 큐브 모양을 만들고 다른 레벨로 이동하기로 결정하면 프롬프트가 나타납니다. 만약 저장하지 않고 다음 레벨로 가면 큐브는 저장되지 않은 것을 볼 수 있습니다. 다시 해보겠습니다. 이번에는 저장하겠습니다. 이제 H01로 갔다가 Default Level로 돌아가면 큐브가 그대로 있습니다. 다른 레벨로 이동하기 전에 각 레벨에서 작업한 내용을 반드시 저장하세요.


새로운 이름으로 레벨 저장

다른 것도 할 수 있습니다. 몇 가지 변경을 해보겠습니다. 이 의자와 테이블을 지우고 Save Current Level As를 선택할 수 있습니다. 이 옵션을 선택하면 방금 변경한 내용을 원하는 폴더에 다른 레벨로 저장할 수 있습니다. 예를 들어, 이 두 레벨은 Starter Content 내의 Maps 폴더에 있습니다. 원하는 폴더를 선택할 수 있습니다.

다시 돌아와서 File에서 Save Custom Level As를 클릭합니다. Starter ContentMaps에 'H02'라는 이름으로 저장하겠습니다. 이제 세 개의 레벨이 있습니다. 기본 레벨인 Default Level에는 큐브가 있고, H02H01에는 테이블이 있습니다.


레벨 임포트(Import)

H02는 필요 없으므로 삭제하겠습니다. H01로 가서 현재 레벨을 저장합니다. 이제 H01에는 테이블과 조각상이 있습니다. Default Level에서 테이블과 큐브를 지우고 저장하겠습니다. 이제 재미있는 것을 해보겠습니다.

언리얼 엔진의 좋은 점은 레벨을 서로 가져올 수 있다는 것입니다. 예를 들어, 나무나 꽃, 반투명한 것들과 같이 **나나이트(Nanite)**와 함께 사용할 수 없는 무거운 오브젝트들이 있는 레벨이 있다면, 이런 것들은 **프레임(FPS)**에 부담을 줍니다. 여러 레벨을 만들고 서로 불러와서 나무와 무거운 오브젝트가 있는 레벨을 그것들이 없는 레벨에 불러오면 FPS를 낮출 수 있습니다.

나나이트는 FPS에 부담을 주지 않으면서 수많은 오브젝트를 가질 수 있는 기능입니다. 나중에 더 자세히 배우겠지만, 지금은 방금 말한 예시처럼 한 레벨을 다른 레벨로 가져오겠습니다.

시작하려면, Window로 가서 Levels 패널을 엽니다. 이것이 필요하므로 옆에 놓겠습니다. Levels를 클릭하고 Add Existing을 선택합니다. 이제 만든 두 레벨인 H01과 Default가 보입니다. H01을 엽니다.

H01에 유일하게 있었던 테이블이 의자가 있고 테이블은 없던 Default Level에 로드된 것을 볼 수 있습니다. 테이블의 가시성(visibility)을 끄면 오브젝트가 적어지므로 FPS가 더 좋아집니다.


레벨 내 오브젝트 이동 및 저장

우리는 레벨 내의 특정 오브젝트들을 옮기고 저장할 수 있습니다. 예를 들어, 이 테이블을 옮기고 Save All을 선택하면 이 저장이 두 레벨 모두에 적용됩니다. H01로 가면 테이블이 이동한 것을 볼 수 있습니다. 조각상은 그대로 있지만 테이블은 오른쪽으로 이동했습니다. 이 트릭은 다른 레벨에서 작업할 때 매우 유용합니다. File에서 Save All을 선택하면, 현재 존재하는 모든 레벨에 변경사항이 저장됩니다.

만약 특정 레벨에만 변경사항을 저장하고 싶다면, 테이블을 왼쪽으로 놓고 File에서 Save Current Level을 선택해야 합니다. H01 레벨로 가보면 변경사항이 적용되어 테이블이 왼쪽으로 이동했습니다. 하지만 Default Level로 가면 테이블이 오른쪽에 있습니다. 이번에는 H01 레벨에만 변경사항이 적용된 것입니다.

이 작업을 할 때 주의해야 할 것은 현재 레벨이 무엇인지 아는 것입니다. 예를 들어, 이 테이블을 여기에 놓고 저장하고 싶다면, H01을 오른쪽 클릭하고 Make Current를 선택해야 합니다. 그래야 H01이 현재 레벨이 되고, File에서 Save Current Level을 선택할 때 H01에만 변경사항이 적용된다고 확신할 수 있습니다.


레벨과 레이어의 차이점

H01 레벨에 무언가를 추가하고 이전 레벨도 저장하겠습니다. 여기에 큐브를 만들고 Unlit 모드로 바꿔서 보이게 하겠습니다. 이 큐브를 옆으로 옮기고, File에서 Save All을 실행하면 Default Level에서도 이 큐브를 볼 수 있습니다.

뷰 모드를 Lit으로 되돌리고 Default Level을 현재 레벨로 만듭니다. 여기에 큐브를 만들고 크기와 위치를 바꾼 다음 옆으로 옮깁니다. H01의 가시성을 끄면 이 큐브가 여전히 거기에 있는 것을 볼 수 있습니다. 이 큐브는 H01의 일부가 아니기 때문입니다.

이것을 H01 레벨의 일부로 만들려면, 이 큐브를 선택하고 H01 레벨에서 오른쪽 클릭한 다음 Move Selected Actors to Level 옵션을 선택합니다. 이제 큐브가 H01에 추가되었고, H01의 가시성을 끄면 함께 사라집니다.

레벨과 레이어(Layers)를 혼동하지 마세요. 이것은 포토샵이나 다른 프로그램의 레이어처럼 보일 수 있지만, 우리가 한 것은 FPS를 낮추기 위해 다른 레벨을 가져온 것입니다. 우리가 한 것의 기본 원리는 오브젝트가 적을수록 FPS가 높아진다는 것입니다.


오브젝트 잠금 및 프로젝트 설정

레벨을 오른쪽 클릭하고 Lock을 사용하여 레벨 전체나 레벨 안의 오브젝트를 잠글 수 있습니다. 잠그면 더 이상 선택할 수 없습니다. 잠금 토글 아이콘도 사용할 수 있습니다.

현재의 **방향성 광원(directional light)**은 현재 레벨에 저장되어 있습니다. 현재 레벨의 가시성을 끄면 빛이 사라집니다. 방향성 광원을 선택하고 다른 레벨로 옮길 수 있습니다. 그러면 빛이 두 레벨 모두에 있게 됩니다.


건축 프로젝트에 레벨 활용하기

건축 프로젝트에 이것을 어떻게 적용할 수 있을까요? 예를 들어, 건물의 벽, 기초, 주요 부분을 한 레벨에 두고, 가구와 일부 아이템을 다른 레벨에 둔 다음, 첫 번째 레벨에 두 번째 레벨을 로드할 수 있습니다. 이렇게 하면 텍스처와 재질을 다룰 때 시간을 절약하고 더 가벼운 작업 공간을 가질 수 있습니다.


레벨 로드 문제 해결

**플레이(Play)**를 눌러 게임 모드로 들어가면, Default Level에 속한 두 개의 의자만 보이고 H01 레벨의 오브젝트들은 보이지 않습니다. 실행 파일을 만들어서 클라이언트에게 전달해도 같은 문제가 발생합니다.

이 문제를 해결하는 방법은 두 가지입니다.

  1. H01 레벨을 오른쪽 클릭하고 Select All Actors를 선택한 다음, Default 레벨로 가서 오른쪽 클릭하고 Move Selected Actors to Level을 선택합니다.
  2. H01 레벨로 가서 Change Streaming MethodAlways Loaded로 변경합니다. 이 방법을 사용하면 두 개 이상의 레벨을 동시에 로드할 수 있습니다.

만약 레벨을 잃어버렸다면, Find in Content Browser를 사용하여 해당 레벨의 위치를 쉽게 찾을 수 있습니다.


기본 레벨 변경 및 프로젝트 패키징

현재 H01 레벨에 있습니다. Save All을 실행하겠습니다. 프로젝트 이름은 'My Project Nine'입니다. 다른 프로젝트를 열었다가 'My Project Nine'으로 돌아오면, H01 레벨 대신 Default Level로 로드되는 것을 볼 수 있습니다.

이 문제를 해결하려면 Edit에서 Project Settings로 가서 Maps and Modes를 선택합니다. Default Maps에서 Default Map을 원하는 레벨, 예를 들어 H01로 변경할 수 있습니다. 이제 이 프로젝트를 닫았다가 다시 열면 H01 레벨로 로드됩니다.

이제 **실행 파일(executable file)**을 만들어 클라이언트에게 패키징하고 싶다면, Project SettingsMaps and Modes에서 Default Map이 H01로 선택되어 있는지 확인해야 합니다.

Platforms에서 Windows를 선택하고 Package Project를 선택합니다. 이 패키지는 첫 번째 세션에서 보여드린 폴더들로 구성되며, 클라이언트에게 전달됩니다. 프로젝트 설정에서 Default Map을 H01로 설정했으므로 이 패키지를 실행하면 H01 레벨이 로드될 것입니다.

Default Map을 다시 Default로 변경하고 다른 패키지를 만들면, 이번에는 Default Level이 로드되는 것을 확인할 수 있습니다.

만약 실행 파일을 만들었는데 일부 오브젝트가 누락되었다면, Change Streaming MethodAlways Loaded로 설정되어 있는지 확인하세요.


이번 글은 매우 중요했습니다. 프로젝트를 올바르게 저장하는 다양한 방법과 레벨을 다루는 법을 아는 것이 중요합니다.

 

반응형