State
Unreal Engine의 State Tree는 스테이트를 계층 구조(Hierarchy) 로 구성하여 조건 판단, 행동 실행, 전환 흐름을 명확하게 설계할 수 있는 시스템이다.
이때 스테이트는 크게 형제(Sibling) 스테이트와 자손(Child) 스테이트 관계로 나뉜다.
State 추가하기
State Tree 에디터에서 스테이트는 Root 또는 기존 State를 기준으로 추가할 수 있다.
우클릭 → 상태 추가- 형제 스테이트 추가
→ 같은 부모를 가지는 새로운 상태 생성
- 자손 상태 추가
→ 선택한 State 내부에 하위 상태 생성
형제 스테이트 (Sibling State)
같은 부모 스테이트를 공유하는 스테이트들로 평소에는 서로 동시에 활성화될 수 없음
조건(Evaluator / Transition)에 따라 서로 전환된다.
위 구조에서 Idle, Attack, Dead는 모두 형제 스테이트
자손 스테이트 (Child State)
특정 스테이트 내부에 종속된 하위 스테이트이다.
부모 스테이트가 활성화되면 → 그 안에서 자손 스테이트가 선택·실행된다.
MeleeAttack, RangeAttack, BasicAttack는 Attack의 자손 스테이트이다.
State Tree Details
Name
스테이트의 식별 이름이다.
Tag
스테이트에 부여하는 게임플레이 태그이다.
Color
State Tree 에디터 상에서 표시되는 시각적 색상으로 기능적 영향은 없다.
Custom Tick Rate
해당 스테이트의 Tick 주기를 개별적으로 설정한다. 활성화 시 기본 틱 속도 대신 지정 값 사용한다.
성능 최적화 또는 느린 판단 로직에 유용하다.
Type
State의 역할과 구조적 성격을 정의한다.
State
- 기본적인 실행 스테이트
- Task, Evaluator, Transition을 포함 가능
- 가장 일반적으로 사용되는 타입
Group
- 실행 로직 없이 구조 정리용 리디렉션 타입
- 자손 스테이트를 묶기 위한 컨테이너
- 가독성과 설계 정리에 유용
Subtree
- Linked Type State에 연결할 수 있도록 만들어주는 타입
- 복잡한 하위 구조를 분리시킬 수 있다.
Linked
- 다른 State Tree의 특정 State를 참조
- 동일한 로직을 여러 트리에서 재사용 가능
- 원본 State 변경 시 참조된 모든 곳에 반영됨
Linked Asset
- 외부 State Tree 에셋을 통째로 링크
- 공통 AI 로직, 보스 패턴 모듈화에 적합
Selection Behavior
부모 State가 선택되었을 때 어떤 자손 State를 선택할지 결정하는 규칙
| 선택 비헤이비어 | 설명 |
|---|---|
| 진입 시도 (Try Enter) | 자손이 있더라도 현재 State 자체를 선택 |
| 순서에서 첫 번째 자손 선택 시도<br>(Try Select Children in Order) | 자손 목록 순서대로 조건을 검사해 첫 번째로 진입 가능한 State 선택 |
| 랜덤으로 자손 선택 시도<br>(Try Select Children at Random) | 자손 순서를 섞은 뒤 조건을 만족하는 첫 State 선택 |
| 유틸리티가 가장 높은 자손 선택 시도<br>(Try Select Children with Highest Utility) | Utility 점수가 가장 높은 자손 State 선택 |
| 유틸리티 가중 랜덤 선택 시도<br>(Try Select Children at Random Weighted by Utility) | Utility 값을 확률로 사용해 랜덤 선택 |
| 트랜지션 따라가기 시도<br>(Try Follow Transitions) | State 대신 연결된 Transition을 우선 트리거 |