[TIL] 2026-06-08 | 최종 팀 프로젝트 4 - Procedural Dungeon 환경에서 Packed Level Actor(PLA)를 이용한 맵 최적화

2026. 6. 8. 21:20·언리얼 게임개발

현재 개발 중인 프로젝트에서는 Procedural Dungeon 플러그인을 사용하여 여러 개의 Room을 조합하는 방식으로 던전을 생성하고 있다.

우리 게임만의 분위기를 내기 위해 다양한 StaticMesh를 조합하여 BP로 만들어 맵에 배치하다보니, Room 하나에 배치되는 Actor 수가 생각보다 많이 증가하기 시작했다.

 

예를 들어 하나의 Room에는 다음과 같은 형태의 환경 타일들이 배치되어 있다.

BP_Floor
├ Floor
├ SideBorder
├ Pipe
└ Supporter

문제는 이런 BP가 수십 개씩 배치되면서 Room 하나에 적게는 500개에서 많게는 1000개의 Actor가 존재하게 되었다는 점이다.

Procedural Dungeon은 Room을 스트리밍 방식으로 로드하기 때문에 Actor 수가 계속 증가하면 로딩 비용도 무시할 수 없게 된다.

그래서 Packed Level Actor(PLA)를 적용하는 방향을 검토하게 되었다.


1. PLA란?

PLA(Packed Level Actor)는 여러 개의 환경 Actor를 하나의 Actor로 패킹하는 기능이다.

예를 들어

Wall
Floor
Pipe
Ceiling
Decoration

같은 환경 오브젝트들을

PLA_Geometry

하나로 묶어서 관리할 수 있다.


2. PLA를 적용하면 무엇이 좋아질까?

2-1. Actor 수 감소

현재 구조

Room_A

BP_Floor_01
BP_Floor_02
BP_Floor_03
...

↓

PLA 적용

Room_A

PLA_Geometry
Door
EnemySpawn
Interactable

환경 Actor 대부분을 하나로 묶을 수 있다.

Actor 수가 줄어들면

  • Actor 생성 비용 감소
  • Component 등록 비용 감소
  • BeginPlay 호출 감소

효과를 기대할 수 있다.


2-2. Draw Call 감소

이번에 PLA를 조사하면서 가장 의외였던 부분이다.

처음에는 단순히 Actor 수만 줄어드는 기능이라고 생각했는데,

PLA는 내부적으로 동일한 Static Mesh를 분석하여 Instancing 최적화를 수행한다.

예를 들어

Wall_A
Wall_A
Wall_A
Wall_A

같은 Mesh가 여러 번 사용되고 있다면

개별적으로 렌더링하는 것보다 더 적은 Draw Call로 처리할 수 있다.

즉

Actor 감소
+
Draw Call 감소

두 가지 효과를 동시에 기대할 수 있다.

환경 오브젝트 비중이 높은 맵일수록 효과가 클 것으로 보인다.


3. 조명은 StaticMesh 등은 PLA에서 제외

처음에는 천장 조명도 같이 PLA로 묶는 것을 고려했다.

하지만 PLA로 패킹된 이후에는 개별 조명의 색상이나 설정 변경이 쉽지 않다.

예를 들어

정상 상태
경보 상태
비상 상태

에 따라 조명 색을 변경해야 하는 경우가 있는데,

PLA 안에 포함된 조명은 관리가 매우 불편해진다.

따라서 최종적으로는

PLA_Geometry
 ├ Wall
 ├ Floor
 ├ Ceiling
 └ Decoration

BP_RoomLighting
 └ Lights

형태로 분리하기로 했다.


결론

이번에 PLA를 조사하면서 단순히 Actor 수를 줄이는 기능이라고 생각했던 기존 인식이 잘못되었다는 것을 알게 되었다.

 

PLA는 단순한 Actor 통합 기능이 아니라, 반복되는 환경 Geometry를 효율적으로 패킹하여 Actor 수와 Component 수를 줄이고, 렌더링 최적화까지 함께 수행하는 기능이다.

 

현재 프로젝트에서는 Procedural Dungeon 플러그인을 사용하고 있기 때문에, Room 내부의 정적인 환경 Geometry만 PLA로 변환하는 방식을 선택했다.

 

실제로 기존 Room들을 PLA로 변환한 후 테스트해본 결과, 던전 생성 시 발생하는 Dungeon Generation 시간이 눈에 띄게 감소했으며, 체감상 Room 로딩도 이전보다 훨씬 빠르게 이루어졌다.

반응형

'언리얼 게임개발' 카테고리의 다른 글

[TIL] 2026-06-09 | 최종 팀 프로젝트 5 - GameplayEffect와 GameplayCue 기반, 멀티플레이 환경에서 데미지 플래시 컴포넌트 구현  (0) 2026.06.09
[TIL] 2026-05-21 | 최종 팀 프로젝트 3 - 전투 맵 디자인 및 NavMesh 설정  (1) 2026.05.21
[TIL] 2026-05-20 | 최종 팀 프로젝트 2 - 기획서 마일스톤 단위로 분리  (1) 2026.05.20
[TIL] 2026-05-15 | 최종 팀 프로젝트 1 - 프로토타입 기획서  (0) 2026.05.15
[TIL] 2026-04-29 | AI를 활용한 나만의 3D 게임 캐릭터 만들기 2 (Kawaii Physics를 활용한 머리카락 물리 적용)  (0) 2026.04.29
'언리얼 게임개발' 카테고리의 다른 글
  • [TIL] 2026-06-09 | 최종 팀 프로젝트 5 - GameplayEffect와 GameplayCue 기반, 멀티플레이 환경에서 데미지 플래시 컴포넌트 구현
  • [TIL] 2026-05-21 | 최종 팀 프로젝트 3 - 전투 맵 디자인 및 NavMesh 설정
  • [TIL] 2026-05-20 | 최종 팀 프로젝트 2 - 기획서 마일스톤 단위로 분리
  • [TIL] 2026-05-15 | 최종 팀 프로젝트 1 - 프로토타입 기획서
개발근육체육관원
개발근육체육관원
개발 근육 단련 체육관 입니다.
  • 개발근육체육관원
    개발근육체육관
    개발근육체육관원
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • 언리얼 게임개발 (13)
      • AlgorithmCodekata (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Til
    c++
    AlgorithmCodekata
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
개발근육체육관원
[TIL] 2026-06-08 | 최종 팀 프로젝트 4 - Procedural Dungeon 환경에서 Packed Level Actor(PLA)를 이용한 맵 최적화
상단으로

티스토리툴바