1. Plugin Setup
- MassEntity
- MassGameplay
- MassAI
- MassCrowd
- ZoneGraph (For navigation)
- StateTree
2. Mass Concepts Overview
Mass Framework Synopsis
매스는 대량의 엔티티에 대한 고성능 계산을 위해 설계된 데이터 지향 프레임워크입니다. 언리얼 엔진에서 일반적인 워크플로는 액터와 컴포넌트로 구성됩니다. 이러한 설계는 액터 로직을 구성하는 데 매우 유연하지만, 데이터 일관성이 없어 CPU에 캐시 누락이 발생하여 비용이 많이 드는 경우가 종종 있습니다. 대신 Mass는 엔티티와 프래그먼트로 구성된 데이터 지향 설계 프레임워크를 사용하여 데이터를 처리 로직에서 분리하는 대안적인 데이터 저장 방식을 제공합니다. 엔티티는 연결된 ID를 가진 조각 그룹의 단일 인스턴스입니다. 엔티티에는 불필요한 조각이 없습니다. 유사하게 구성된 엔티티의 조각은 연속적인 메모리에 저장됩니다. MassEntity에 대한 자세한 설명은 MassEntity의 공식 문서를 참조하세요.
Mass Key Terminology
- Entity - 모든 Fragment에 대한 포인터를 보유하는 매스의 베이스 클래스입니다.
- Fragment - Entity에 대한 데이터/상태를 촘촘하게 패킹된 배열(예: 트랜스폼, 속도, 현재 LOD 등)로 보유합니다.
- Archetype - 동일한 Fragment 구성을 가진 Entity가 함께 그룹화되어 있습니다. Entity 구성은 런타임에 변경되어 Archetype 마이그레이션이 발생할 수 있습니다.
- Trait - Fragment을 함께 그룹화하며 일반적으로 Entity 기능을 나타냅니다(e.g. Movement, ZoneGraph Navigation, SmartObject User).
- Tags - Archetype의 유무에 따라 archetype을 필터링하기 위해 쿼리에서 사용할 수 있는 Archetype 수준의 데이터 없는 Fragment입니다.
- Chunk Fragment - 단일 Entity에 직접 적용되는 것이 아니라 Archetype의 Entity 하위 집합에 적용되는 Fragment입니다.
- Shared Fragment - 메모리 최적화를 위해 여러 Entity와 공유되는 데이터가 있는 Fragment입니다.
- Processor - Mass에서 로직 실행이 발생하는 곳입니다. Processor는 Fragment의 값은 물론 Entity의 구성(추가 또는 제거)을 변경할 수 있습니다.
- Entity Query - Fragment 및/또는 태그 요구 사항에 따라 Archetype을 필터링하는 Processor에서 사용되는 쿼리입니다. Entity 쿼리는 개별 Entity 식별자에 관계없이 Fragment의 batch(무리, 집단)를 반환합니다.