Smart Object
Smart Object 를 처음 접하여 빠르게 개념을 이해하고 싶은 사람, 기억이 나지 않을 때를 위해 내용을 정리합니다.
Smart Object 란?
상호 작용이 가능한 Object 를 정의하기 위한 데이터를 ( 행동 양식 ) 을 직접 지정하여, 외부에서 요청에 의한 미리 정의된 패턴 ( 행동 양식 ) 을 손쉽게 수행할 수 있는 도구 입니다.
동작의 흐름
Actor 에 Smart Object Component 를 추가하면서 시작됩니다.
Smart Object Component 가 추가된 Actor 는 Smart Object 로써 동작할 수 있습니다.
Smart Object Component 에는 Slot 의 개념이 추가됩니다.
Slot 이란 위치를 기반으로 행동 양식을 직접 지정할 수 있는 데이터 포맷입니다.
Slot 은 특징으로 "예약 → 점유 → 반환" 을 할 수 있는 생명 주기를 가지고 있습니다.
Slot 데이터는 Slot 을 점유할 수 있는 조건과 행동 양식 그리고 위치 값이 있으며 상호작용을 요청하는 액터 ( 질의자 ) 에 의해 주변의 Smart Object 를 대상으로 조건이 만족 되는 Smart Objet 와 Slot 을 얻을 수 있습니다.
( BT 의 Task 로 동작합니다 )
얻어진 Smart Object 와 Slot 은 질의자에게 점유된 상태로 전환되어 소유자가 반환하기 전까지는 또 다른 점유를 허용하지 않습니다.
점유된 Smart Object 를 대상으로 소유자는 미리 정의된 행동 양식을 수행할 수 있으며, 행동 양식이 끝난 이후에는 자동으로 점유가 반환 됩니다.
( BT 의 Task 로 동작합니다 )
이는 Smart Object 가 직접 행동을 수행하지 않고 질의자 ( AI NPC ) 가 미리 정의된 패턴을 수행한다는 의미 입니다.
실제 적용된 Smart Object 와 예시를 보면 벤치에 앉거나 ( UE5 예제 ), TV 를 바라보는 소파에 앉는 ( 심즈 ) 등...
복잡한 행동 양식이 아닌 간단하고 연출로 이해할 수 있는 행동 양식에 국한되어 있습니다.
물론, Smart Object 의 행동 양식이 더 복잡하게 쓰일 수 도 있지만 타 시스템 ( BT ) 과의 영역이 불분명해지면 개별 시스템이 복잡해질 우려가 있어 위의 사례와 같이 간단하고 휘발적인 행동 양식에 쓰이는 것이 현실적입니다.
정리
무언가의 대상 ( 위치 ) 을 점유하면서 미리 정의된 행동 양식을 간단하게 수행할 수 있다는 점에서 Smart Object 가 쓰이는 목적과 효과는 분명합니다.
Appendix
- SubSystem 을 사용하는 이유?
- 여러 액터가 하나의 Smart Object Slot 을 점유한다는 작업은 동시성에 위배될 수 있기에 월드 상에 하나밖에 존재할 수 없는 시스템을 두어 처리합니다
- 동시에 여러 Slot ( Smart Object ) 가 수집되면 어떻게 처리하는가?
- UE5 에서는 인접한 거리의 수집된 Smart Object 를 대상으로 조건을 수행하고 있습니다. 조건을 만족하는 복수 개의 대상에서는 가장 처음으로 확보된 대상을 결정합니다
- 행동 양식에는 제한이 있는가?
- 본문과 같이 UE5 에서는 점유된 Slot 이 수행하는 행동 양식에 제한이 없습니다. BP 에 열려있는 API 는 모두 호출이 가능합니다. UE 문서의 "스마트 오브젝트는 예약 시스템을 통해 사용할 수 있는 레벨 내 활동" 표현과 같이 활동을 특별히 제한하진 않고 있습니다
Reference
- 스마트 오브젝트 | 언리얼 엔진 5.0 문서 (unrealengine.com)
https://docs.unrealengine.com/5.0/ko/smart-objects-in-unreal-engine---overview/