상태는 각각의 동작을 가지고 있고 일정한 조건을 통해서 상태가 바뀌는 트렌지션을 할 수 있다.
이러한 상태는 한정되어 있는데 이것을 유한 상태 머신이라고 한다. (FSM)
이 모든 상태의 변화 과정을 상태 머신이라고 한다.

이미지처럼 각 직업을 상태라고 가정을 하자. 각 직업마다 할 수 있는 행동이 있다. (학생 - 공부한다. or 아르바이트를 한다. 등) 이러한 행동은 각 직업마다의 유기적으로 이어져 있다.
또한 이것의 조건(컨디션)은 단순화하여 상태 변환이 잘 효율적으로 바뀔 수 있도록 한다.
이러한 과정의 총망라를 상태 머신이라고 할 수 있다.
이러한 상태 머신은 어떠한 상태 안쪽에 다른 상태가 내적한 것으로 존재 할 수 있는데 이런 상황에서는 상태 머신이 복잡해질 수 있기 때문에 구조적으로 효율적인 설계가 필요하다.
이미지를 예시로 들자면, 백수 상태를 본다고 하더라도, 1) 돈이 많은 백수 2) 돈이 없는 백수 이 상태들에 따라서 이어지는 상태가 다르기 때문에 각각의 상태 속 상태가 있다고 할 수 있다.



각 상태는 진입 -> 동작 -> 빠져나가기의 과정을 거치면서 각 입력값에 대해 각 클래스 내에서 실행 준비가 되고 그것의 가상 머신을 통해 실행이 된다.
해당 상태 머신은 애니메이션 및 동작의 유지와 보수에 큰 장점을 보인다.
하나의 상태 내에서 여러가지의 상태가 존재하는 경우에 상위 상태에서 특정 상태에 들어가는 게 비효율 적이다.
그럴 때는 2개씩 상태를 나누는 상태 머신이 존재하는데 이것을 Behavior Tree System이라고 한다.

이미지처럼 여러가지의 내부 상태를 트리 구조로 만들어서 표현하는 시스템을 의미한다.
시작할 때는 기본적인 상태에서 하며 필요한 상태를 그때그때 삽입하여 사용하는 시스템을 맞추는 것.
필요한 것만 삽입하고 나머지는 빼서 효율적으로 맞추어 사용하는 시스템을 의미한다.
이것은 인터페이스를 이용한다.
