icon안동민 개발노트

레벨 블루프린트와의 상호작용


 레벨 블루프린트는 특정 레벨에 대한 전역 이벤트 그래프로, 해당 레벨의 전반적인 동작과 이벤트를 관리하는 데 사용됩니다.

레벨 블루프린트의 개념과 역할

  • 정의 : 각 레벨마다 하나씩 존재하는 특별한 유형의 블루프린트
  • 역할
  1. 레벨 특정 이벤트 처리
  2. 레벨 내 액터 간 상호작용 관리
  3. 레벨 초기화 및 설정
  4. 전역적인 레벨 상태 관리

레벨 블루프린트 vs 일반 블루프린트

특성레벨 블루프린트일반 블루프린트
범위레벨 전체특정 액터 또는 객체
인스턴스레벨당 하나여러 개 가능
생성 방법자동 생성수동 생성
주요 용도레벨 로직, 전역 이벤트재사용 가능한 동작

레벨 블루프린트 접근 방법

  1. 레벨 에디터 상단의 'Blueprints' 드롭다운 메뉴
  2. 'Open Level Blueprint' 선택
레벨 블루프린트 접근 방법

액터 참조 방법

 레벨 블루프린트에서는 레벨에 배치된 액터를 쉽게 참조할 수 있습니다.

  1. 레벨 에디터에서 액터 선택
  2. 레벨 블루프린트 에디터에서 우클릭
  3. 'Create a Reference to [액터 이름]' 선택
레벨 블루프린트에서 액터 참조

레벨 이벤트 처리

 레벨 블루프린트는 레벨 관련 이벤트를 처리하는 데 이상적입니다.

 예 : 레벨 시작 시 초기화

Event BeginPlay
    |
[Set Up Level Lighting] --> [Spawn Initial Enemies]
                        --> [Start Background Music]
레벨 시작 이벤트 처리 예시

레벨 블루프린트와 액터 블루프린트 간 통신

  1. 이벤트 디스패처 사용
Actor Blueprint: BP_Switch
Event Dispatcher: OnSwitchActivated
 
Level Blueprint:
[Get BP_Switch_1] --> [Bind Event to OnSwitchActivated]
                            |
                    [Open Secret Door]
  1. 직접 함수 호출
Level Blueprint:
[Get BP_Player] --> [Cast To BP_MyPlayerCharacter]
                          |
                  [Call UpdateObjective]
레벨 블루프린트와 액터 통신 예시

적절한 사용 사례

  1. 레벨 초기화
  • 레벨 시작 시 필요한 액터 스폰 또는 설정
  1. 환경 제어
  • 시간 변화, 날씨 효과 등 레벨 전체 환경 관리
  1. 게임플레이 이벤트 처리
  • 체크포인트, 목표 완료 등 레벨 진행 관련 이벤트
  1. 컷신 및 시네마틱 시퀀스
  • 레벨 특정 시점의 카메라 워크 또는 시네마틱 제어
  1. 레벨 간 전환 로직
  • 다음 레벨로의 전환 조건 및 처리

주의해야 할 점

  1. 과도한 사용 자제
  • 모든 로직을 레벨 블루프린트에 넣으면 관리가 어려워집니다.
  1. 재사용성 고려
  • 여러 레벨에서 사용될 로직은 일반 블루프린트로 분리
  1. 성능 영향
  • 복잡한 로직이나 빈번한 업데이트는 성능에 영향을 줄 수 있음
  1. 버전 관리
  • 레벨 블루프린트 변경 시 레벨 파일 전체가 영향을 받음
  1. 디버깅 어려움
  • 레벨 블루프린트가 복잡해지면 디버깅이 어려워질 수 있음

효과적인 레벨 관리 기법

  1. 모듈화
  • 관련 기능을 함수로 그룹화하여 관리
  1. 명확한 명명 규칙
  • 변수, 함수, 이벤트에 명확하고 일관된 이름 사용
  1. 주석 활용
  • 복잡한 로직에 주석을 달아 이해도 향상
  1. 레벨 블루프린트 템플릿 활용
  • 공통 기능을 템플릿화하여 재사용
  1. 이벤트 중심 설계
  • 레벨의 주요 상태 변화를 이벤트로 관리

예제 : 보스 전투 레벨 관리

Level Blueprint:
 
Event BeginPlay
    |
[Set Up Arena] --> [Spawn Boss] --> [Start Background Music]
                         |
                  [Bind to Boss Health Changed]
 
Custom Event: OnBossHealthChanged
[Get Boss Current Health] --> [Update Boss Health Bar UI]
                          --> [Check Health Thresholds]
                                    |
               [Trigger Phase Change Events (25%, 50%, 75%)]
 
Custom Event: OnBossDefeated
[Stop Background Music] --> [Play Victory Fanfare]
                        --> [Unlock Exit Door]
                        --> [Update Player Progress]
                        --> [Show Victory UI]
 
Custom Event: OnPlayerDefeated
[Stop Background Music] --> [Play Defeat Sound]
                        --> [Show Defeat UI]
                        --> [Offer Retry Option]

 이 예제에서 레벨 블루프린트는 보스 전투의 전체적인 흐름을 관리합니다. 레벨 초기화, 보스의 상태 변화에 따른 이벤트 처리, 승리 또는 패배 조건 처리 등을 담당합니다.

 레벨 블루프린트는 특정 레벨의 고유한 로직과 이벤트를 관리하는 강력한 도구입니다. 효과적으로 사용하면 레벨별 게임플레이를 쉽게 제어하고 관리할 수 있지만, 과도한 사용은 복잡성을 증가시킬 수 있습니다. 레벨 블루프린트와 액터 블루프린트의 적절한 균형을 유지하며, 재사용 가능한 로직은 분리하여 관리하는 것이 중요합니다. 레벨 디자인과 프로그래밍의 경계에서 레벨 블루프린트를 효과적으로 활용하면, 더욱 동적이고 반응적인 게임 환경을 만들 수 있습니다.