레벨 인스턴싱은 레벨 편집 경험을 개선하고 간소화하도록 설계된 레벨 기반 워크플로입니다. 하나 이상의 액터와 함께 레벨 인스턴싱 워크플로를 사용하여 월드 전체에 배치하고 반복할 수 있는 레벨 인스턴스를 만들 수 있습니다.
이 워크플로의 이점은 다음과 같습니다.
-
레벨 인스턴스가 컨텍스트에서 편집되므로 변경사항이 월드에 미치는 영향을 즉시 확인할 수 있습니다. 하나의 인스턴스를 변경해서 저장하면 모든 인스턴스에 적용됩니다.
-
관심 지점, 건물, 게임플레이 설정과 같은 모든 스태틱 메시 배열의 복사본을 템플릿으로 빠르게 생성할 수 있습니다.
도시 샘플 스카이라인입니다.
월드 파티션(World Partition) 을 사용하지 않고도 레벨 스트리밍(Level Streaming) 을 사용할 수는 있지만, 레벨 인스턴스는 월드 파티션 메인 월드 외부에서 스트리밍 관리나 스트리밍 전략을 자동으로 처리하지 않습니다.
레벨 인스턴스 생성하기
다음과 같은 두 가지 레벨 인스턴스 타입이 있습니다.
- 레벨 인스턴스: 결합되어 서브레벨을 생성하는 액터 컬렉션입니다. 프로젝트 전체에서 한 서브레벨의 인스턴스를 여러 번 반복해 사용할 수 있는데, 이는 이전 언리얼 엔진 버전에는 없던 기능입니다. 관심 지점과 독립형 게임플레이 설정에 이 타입을 사용합니다.
- 패킹된 레벨 블루프린트 : 결합되어 렌더링에 최적화된 단일 블루프린트 액터(Blueprint Actor) 를 생성하는 스태틱 메시(Static Mesh) 에셋입니다. 스태틱 메시는 패킹된 레벨 액터(Packed Level Actor) 에 연결된 패킹된 레벨 블루프린트(Packed Level Blueprint) 의 인스턴스로 대체됩니다. 이 타입은 에인션트의 협곡에 사용된 메가 어셈블리와 같은 스태틱 건물과 고밀도 비주얼 설정에 사용하는 것이 좋습니다.
레벨 인스턴스 생성하기
새로운 레벨 인스턴스는 선택한 액터로부터 생성되며 뷰포트 나 아웃라이너 에서 생성할 수 있습니다.
액터를 선택한 다음, 해당 액터 중 하나를 우클릭하여 컨텍스트에 맞는 메뉴를 불러옵니다. 메뉴의 레벨(Level) 옵션으로 이동하여 레벨 인스턴스 생성(Create Level Instance) 을 선택합니다.
컨텍스트 메뉴로 레벨 인스턴스를 생성합니다.
다음과 같은 세팅이 있는 대화 상자가 표시됩니다.
새 레벨 인스턴스 대화 상자입니다.
세팅 | 설명 |
---|---|
외부 액터(External Actors) | 외부 액터가 액터당 한 개의 파일 시스템을 사용할 수 있습니다. 자세한 정보는 액터당 한 개의 파일 문서를 참조하세요. |
피벗 타입(Pivot Type) | 레벨 인스턴스가 갖게 될 피벗 타입:
|
피벗 액터(Pivot Actor) | 액터가 피벗으로 선택된 경우, 이 드롭다운을 사용하여 레벨 인스턴스의 피벗 포인트가 될 액터를 선택합니다. |
세팅을 선택하고 확인(OK) 을 클릭하면, 새 레벨 인스턴스를 저장할지 묻는 메시지가 표시됩니다.
이 프로세스를 통해 레벨에 새 레벨 인스턴스 액터가 생성되어, 전에 선택한 액터를 대체합니다. 이 액터는 방금 생성된 레벨을 나타내며, 이 액터에 적용된 모든 트랜스폼이 레벨 인스턴스에 적용됩니다.
새 레벨 인스턴스 액터가 레벨에서 에셋을 대체합니다.
레벨 인스턴스를 구성하는 액터는 여전히 아웃라이너에 표시되지만, 이제 레벨 인스턴스 액터의 자손이 되어 선택할 수 없게 됩니다.
해당 에셋은 이제 레벨 인스턴스 액터의 자손입니다.
패킹된 레벨 블루프린트 생성하기
레벨 인스턴스와 마찬가지로 패킹된 레벨 블루프린트는 선택한 액터를 사용하여 생성되며 뷰포트(Viewport) 나 아웃라이너(Outliner) 에서 우클릭하여 생성할 수 있습니다.
액터를 선택한 다음, 해당 액터 중 하나를 우클릭하여 컨텍스트에 맞는 메뉴를 불러옵니다. 메뉴의 레벨(Level) 옵션으로 이동하여 패킹된 레벨 액터 생성(Create Packed Level Actor) 을 선택합니다.
컨텍스트 메뉴를 사용하여 패킹된 레벨 블루프린트를 생성합니다.
위와 같은 대화 상자가 표시됩니다. 세팅을 선택하고 확인(OK) 을 클릭합니다. 그러면 새로운 레벨과 새로 패킹된 레벨 블루프린트를 저장할지 묻는 메시지가 표시됩니다.
이 프로세스는 패킹된 레벨 블루프린트와 연결된 레벨에 새로운 패킹된 레벨 액터 를 생성합니다.
레벨 인스턴스 편집하기
그렇게 액터를 생성한 후에는 레벨 인스턴스와 패킹된 레벨 블루프린트를 월드에 복사하고 배치할 수 있습니다.
레벨 인스턴스 편집하기
레벨 인스턴스를 편집하려면 뷰포트에서 레벨 인스턴스 중 하나를 선택하고 우클릭하여 메뉴를 연 다음, 레벨(Level) 옵션으로 이동하여 편집(Edit) 을 선택합니다. 디테일(Details) 패널에서 편집(Edit) 버튼을 클릭해도 됩니다.
그러면 월드의 다른 모든 액터가 회색으로 표시되므로, 컨텍스트에서 레벨 인스턴스를 더 쉽게 편집할 수 있습니다.
뷰포트에서 레벨 인스턴스를 편집하는 동안 다른 모든 액터는 회색으로 표시됩니다.
편집이 완료되면, 아웃라이너 에서 해당 레벨 인스턴스 액터를 선택하고 디테일 패널에서 변경사항 커밋(Commit Changes) 을 클릭합니다.
디테일 패널에서 변경사항 커밋을 클릭하여 레벨 인스턴스 변경사항을 저장합니다.
변경사항을 커밋하지 않고 편집을 종료하려면 Esc 를 두 번 누릅니다.
레벨 인스턴스의 모든 변경사항은 월드의 모든 레벨 인스턴스 복사본에 전파됩니다.
패킹된 레벨 블루프린트 편집하기
패킹된 레벨 블루프린트를 편집하려면 아웃라이너 에서 해당 인스턴스를 찾아 편집 을 클릭합니다. 콘텐츠 브라우저(Content Browser) 에서 블루프린트를 찾아 더블클릭할 수도 있습니다. 그러면 블루프린트 에디터 창이 열립니다.
블루프린트 에디터 창에 선택한 패킹된 레벨 블루프린트가 표시됩니다.
레벨 인스턴스와 마찬가지로 패킹된 레벨 블루프린트의 변경사항은 월드의 모든 다른 복사본에도 전파됩니다.
레벨 인스턴스 해제하기
레벨 인스턴스를 해제하면 월드에서 레벨 인스턴스 액터나 패킹된 레벨 액터가 제거되고 둘을 생성하는 데 사용된 원래 에셋으로 대체됩니다. 콘텐츠 브라우저에서 레벨 인스턴스나 패킹된 레벨 블루프린트가 삭제되지는 않습니다.
이 작업은 실행 취소할 수 없습니다.
런타임 시 레벨 인스턴스
데이터 레이어
레벨 인스턴스와 패킹된 레벨 블루프린트는 월드 파티션: 데이터 레이어를 지원합니다.
레벨 인스턴스 안에 포함된 액터는 기본적으로 해당 레벨 인스턴스 액터에 할당된 데이터 레이어를 상속합니다. 레벨 인스턴스 내 액터는 추가 데이터 레이어도 지원합니다.
예를 들어, 하우스 관심 지점을 생성하기 위해 에셋을 포함하는 레벨 인스턴스를 이웃 데이터 레이어에 할당할 수 있습니다. 레벨 인스턴스는 해당 데이터 레이어가 활성화될 때만 표시되는 여러 홀리데이 데이터 레이어에 할당된 홀리데이 테마 아이템을 포함할 수도 있습니다.
레벨 스트리밍 모드
레벨 인스턴스와 패킹된 레벨 액터는 월드 파티션 세팅을 사용하여 임베디드 모드나 레벨 스트리밍 모드로 스트리밍 행동을 정의합니다.
이러한 세팅은 편집할 수 없으며 여기에는 참조용으로 포함되었습니다.
임베디드 모드
임베디드 모드(Embedded Mode) 사용 시, 액터당 한 개의 파일(One File Per Actor, OFPA) 시스템을 사용하는 레벨 인스턴스는 무시되고 해당 액터가 런타임에서 월드 파티션 그리드에 추가됩니다. 임베디드 모드는 디폴트 런타임 모드이며 권장되는 레벨 콘텐츠 스트리밍 메서드입니다. 또한, 이 모드는 레벨 인스턴스가 에디터 내에만 존재하도록 합니다.
임베디드 모드를 사용하면 런타임 시 OFPA를 사용하지 않는 일부 액터가 소실됩니다. 예를 들어, 임베디드 레벨 인스턴스의 AWorldSettings 오브젝트는 OFPA 액터가 아니므로 런타임 시 존재하지 않습니다. 사용자는 각자 알아서 이러한 액터에 의존하지 않아야 하며, 필요시 레벨 스트리밍 모드를 사용해야 합니다.
레벨 스트리밍 모드
OFPA를 사용하지 않는 레벨 인스턴스는 월드 파티션 그리드에 임베드될 수 없으며, 런타임에서 표준 레벨 스트리밍을 대신 사용합니다. 즉, 소유한 월드 파티션 런타임 셀을 통해 레벨 인스턴스 액터가 로드될 때, 연결된 레벨이 로드됩니다.
이 레벨 스트리밍 메서드는 스트림에 더 많은 레벨을 추가하므로 런타임 비용이 증가됩니다. 퍼포먼스에 영향을 주기 때문에 이 스트리밍 모드를 사용하는 고밀도 레벨을 사용하는 것은 권장되지 않습니다.
월드 파티션: 데이터 레이어를 사용한 임베디드 모드는 이전에 동적으로 로드된 레벨로 수행할 수 있었던 작업을 비슷하게 처리할 수 있는 좋은 방법입니다.