Level Instancing

레벨 인스턴싱 및 프로젝트에서 레벨 인스턴싱을 사용하는 방법을 소개합니다.

Choose your operating system:

Windows

macOS

Linux

레벨 인스턴싱은 레벨 편집 경험을 개선하고 간소화하기 위해 설계된 레벨 기반 워크플로입니다. 레벨 인스턴싱 워크플로를 사용하면 하나 이상의 액터를 사용해 월드 전반에 걸쳐 배치하고 반복할 수 있는 레벨 인스턴스를 만들 수 있습니다.

이 워크플로의 이점은 다음과 같습니다.

  • 레벨 인스턴스가 맥락에 따라 편집되므로 변경사항이 월드에 미치는 영향을 즉시 확인할 수 있습니다. 하나의 인스턴스에 대한 변경사항은 저장 시 모든 인스턴스에 걸쳐 반복됩니다.

  • 관심 지점, 건물 및 게임플레이 설정과 같이 월드에 일반적으로 사용되는 스태틱 메시 배열의 복사본을 빠르게 "스탬프" 처리합니다.

  • 에픽게임즈에서 만든 도시 샘플에인션트의 협곡 데모 제작에 사용된 정식 버전 프로세스입니다.

도시 샘플 스카이라인입니다.

월드 파티션 을 사용하지 않고도 레벨 스트리밍 을 사용할 수는 있지만, 월드 파티션 메인 월드 외부에서는 레벨 인스턴스의 스트리밍 관리나 스트리밍 전략이 자동으로 처리되지 않습니다.

레벨 인스턴스 생성하기

다음과 같은 두 가지 레벨 인스턴스 타입이 있습니다.

  • 레벨 인스턴스 : 결합되어 서브레벨을 생성하는 액터 컬렉션입니다. 프로젝트 전체에 걸쳐 서브레벨의 여러 인스턴스를 반복할 수 있는데, 이는 이전 언리얼 엔진 버전에서는 가능하지 않던 기능입니다. 관심 지점과 독립형 게임플레이 설정에 이 타입을 사용합니다.

  • 패킹된 레벨 블루프린트 : 결합되어 렌더링에 최적화된 단일 블루프린트 액터 를 생성하는 스태틱 메시 에셋입니다. 스태틱 메시는 패킹된 레벨 액터 에 연결된 패킹된 레벨 블루프린트 의 인스턴스로 대체됩니다. 이 타입은 에인션트의 협곡에 사용된 메가 어셈블리와 같은 고밀도 비주얼 설정과 스태틱 건물에 사용하는 것이 좋습니다.

레벨 인스턴스 생성하기

새로운 레벨 인스턴스는 선택한 액터로부터 생성되며 뷰포트아웃라이너 에서 생성할 수 있습니다.

액터를 선택한 다음, 해당 액터 중 하나를 우클릭하여 컨텍스트 메뉴를 불러옵니다. 메뉴의 레벨(Level) 옵션으로 이동하여 레벨 인스턴스 생성(Create Level Instance) 을 선택합니다.

컨텍스트 메뉴로 레벨 인스턴스를 생성합니다.

다음과 같은 세팅이 있는 대화 상자가 표시됩니다.

새 레벨 인스턴스 대화 상자입니다.

세팅

설명

외부 액터(External Actors)

외부 액터가 액터당 한 개의 파일 시스템을 사용할 수 있습니다. 자세한 정보는 액터당 한 개의 파일 문서를 참조하세요.

피벗 타입(Pivot Type)

레벨 인스턴스가 갖게 될 피벗 타입:

  • Center Min Z: 가장 낮은 Z 값의 레벨 인스턴스 중앙에 피벗이 위치합니다.

  • Center: : 레벨 인스턴스 중앙에 피벗이 위치합니다.

  • 피벗 액터 : 액터가 피벗으로 선택된 경우, 이 드롭다운을 사용하여 레벨 인스턴스의 피벗 포인트가 될 액터를 선택합니다.

피벗 액터(Pivot Actor)

액터가 피벗으로 선택된 경우, 이 드롭다운을 사용하여 레벨 인스턴스의 피벗 포인트가 될 액터를 선택합니다.

세팅을 선택하고 확인(OK) 을 클릭하면, 새 레벨 인스턴스를 저장할지 묻는 메시지가 표시됩니다.

이 프로세스는 이전에 선택한 액터를 대체하는 새 레벨 인스턴스 액터를 레벨에 생성합니다. 이 액터는 방금 생성된 레벨을 나타내며, 이 액터에 적용된 모든 트랜스폼이 레벨 인스턴스에 적용됩니다.

새 레벨 인스턴스 액터가 레벨에서 에셋을 대체합니다.

레벨 인스턴스를 구성하는 액터는 여전히 아웃라이너에 표시되지만, 이제 레벨 인스턴스 액터의 자손이며 선택할 수 없습니다.

해당 에셋이 이제 레벨 인스턴스 액터의 자손입니다.

패킹된 레벨 블루프린트 생성하기

레벨 인스턴스와 마찬가지로 패킹된 레벨 블루프린트는 선택한 액터를 사용하여 생성되며 뷰포트아웃라이너 에서 우클릭하여 생성할 수 있습니다.

액터를 선택한 다음, 해당 액터 중 하나를 우클릭하여 컨텍스트 메뉴를 불러옵니다. 메뉴의 레벨(Level) 옵션으로 이동하여 패킹된 레벨 액터 생성(Create Packed Level Actor) 을 선택합니다.

컨텍스트 메뉴로 패킹된 레벨 블루프린트를 생성합니다.

위와 같은 대화 상자가 표시될 것입니다. 세팅을 선택하고 확인 을 클릭합니다. 그러면 새 레벨과 새 패킹된 레벨 블루프린트를 저장할지 묻는 메시지가 표시됩니다.

