유한상태기계(Finite State Machine, FSM) 이란?

1. FSM 이란?
 

유한상태기계(finite state machine, FSM)는 게임 에이전트에게 환상적인 지능을 부여하기 위한 선택 도구로 사용되어왔다.  
다시 말해유한상태기계는어지는 모든 시간에서 처해 있을 수 있는 유한 개의 상태를 가지고 주어지는 입력에 따라 어떤 상태에서 다른 상태로 전환시키거나 출력이나 액션이 일어나게 하는 장치 또는 그런 장치를 나타낸 모델이다
.

FSM 이란 특정한 상태를 정의하기위한 개념적 모델이다.
여러개의 제한된 상태(State)가 존재하고 
그 존재들이 특정 조건에 물려 서로 연결되어있는 형태를 의미한다.




위의 그림과 같이 유한 상태 기계의 간단한 예로는 집에 있는 전등 스위치를 들 수 있다스위치가On일 때는 전등의 불이 들어오게 되고 그 상태가 유지 된다만약 누군가가 와서 스위치를Off하게 되면 전등의 불은 꺼지게 된다이때도 마찬가지로 누군가가 스위치를On하기 전까지는 불이 꺼진 상태를 유지 할 것이다이처럼 유한상태기계도 어떤 상태를 유지 하고 있다가 특정한 이벤트가 발생하게 되면 조건에 맞는 상태로 생태가 변하게 되는 방식이다.
 

유한상태기계(Finite State Machi.. :: 네이버블로그



2.게임에서의 FSM

아래의 그림은 게임에서 NPC나 Monster등에 적용되는 간단한 AI 상태이다.

 


위의 그림같이 특정한 조건에 따라 그 조건으로 상태가 전환이 되면서 해당되는 상태를 처리하는 것을

FSM 이라고 한다.

출저:
http://blog.naver.com/fyman?Redirect=Log&logNo=140051372100 

 

3. FSM을 왜 사용하는가?
 

FSM을 사용하는 이유는 간단하다.
쉬운 개념의 적립, 각상태와 형태가 코드상이 아닌 도표로써 나타내짐
으로써
AI의 개념을 프로그래머 이외에 기획자 또는 제 3자가 쉽게 확인,설계가 가능하기 때문이다.
그리고 
정해진 룰이 있기때문에 프로그래머입장에서 코딩시 조금더 안전성이 높은 코드를 만들어낼수 있다.그리고

각각의 상태는 나뉘어져있기때문에 새로운 상태의 추가 삭제가 용의하다.

 

※ FSM이 모든 AI를 대변하는것이 아니다. Fuzzy, 하드코딩 AI 등 게임에서는 여러가지 형태가 병합되어있다.

 

위의 그림을 참고삼아 예를 들어보도록 하겠다. 아래의 몬스터 예상 공격패턴이 있다.

 

현재 한마리의 Monster가 존재한다. Monster의 공격대상은 당연히 Player 이다.  몬스터는 공격대상이 없을때

는 주외를 방황하면 걸어다니거(Move)나 제자리에서 혼자 무언가를 하고있다.(IDLE). 공격대상이 생겼을 경우

몬스터는 해당 대상을 공격(ATTACK) 한다.

 

위의 패턴을 잘 보면 위의 그림으로 나타낸 도표로 다 표현할수 있다.  
그리고 FSM으로 구현되어져있기때문에 
각각의 상태는 여러가지 형태로 변경되어질수 있다.
예를 들자면 ATTACK상태를 여러가지로 나뉘어 놓을수 있
다.

언제나 CRITICAL한 공격만 하는 상태

아주 약한공격을 여러번하는 공격상태

장거리 공격을 하는 공격상태

 

위와같이 여러가지 공격상태를 정해두고 상태를 변환하는것 만으로도 다양한 형태의 AI를 가진 Monster가 구현될수 있는것이다.  

 
출저:
http://blog.naver.com/fyman?Redirect=Log&logNo=140051372100 

 

4. FSM의 장점

 

1.     빠르고 코딩하기가 쉽다.

2.     오류수정이 용이하다.

3.     계산 부담이 없다.

4.     직관적이다.

5.     유연성이 있다


이 글을 공유하기

댓글

Designed by JB FACTORY