icon안동민 개발노트

기본 레벨 생성 및 구조 설정


 언리얼 엔진에서 효과적인 레벨 구조 설정은 게임 개발의 핵심 단계입니다.

 이 가이드에서는 새로운 레벨을 생성하고 기본 구조를 설정하는 방법을 상세히 살펴보겠습니다.

레벨 생성 옵션

 1. 빈 레벨 생성

  • File > New Level > Empty Level
  • 완전히 빈 캔버스에서 시작

 2. 템플릿 사용

  • File > New Level > 원하는 템플릿 선택
  • 기본 구성요소가 포함된 레벨로 시작

 예시 템플릿

  • Basic : 기본 라이팅과 큐브 포함
  • TimeOfDay : 낮/밤 주기 시스템 포함
  • VR-Basic : VR 프로젝트를 위한 기본 설정

레벨 세팅 구성

 1. World Settings 열기

  • Window > World Settings

 2. 주요 설정 항목

  • Game Mode: 레벨의 기본 게임 모드 설정
  • Gravity: 중력 값 조정 (기본값 : -980)
  • Global Illumination: 전역 조명 방식 선택

 예시 설정

Game Mode: BP_MyGameMode
Gravity: -490 (달 표면 중력)
Global Illumination: Lumen

월드 세팅 조정

 1. Project Settings 열기

  • Edit > Project Settings

 2. 주요 조정 항목

  • Maps & Modes : 기본 맵 및 게임 모드 설정
  • World Settings : 전역 물리 및 렌더링 설정

 예시

Default Maps:
  Game Default Map: /Game/Maps/MainMenu
  Editor Startup Map: /Game/Maps/TestLevel
 
World Settings:
  Enable World Composition: True (대규모 레벨용)

서브레벨 사용법

 1. 서브레벨 생성

  • Levels 패널 > Add New Level > Empty Level

 2. 서브레벨 관리

  • Levels 패널에서 서브레벨 표시/숨기기
  • 서브레벨 간 에셋 이동: 드래그 앤 드롭

 3. 퍼시스턴트 레벨 개념

  • 메인 레벨로, 항상 로드되어 있음
  • 서브레벨 관리 및 전역 설정 포함

효율적인 레벨 구성 Best Practices

 1. 모듈식 설계

  • 재사용 가능한 레벨 청크 생성
  • 에셋 인스턴싱으로 메모리 사용 최적화

 2. 명확한 명명 규칙

  • 레벨명: L_[용도]_[세부정보]
  • 예 : L_Dungeon_Entrance, L_City_Downtown

 3. 레벨 스트리밍 고려

  • 대규모 맵을 작은 스트리밍 가능한 섹션으로 분할
  • Level Streaming Volume 활용

게임 장르별 레벨 구조 설계

 1. FPS 게임

  • 중앙 퍼시스턴트 레벨 + 전투 구역 서브레벨
  • 각 전투 구역을 독립적으로 디자인 및 최적화

 2. 오픈 월드 RPG

  • 대규모 지형 레벨 + 세부 지역 서브레벨
  • World Composition 시스템 활용

 3. 레이싱 게임

  • 트랙 레벨 + 환경 디테일 서브레벨
  • 트랙 부분을 모듈식으로 설계하여 다양한 조합 가능

대규모 오픈 월드 레벨 관리

 1. World Composition 활성화

  • World Settings > Enable World Composition: True

 2. 타일 기반 레벨 디자인

  • 전체 맵을 그리드 형태의 타일로 분할
  • 각 타일을 개별 레벨로 관리

 3. 거리 기반 스트리밍

  • World Composition Settings에서 스트리밍 거리 설정
  • 플레이어 주변 타일만 로드하여 성능 최적화

레벨 스트리밍 기본 설정

 1. Level Streaming Volume 추가

  • Place Actors 패널 > Volumes > Level Streaming Volume

 2. 스트리밍 레벨 연결

  • World Settings > Levels
  • Add Level 버튼으로 스트리밍할 레벨 추가

 3. 스트리밍 방식 설정

  • Always Loaded: 항상 메모리에 로드
  • Blueprint: 블루프린트로 로드/언로드 제어

 예시 블루프린트 코드

Load Stream Level:
  Level Name: "SubLevel_City"
  Make Visible After Load: True
  Should Block on Load: True

레벨 구조가 미치는 영향

 1. 성능 영향

  • 적절한 레벨 분할로 메모리 사용 최적화
  • 스트리밍을 통한 로딩 시간 단축 및 프레임 레이트 향상

 2. 개발 워크플로우 영향

  • 팀 협업 용이성: 각 팀원이 독립적인 서브레벨 작업 가능
  • 반복 작업 감소: 모듈식 레벨 디자인으로 재사용성 증가
  • 버전 관리 효율성: 작은 단위의 레벨로 충돌 감소

 3. 유지보수 용이성

  • 문제 발생 시 특정 서브레벨만 수정 가능, 추후 업데이트 시 부분적 콘텐츠 교체 용이

 효과적인 레벨 구조 설정은 게임 개발의 근간을 이루는 중요한 과정입니다.

 잘 설계된 레벨 구조는 게임의 성능을 최적화하고, 개발 팀의 생산성을 크게 향상시킬 수 있습니다.

 레벨 구조 설정 시 항상 게임의 최종 규모와 복잡도를 염두에 두어야 합니다.

 초기에는 단순해 보이더라도, 개발이 진행됨에 따라 레벨이 복잡해질 수 있으므로, 유연성과 확장성을 갖춘 구조를 설계하는 것이 중요합니다.

 또한 팀 내에서 레벨 구조에 대한 명확한 가이드라인을 수립하고 공유하여 모든 팀원이 일관된 방식으로 작업할 수 있도록 해야 합니다.