

Unreal Engine의 State Tree는 스테이트를 계층 구조(Hierarchy) 로 구성하여 조건 판단, 행동 실행, 전환 흐름을 명확하게 설계할 수 있는 시스템이다.
이때 스테이트는 크게 형제(Sibling) 스테이트와 자손(Child) 스테이트 관계로 나뉜다.
State Tree 에디터에서 스테이트는 Root 또는 기존 State를 기준으로 추가할 수 있다.
우클릭 → 상태 추가
형제 스테이트 추가
→ 같은 부모를 가지는 새로운 상태 생성자손 상태 추가
→ 선택한 State 내부에 하위 상태 생성

같은 부모 스테이트를 공유하는 스테이트들로 평소에는 서로 동시에 활성화될 수 없음
조건(Evaluator / Transition)에 따라 서로 전환된다.

위 구조에서 Idle, Attack, Dead는 모두 형제 스테이트
특정 스테이트 내부에 종속된 하위 스테이트이다.
부모 스테이트가 활성화되면 → 그 안에서 자손 스테이트가 선택·실행된다.

MeleeAttack, RangeAttack, BasicAttack는 Attack의 자손 스테이트이다.

스테이트의 식별 이름이다.

스테이트에 부여하는 게임플레이 태그이다.
State Tree 에디터 상에서 표시되는 시각적 색상으로 기능적 영향은 없다.
해당 스테이트의 Tick 주기를 개별적으로 설정한다.
활성화 시 기본 틱 속도 대신 지정 값 사용한다.
성능 최적화 또는 느린 판단 로직에 유용하다.

State의 역할과 구조적 성격을 정의한다.


부모 State가 선택되었을 때 어떤 자손 State를 선택할지 결정하는 규칙
| 선택 비헤이비어 | 설명 |
|---|---|
| 진입 시도 (Try Enter) | 자손이 있더라도 현재 State 자체를 선택 |
| 순서에서 첫 번째 자손 선택 시도 (Try Select Children in Order) | 자손 목록 순서대로 조건을 검사해 첫 번째로 진입 가능한 State 선택 |
| 랜덤으로 자손 선택 시도 (Try Select Children at Random) | 자손 순서를 섞은 뒤 조건을 만족하는 첫 State 선택 |
| 유틸리티가 가장 높은 자손 선택 시도 (Try Select Children with Highest Utility) | Utility 점수가 가장 높은 자손 State 선택 |
| 유틸리티 가중 랜덤 선택 시도 (Try Select Children at Random Weighted by Utility) | Utility 값을 확률로 사용해 랜덤 선택 |
| 트랜지션 따라가기 시도 (Try Follow Transitions) | State 대신 연결된 Transition을 우선 트리거 |