- 상황
- 처음에는 교전 처리 컴포넌트(engageComponent) 하나가 유닛의 행동을 맡았다. 넉백 같은 추가 상태를 넣으려면 이 컴포넌트가 계속 커져야 했다.
- 결정
- 상태 관리 컴포넌트와 상태 노드로 나눈 FSM으로 교체했다(4/25). 대기, 이동, 사망, 넉백, 근접·원거리 단일·범위 공격, 시전, 범위 회복을 각각 상태 노드로 두었다.
- 이유
- 넉백과 추가 상태를 구현하려는 것이었다. 상태를 노드로 나누니, 새 유닛은 상태 노드를 조립하는 것만으로 만들 수 있게 됐다.
- 한계
- 상태 전환 규칙이 상태 컴포넌트에 모여 있어, 7월에 결합도를 낮추는 정리를 한 번 더 거쳤다.