프로젝트에서 엔티티 사용

참고: Stingray 엔티티는 사용자 정의 빌딩 블록을 구성하고 재사용하기 위한 쉽게 확장할 수 있는 모듈식 시스템을 제공하는 역할을 합니다. 현재는 엔티티 지원이 막 시작된 상태이기 때문에 대부분 음영처리 환경 및 포스트 효과 지원을 중심으로 이루어지고 있습니다. 이 섹션에 나와 있는 정보를 사용하여 엔티티 시스템을 다른 용도로도 자유롭게 사용해 볼 수 있지만 현재는 대부분의 Stingray 워크플로우가 아직 엔티티보다는 유닛 사용을 기반으로 하고 있다는 점을 염두에 두시기 바랍니다. 유닛 및 엔티티 정보도 참조하십시오.

엔티티는 프로젝트에서 고유한 데이터 세트, 동작 및 상호작용을 소유하고 있는 복잡한 오브젝트를 설정하는 데 사용할 수 있는 빌딩 블록입니다.

엔티티는 어디에 사용합니까?

엔티티 시스템의 목표는 프로젝트에 필요할 수 있는 거의 모든 종류의 오브젝트를 모델링할 수 있을 만큼 유연하고 개방적인 시스템이 되는 것입니다.

사실 몇 가지 핵심 Stingray 기능과 워크플로우는 이미 엔티티를 기반으로 빌드되었습니다. 예를 들어, 새로운 수준을 생성할 때면 음영처리 환경 및 포스트 효과에서 사용하는 렌더링 설정을 처리하는 엔티티가 수준에 포함됩니다.

엔티티 시스템을 직접 사용하여 자체적으로 게임 오브젝트를 설정할 수도 있습니다. 이번 릴리스에서는 주로 임의 데이터 값(숫자, 부울, 문자열, 리소스 이름, 3D 좌표, 색상)을 저장하는 엔티티를 생성하는 것이 유용하다는 점을 알 수 있을 것입니다.

엔티티는 모듈식입니다.

모든 엔티티는 필수적으로 다양한 유형의 구성요소를 포함하는 컨테이너입니다.

각 구성요소는 서로 구별되는 단일 작업을 갖고 있습니다. 일부 유형의 데이터를 저장하고, 3D 메시를 관리하고, 다른 중첩 엔티티의 계층을 관리하고, Lua 코드 또는 흐름 그래프를 실행하여 이벤트에 반응하는 작업일 수 있습니다.

다양한 유형의 구성요소를 함께 조합하고, 자체 데이터(예: 다양한 특성 값, 다양한 메시, 다양한 동작)로 구성요소를 설정하여 엔티티를 조립합니다. 이런 식으로 필요한 구성요소와 동작만 포함된 고유한 유형의 엔티티를 구성할 수 있습니다.

엔티티에 구성요소 할당을 참조하십시오.

엔티티는 효율적입니다.

엔티티는 선택한 구성요소 세트로 구성되기 때문에 비교적 가볍습니다. 물리적 또는 3D 메시 같은 것들을 처리할 엔티티는 필요 없는 경우 해당 엔티티에 관련 구성요소를 그냥 할당하지 않으면 됩니다. 때문에 각 엔티티는 할당된 구성요소를 처리하는 데 필요한 최소한의 메모리만 사용하며, 불필요한 추가 "오버헤드"를 예약할 염려도 없습니다.

또한, 각 구성요소 유형이 별도의 하위 시스템으로 관리됩니다. 각 구성요소 관리자는 해당 구성요소 인스턴스가 할당된 엔티티만 인식하고, 각 관리자가 모든 엔티티의 관련 데이터를 한 곳에서 일괄 관리합니다. 이렇게 구성요소 관리자를 개별적으로 분리함으로써 각 관리자가 자신의 특정 작업을 수행하는 데 있어 최대한 집중적으로 효율성을 발휘할 수 있습니다.

엔티티는 확장 가능합니다.

Stingray는 사용자의 엔티티에 바로 할당할 수 있는 몇 가지 내장 구성요소를 기본으로 제공합니다. (이번 릴리스에서는 Stingray 편집기에서 런타임 게임 플레이로의 완전한 엔드 투 엔드 워크플로우를 지원하는 구성요소 세트가 매우 제한적입니다. 이후 릴리스에서는 이러한 내장 구성요소 유형을 더 추가하여 보다 쉽게 설정할 수 있도록 할 계획입니다.)

생성하는 프로젝트 유형에 따라 엔티티가 내장 구성요소 세트가 허용하는 것과 다른 유형의 작업을 수행하거나, 다른 유형의 데이터를 관리해야 할 수 있습니다.

이를 위해서는 자체 사용자 정의 구성요소 유형을 생성하면 됩니다. 이를 통해 게임 엔티티가 프로젝트 요구에 매우 밀접하게 부합하도록 맞춤 설정할 수 있습니다.

사용자 정의 구성요소 생성을 참조하십시오.

엔티티는 재사용 가능합니다.

이미 설정한 다른 유형의 엔티티를 기반으로 새로운 엔티티 정의를 설정할 수 있습니다. 이렇게 하면 새로운 엔티티가 기본 엔티티와 동일한 모든 구성요소 및 설정을 상속합니다. 상속된 설정을 오버라이드하고, 새로운 구성요소를 추가할 수도 있습니다.

즉, 같은 구성요소 또는 설정 세트를 재사용하기 위해 엔티티 정의를 복제할 필요가 결코 없습니다. 얼마든지 필요한 만큼 각 엔티티 정의를 재사용하면서 사용할 때마다 추가로 특수화할 수 있습니다.

덕분에 각 엔티티 정의가 상속된 자산의 구성요소 및 설정에 의존하는 엔티티 정의 계층을 생성할 수 있습니다.

각 엔티티는 계속해서 상속된 엔티티에 연결된 상태를 유지합니다. 언제든 상속된 설정을 검색할 때마다 그 값은 오버라이드되지 않은 한 상속된 엔티티로부터 검색됩니다. 그러므로 엔티티 계층의 루트에서 설정을 변경하면 루트 설정을 상속하는 다른 모든 엔티티에 대한 값도 자동으로 변경됩니다.

상속된 자산 설정 또는 제거오버라이드 적용 또는 취소를 참조하십시오.