이 프로세스는 패킹된 레벨 블루프린트와 연결된 레벨에 패킹된 레벨 액터 를 생성합니다.

레벨 인스턴스 편집하기

생성된 레벨 인스턴스와 패킹된 레벨 블루프린트는 월드에 복사하고 배치할 수 있습니다.

레벨 인스턴스 편집하기

레벨 인스턴스를 편집하려면 뷰포트에서 레벨 인스턴스 중 하나를 선택하고 우클릭하여 메뉴를 연 다음, 레벨(Level) 옵션으로 이동하여 편집(Edit) 을 선택합니다. 디테일 패널에서 편집 버튼을 클릭해도 됩니다.

그러면 맥락에 따라 더 쉽게 레벨 인스턴스를 편집할 수 있도록 월드의 다른 모든 액터가 회색으로 표시됩니다.

뷰포트에서 레벨 인스턴스를 편집하는 동안 다른 모든 액터는 회색으로 표시됩니다.

편집이 완료되면, 아웃라이너 에서 해당 레벨 인스턴스 액터를 선택하고 디테일 패널에서 변경사항 커밋(Commit Changes) 을 클릭합니다.

디테일 패널에서 변경사항 커밋을 클릭하여 레벨 인스턴스 변경사항을 저장합니다.

변경사항을 커밋하지 않고 편집을 종료하려면 Esc 를 두 번 누릅니다.

레벨 인스턴스에 대한 모든 변경사항은 월드의 모든 레벨 인스턴스 복사본에 전파됩니다.

패킹된 레벨 블루프린트 편집하기

패킹된 레벨 블루프린트를 편집하려면 아웃라이너 에서 그 인스턴스를 찾아 편집 을 클릭합니다 콘텐츠 브라우저(Content Browser) 에서 블루프린트를 찾아 더블클릭해도 됩니다. 그러면 블루프린트 에디터 창이 열립니다.

블루프린트 에디터 창에 선택한 패킹된 레벨 블루프린트가 표시됩니다.

레벨 인스턴스와 달리 패킹된 레벨 블루프린트에 대한 변경사항은 월드의 다른 복사본에 전파되지 않고 향후 복사본에만 영향을 줍니다.

레벨 인스턴스 해제

레벨 인스턴스를 해제하면 월드에서 레벨 인스턴스 액터나 패킹된 레벨 액터가 제거되고 둘을 생성하는 데 사용된 원래 에셋으로 대체됩니다. 콘텐츠 브라우저에서 레벨 인스턴스나 패킹된 레벨 블루프린트가 삭제되지는 않습니다.

이 작업은 실행 취소할 수 없습니다.

런타임 시 레벨 인스턴스

데이터 레이어

레벨 인스턴스와 패킹된 레벨 블루프린트는 월드 파티션: 데이터 레이어를 지원합니다.

레벨 인스턴스에 포함된 액터는 기본적으로 해당 레벨 인스턴스 액터에 할당된 데이터 레이어를 상속합니다. 레벨 인스턴스 내 액터는 추가 데이터 레이어도 지원합니다.

예를 들어, 하우스 관심 지점을 생성하기 위한 에셋이 포함된 레벨 인스턴스를 이웃 데이터 레이어에 할당할 수 있습니다. 레벨 인스턴스는 데이터 레이어가 활성화된 경우에만 표시되는 다른 홀리데이 데이터 레이어에 할당된 홀리데이 테마 아이템을 포함할 수도 있습니다.

레벨 스트리밍 모드

레벨 인스턴스와 패킹된 레벨 액터는 월드 파티션 세팅을 사용하여 임베디드 모드나 레벨 스트리밍 모드로 스트리밍 행동을 정의합니다.

이러한 세팅은 편집할 수 없으며 여기에는 참조용으로 포함되어 있습니다.

임베디드 모드

임베디드 모드(Embedded Mode) 사용 시, 액터당 한 개의 파일(One File Per Actor, OFPA) 시스템을 사용하는 레벨 인스턴스는 무시되고 해당 액터가 런타임에서 월드 파티션 그리드에 추가됩니다. 임베디드 모드는 디폴트 런타임 모드이며 권장되는 레벨 콘텐츠 스트리밍 메서드입니다. 또한, 이 모드는 레벨 인스턴스가 에디터 내에만 존재하도록 합니다.

임베디드 모드를 사용하면 런타임 시 OFPA를 사용하지 않는 일부 액터가 소실됩니다. 예를 들어, 임베디드 레벨 인스턴스의 AWorldSettings 오브젝트는 OFPA 액터가 아니므로 런타임 시 존재하지 않습니다. 사용자가 알아서 이러한 액터에 의존하지 않거나 필요시 레벨 스트리밍 모드를 사용해야 합니다.

레벨 스트리밍 모드

OFPA를 사용하지 않는 레벨 인스턴스는 월드 파티션 그리드에 임베드될 수 없으며, 런타임에서 표준 레벨 스트리밍을 대신 사용합니다. 즉, 소유한 월드 파티션 런타임 셀을 통해 레벨 인스턴스 액터가 로드될 때, 연결된 레벨이 로드됩니다.

이 레벨 스트리밍 메서드는 스트림에 더 많은 레벨을 추가하므로 런타임 비용이 증가됩니다. 퍼포먼스에 영향을 주기 때문에 이 스트리밍 모드를 사용하는 고밀도 레벨을 사용하는 것은 권장되지 않습니다.

월드 파티션: 데이터 레이어를 사용한 임베디드 모드는 이전에 동적으로 로드된 레벨로 수행할 수 있었던 작업을 비슷하게 처리할 수 있는 좋은 방법입니다.