게임 개발/디자인 패턴

[디자인패턴]02. - FSM (Finite State Machine) 유한상태기계

Heesuk Lee 2019. 3. 1. 17:56
FSM(finite state machine): 유한상태기계

정의
유한한 갯수의 상태들로 구성된 기계를 말합니다.

특정 객체의 상태를 관리하기위한 패턴입니다.

이벤트를 받고 그에 따라 현재상태에서 다음상태로의 전이가 이뤄집니다.

게임에서 npc의 행동AI에 주로 사용됩니다.


특징

유한한 수의 상태들만을 가집니다.

자신은 하나의 상태만을 가지고 있습니다. 
행동을 하나의 객체로 모듈화 하는것을 목표로 합니다.
자신의 현재상태를 확인 할수 있어야합니다.
외부로부터의 입력, 즉 이벤트를 받습니다.

자신의 현재상태와 받아온 이벤트로 정해진 논리에 따라 자신의 상태를 변경할 수 있습니다.


FSM과 statePattern의 차이

상태패턴(stateParrern)은 객체지향 방식으로 상태기계를 구현하는 행위, 디자인패턴을 말합니다. 상태패턴을 이용하면 인터페이스의 파생클래스로써 각각의 상태를 구현, 또는 패턴의 슈퍼클래스에 의해 정의되는 메소드를 호출하여 상태변화를 구현함으로써 상태기계를 구현합니다. (인터페이스, 상속클래스)



FSM은 유한상태기계, 말그대로 유한한상태를 가지는 기계를 말하며, 구현을 통한 그 결과물이라고 정리하는것이 맞을것같습니다. 이 유한상태기계를 구현하기위해 statePattern을 사용해서 구현하거나, 또는 다양한 방법으로 구현할수도 있는것이기 때문입니다.


설계

정해진 상태들과 상태간의 전위 및 전이관계를 그립니다.


1) 유한한 상태들을 정해줍니다.



2) 상태전위들을 그려주고 전위조건 혹은 관계를 그려줍니다.




3) 상태패턴의 논리에 맞게 해주기위해서는 위의 모든 상태들을 인터페이스를 사용하여 각 상태들을 구현하면 좀더 아름다운 모습이 될수있을것 같습니다.


구현부분은 unity정리 부분에 다시 포스팅 해보겠습니다.

 





반응형