유한상태기계(Finite State Machine, FSM) 이란?
- 프로그래밍/물리 & 수학
- 2011. 6. 15. 11:56
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. 직관적이다.
이 글을 공유하기