본문 바로가기

Unity

[Unity3D]FSM을 활용한 AI개발(2)

1. 서론

그림1. Flying Spaghetti Monster

FSM이라고 검색하면 제일 눈에 띄는 사진과 설명이다.

실제로 FSM이 날아다니는 스파게티 몬스터라고 생각하지 않길 바랍니다...

 

유한 상태 기계 FSM(finite-state machine) 쉽게 말해 상태의 값들을 유한적으로 바꿔주는 기계다.

 

흔히 알고 있는 단순한 AI를 구현하기에 가장 적합한 모델? 인 것이다.

우리는 이를 통해 단순한 AI의 상태들을 바꿔보며 간단한 AI를 재조립할 예정이다.

구조의 흐름을 간단하게 짜 보도록 하자.

 

2. 본론

세 가지의 역할을 나누어 보도록 하겠다.

 

그림2. (왼쪽부터) 좀비, 시민, 군인

필자는 좀비와 시민, 군인을 에셋스토어와 팀 디자이너로부터 받았다.

1. 좀비는 시민과 군인을 공격하고
2. 시민은 좀비를 피해 도망가고
3. 군인은 좀비를 공격한다.

그림3. 예시) 좀비의 행동 상태 변화

각 캐릭터들의 특징과 행동할 애니메이션들을 정해보도록 하자.

 

좀비시민, 군인은 기본적으로 Idle상태를 가지도록 하였으며, 시민은 좀비를 만나면 도망가는 Walk(RUN) 상태와

감정(Normal, Scard, Safe)을 가지게 두었으며, 좀비는 군인을 공격하는 Attack과 시민과 군인을 쫓아가는 Walk상태,

군인은 좀비를 공격하는 Attack 총을 재장전하는 Covering 상태를 가지도록 하였다.

 

3. 결과

보기 편하도록 정리하자면, 이런 형태가 될 것이다.

그림4. 좀비, 시민, 군인의 행동 정리

이런 식으로, 비록 단순한 상태 값과 감정 값이지만 그림판이나, ppt 파일로 시각화해놓는다면, 헷갈려 작업을 망치는 일을 줄일 수 있으므로 여러분들도 정리나 노트에 메모해 놓으면서 작업하길 바란다.

 

기본적인 구성 작업은 끝났으니, 다음은 기능별로 클래스를 나누는 방법과

각 기능들을 어떻게 정의할지, 유니티 내에서 작업을 해 보도록 하겠다.

 

 

필자는 이 작업을 하기 전에 그림판으로 상세하게 화살표까지 그려가며 작업을 하였다...