캐릭터나 AI가 특정 상태에 있고 조건에 따라 다른 상태로 전이하는 구조

 

FSM ( Finite State Machine )

 

상태 ( State ) : 현재 어떤 상황인가  ex) Idle, Chase, Attack

전이( Transition ) : 어떤 조건으로 바뀌는가 ex) "적 발견 시 Chase로"

이벤트( Event ) : 전이를 트리거하는 것 ex) OnEnemyDetected, OnHealthLow

 

핵심 규칙 : 어느 순간이든 반드시 하나의 상태에만 있어야 한다. -> 예측 가능해지고 디버깅하기 쉬워짐

 

단. 단순 FSM에서 상태가 늘어날수록 전이 조건이 폭발적으로 증가하는 문제 발생. -> 계층형으로 발전

 

FSM : 단순, 상태 적을 때 적합   ex)  UE5에서 직접 구현

HFSM( 계층형 ) : 상태를 그룹화, 공통 전이 처리  ex) BehaviorTree

StateTree : HSFM + 데이터 드리븐, 병렬 처리 ex) UE5 StateTree

 

HSFM ex) Combat(상위 상태 ) : Chase, Attack, Retreat

이럴 경우 체력이 0이 될 경우 Combat에서 한 번만 정의 해주면 코드가 단순화가 됌.

 

연결되는 개념들

BehaviorTree : FSM의 확장,  Selector/Sequence 노드로 우선순위 행동 처리

StateTree : HFSM + 데이터 드리븐. Mass Entity와 연동 가능.

Animation State Machine : UE5 AnimGraph가 바로 이 구조로 이동/점프/공격 애니메이션 전환이 FSM으로 동작.

+ Recent posts