씬 그래프를 사용하여 단순한 몇 단계만 거치면 그레이박싱과 월드 제작에서 완성된 플레이 가능 레벨로 빠르게 전환할 수 있습니다.
씬 그래프는 Verse의 특성을 활용하는 Verse 네이티브 시스템입니다. 이를 통해 커스텀 제작된 인터랙티브 오브젝트와 게임플레이 경험으로 프로젝트를 보다 세부적으로 커스터마이징할 수 있습니다.
Verse가 백그라운드에서 어려운 작업을 모두 처리하여 엔티티가 의도한 대로 작동하도록 하므로, 씬 그래프를 사용하면 프로젝트 안정성이 향상됩니다. 또한 Verse는 씬 엔티티와 컴포넌트의 모든 부분에 심도 있게 액세스할 권한이 있으며, 이는 씬에 더욱 다양성을 더할 수 있다는 것을 의미합니다.
프로젝트에서 씬 그래프 활성화하기
프로젝트에서 씬 그래프를 사용하는 방법은 다음과 같습니다.
툴바에서 프로젝트(Project) > 프로젝트 세팅(Project Settings)을 선택하여 프로젝트 세팅 창을 엽니다.
프로젝트 세팅 창의 베타 액세스(Beta Access)에서 씬 그래프 툴(Scene Graph Tools)을 활성화합니다. 씬 그래프는 베타에서 기본적으로 활성화되어 있습니다.
씬 그래프 기능을 볼 수 있는지 확인하려면, 툴바에서 액터 배치(Place Actors)를 선택한 후 액터 배치 드롭다운에서 엔티티(Entities)가 표시되는지 확인합니다.
메타버스의 오브젝트
메타버스란 사람들이 3D 월드에서 실시간으로 플레이하고 소통하는 온라인 소셜 엔터테인먼트 경험입니다. 에픽게임즈는 이러한 메타버스 경험 제작을 지원하기 위해 UEFN을 위한 씬 그래프 시스템을 설계하고 있습니다.
씬 그래프 시스템에서는 언리얼 엔진의 액터 분류 없이도 오브젝트를 인스턴싱하고 재사용할 수 있습니다. 씬 그래프의 핵심은 게임을 제작하기 위해서뿐만 아니라 게이밍 환경에서 오브젝트를 렌더링 및 시뮬레이션하기 위해 데이터와 로직을 사용하는 구성 요소 세트입니다.
액터와 엔티티는 서로 교체할 수 없으며, 씬에서 함께 작동하는 서로 다른 시스템입니다.
씬 그래프를 사용하면 모든 디자인 의사 결정과 결과를 뷰포트에서 즉시 확인할 수 있는 3D 리얼타임 시뮬레이션 프레임워크를 구축할 수 있습니다. 디테일 패널 또는 프리팹 에디터에서 편집할 수 있습니다.
직접 제작했거나 벤더에서 구매한 에셋을 임포트하고, 이러한 에셋을 씬 그래프와 함께 사용하여 커스텀 제작 오브젝트 및 프리팹을 만들 수 있습니다.
씬 그래프에서 무엇을 제작하든, 메모리를 적게 소비하면서 여러 번 재사용할 수 있습니다. 씬 그래프 제작 시스템은 콘텐츠 간의 경계를 강화하는 동시에 복잡한 콘텐츠 공유 및 공유 시뮬레이션이 가능하도록 설계되었습니다.
엔티티 및 컴포넌트
엔티티 및 컴포넌트는 씬 그래프의 근간입니다. 엔티티와 컴포넌트는 오브젝트의 정의 및 비헤이비어를 제어하는 방식으로 작동합니다.
엔티티는 컴포넌트 또는 다른 엔티티의 컨테이너입니다. 빈 엔티티에는 가시적인 이펙트나 기능이 없습니다. 컴포넌트는 엔티티에 데이터와 비헤이비어를 제공하는 요소입니다. 엔티티에 추가된 컴포넌트의 조합은 씬에서 해당 엔티티가 해야 할 일을 정의합니다.
엔티티는 다양한 컴포넌트를 원하는 만큼 포함할 수 있습니다. 하지만 특정 컴포넌트 타입의 컴포넌트는 한 번에 하나만 한 엔티티에 추가할 수 있습니다. 예를 들어, 한 가지 타입의 light_component만 하나의 엔티티에 사용할 수 있습니다. 동일한 타입의 컴포넌트를 여러 개 사용하려면 컴포넌트의 각 인스턴스를 보유할 새 엔티티를 생성하면 됩니다.
일부 컴포넌트 타입은 UEFN에서 생성한 에셋에 의해 생성됩니다. 에셋 생성 컴포넌트란 프로젝트의 기존 콘텐츠(예: 메시, 사운드 또는 파티클 시스템 에셋)에 따라 자동으로 생성되는 컴포넌트 클래스입니다. 이러한 에셋에는 생성된 컴포넌트에서 수정할 수 있는 프로퍼티가 노출될 수도 있습니다.
컴포넌트에는 편집 가능한 프로퍼티가 있습니다. 이러한 프로퍼티는 스태틱 메시나 파티클 시스템처럼 물리적일 수도 있고, 플랫폼의 움직임을 정의하는 게임플레이 태그나 커스텀 Verse 코드처럼 논리적일 수도 있습니다. 기본적으로 모든 엔티티는 월드에서 엔티티가 존재할 위치를 지정하기 위한 트랜스폼 컴포넌트를 보유합니다.
Verse로 엔티티를 생성해도 트랜스폼 컴포넌트 생성이 자동으로 이루어지지 않습니다.
씬 그래프를 사용하면 메시, 사운드 큐 등으로부터 가져온 물리 데이터를 활용하여 세트 조각과 게임 메카닉을 빠르게 만들 수 있습니다.
메시 컴포넌트를 엔티티에 추가하고 메시가 컴포넌트의 메시 슬롯에서 선택되는 경우, 엔티티는 스태틱 메시의 물리적 구현이 됩니다. 즉, 건물이나 개별적인 세트 조각을 빠르게 모형으로 만들어 씬에서 바로 사용할 수 있습니다.
예를 들어 아래 영상에서는 엔티티가 상록수 군집으로 바뀝니다.
이 나무 군집을 직접 프리팹으로 바꾸거나, 추가적인 엔티티와 결합하여 숲 프리팹을 제작할 수 있습니다.
시뮬레이션을 나타내기 위해 하나의 엔티티(시뮬레이션 엔티티)가 프로젝트의 루트에 배치됩니다. 엔티티가 시뮬레이션 엔티티 아래에 중첩될 때 씬이 생성됩니다. 맵에 엔티티를 추가하는 방법으로 시뮬레이션 엔티티의 자손 엔티티를 자동 생성할 수 있습니다.
프리팹의 최상위 엔티티는 해당 프리팹의 루트 엔티티로, 다른 프리팹과 엔티티가 아래에 중첩되어 있습니다. 부모 프리팹은 자손의 룩, 그리고 자손이 씬의 다른 오브젝트와 상호작용하는 비헤이비어를 구성합니다.
이미지를 클릭하면 확대됩니다.
프리팹 루트 엔티티 → WoodenHouse_Tiny_Prefab
자손 프리팹 → WoodenHouse_RoofSmall_Prefab_C_1
자손 엔티티 → Building_WIndowCircle_Bright2
자손 엔티티 → Building_WIndowCircle_Bright4
자손 엔티티 → Building_WIndowCircle_Dark2
자손 엔티티 → Building_WIndowCircle_Dark4
자손 엔티티 → WoodenHouse_Floor
자손 엔티티 → WoodenHouse_RoofCap2
자손 엔티티 → WoodenHouse_RoofCap3
자손 엔티티 → WoodenHouse_RoofWindow2
자손 프리팹 → WoodenHouse_SmallFloor_Prefab_C_1
자손 엔티티 → WoodenHouse_Floor
자손 엔티티 → WoodenHouse_Wall10
자손 엔티티 → WoodenHouse_WallDoor_C4
자손 프리팹 → WoodenHouse_Windows_Prefab_C_3
자손 엔티티 → Building_WindowPlane_Bright3
자손 엔티티 → Building_WindowPlane_Bright4
자손 엔티티 → Building_WindowPlane_Dark3
자손 엔티티 → Building_WindowPlane_Dark4
자손 엔티티 → WoodenHouse_Windoows_10
각 자손 프리팹에는 프리팹의 룩과 프리팹이 씬의 다른 프리팹과 정렬되는 방식을 결정하는 컴포넌트가 있습니다. Verse를 사용하여 특정 프리팹 및 엔티티를 대상으로 자손 프리팹을 다른 프리팹과 교환하거나, 심지어 Building_WindowPlane_Bright 및 Building_WindowPlane_Dark entities에 사용되는 컬러를 변경할 수도 있습니다.
부분 또는 전체 엔티티의 작동 방식을 결정하는 컴포넌트 타입은 매우 많습니다. 씬 그래프에서 사용 가능한 다양한 컴포넌트 타입에 대해 자세히 알아보려면 컴포넌트를 참고하세요.
엔티티와 컴포넌트 사용에 대한 자세한 내용은 엔티티 및 컴포넌트 작업하기를 참고하세요.
Prefabs
씬 그래프는 조상과 후손 관계인 여러 엔티티를 함께 패키징하여 프리팹을 생성합니다. 조상은 부모, 조부모, 증조부모 등 다른 엔티티보다 상위의 엔티티 레벨입니다. 후손은 자손, 증손 등 다른 엔티티보다 하위의 엔티티 레벨입니다.
선택한 모든 엔티티, 엔티티 계층구조 및 해당 컴포넌트는 프리팹의 이 엔티티 트리에 즉시 추가됩니다. 프리팹이 있으면 프리팹 에디터에서 해당 프리팹의 모든 인스턴스를 커스터마이징할 수 있습니다.
프리팹의 인스턴스를 생성하려면 콘텐츠 브라우저에서 뷰포트로 프리팹을 드래그합니다. 프리팹 계층구조 내부에서 여러 프리팹을 중첩할 수도 있습니다. 계층구조를 사용하여 계층구조 내 모든 인스턴스와 프리팹에서 변경사항을 적용할 수 있습니다.
프리팹을 업데이트 및 개선하는 경우, 해당 오브젝트의 모든 인스턴스를 개별적으로 각각 업데이트하기 위해 찾을 필요가 없으므로 시간이 절약됩니다.
또한 계층구조에서 하위 조각을 선택한 후 다양한 컴포넌트 값을 오버라이드하여 비슷한 룩을 가진 다수의 오브젝트를 만들 수도 있습니다. 프리팹 에디터에서 편집하면서 오브젝트를 회전하고 여러 프리팹 인스턴스에 새로운 컴포넌트 값을 추가하는 것도 가능합니다.
에디터는 개별 컴포넌트 어트리뷰트의 오버라이드 토글 아이콘으로 디테일 패널에 모든 변경사항을 표시합니다. 또한 컴포넌트 카드 드롭다운 메뉴 버튼에 다양한 컴포넌트 아이콘도 표시합니다.
원본 프리팹 디자인으로 돌아가려면 개별 컴포넌트 오버라이드 토글을 클릭합니다. 그러면 오브젝트가 자동으로 부모 프리팹의 상태로 돌아갑니다. 컴포넌트 카드 드롭다운 메뉴 버튼을 클릭하고 오버라이드 지우기(Clear Override)를 선택할 수도 있습니다.
프리팹 수정에 대한 자세한 내용은 프리팹 및 프리팹 인스턴스를 참고하세요.
아래 영상에서 씬 그래프는 성 안의 2개의 방 프리팹을 만드는 데 사용됩니다.
방은 복제됩니다. 방의 한 엘리먼트는 바닥 메시를 선택한 후 원본을 대체하면 변경되며, 이 방법으로 새 프리팹을 생성합니다. 작은 성과 마을 모형을 빠르게 만들려면 엘리먼트 복사 및 대체를 계속하면 됩니다. 이 방법은 컴포넌트에서도 작동하므로, 성 안의 각 방에 다양한 비헤이비어를 추가할 수 있습니다.
프리팹을 편집해도 원본 오브젝트나 그 사본의 안정성 및 메모리에는 영향을 주지 않습니다. 따라서 섬을 위한 커스텀 오브젝트를 제작하기 위한 레벨 레이아웃, 추상 디자인, 아트를 완성할 수 있습니다. 씬 그래프 제작 시스템을 사용하면 여러 프로젝트에서 프리팹을 재사용하여 포트나이트에서 자신만의 게임 유니버스를 만들 수 있습니다.
씬 그래프의 Verse
Verse는 씬 그래프가 월드에서 엔티티를 생성 및 제거하고 커스텀 컴포넌트와 비헤이비어를 생성하기 위해 사용하는 프로그래밍 언어입니다.
Verse를 통해 이전 샘플의 집에서 흔들리던 야외 랜턴을 제작할 수 있습니다. Verse는 랜턴이 움직이는 방식을 결정하기 위해 스윙, 회전, 지속 시간의 프로퍼티를 정의할 방법을 제공합니다.
프로젝트에서 생성하는 프리팹은 프로젝트의 Assets.digest.verse 파일에서 Verse에 클래스로 노출됩니다. 프리팹에서 정의된 엔티티 및 컴포넌트는 프리팹의 GetEntities() 및 GetComponents() 호출을 통해 Verse에서 액세스할 수 있습니다.
씬 그래프에서 Verse 사용을 시작하려면 Verse를 사용하여 자신만의 컴포넌트 만들기를 확인하세요.
직접 경험해 보기
씬 그래프 샘플 템플릿은 씬 그래프 기능을 활용한 작업의 기본 개념을 소개하고, 이러한 기초적 워크플로를 바탕으로 만들어 프리팹 및 Verse를 사용한 프로젝트 제작의 강력함을 보여줍니다. 각 예시에서는 강력한 씬 그래프 기능을 활용한 디자인 반복작업을 통해 흥미롭고 잘 기능하는 게임 오브젝트와 게임플레이를 만드는 방법을 보여줍니다.
씬 그래프로 플랫포머 제작하기를 열고 씬 그래프를 사용하여 흥미로운 게임플레이를 제작하는 방법에 대해 자세히 알아보세요.
더 심도 있는 튜토리얼을 원하는 경우 현재 이용 가능한 씬 그래프 튜토리얼을 확인해 보세요.