유한상태기계(게임AI) (Finite State Machine in Game AI)

문화콘텐츠학·게임학
한 줄 정의: NPC의 행동을 미리 정의된 유한한 상태들(대기, 순찰, 추격, 공격 등)과 그 사이의 전이 규칙으로 모델링하는 전통적 게임 AI 설계 기법이다.

쉽게 풀면

캐릭터의 행동을 몇 가지 정해진 상태(대기, 이동, 공격 등)와 그 사이의 전환 규칙으로 표현하는 AI 기법이다.

왜 중요한가

게임 캐릭터의 행동을 대기, 추격, 공격 같은 명확히 구분된 상태와 그 사이의 전환규칙으로 모델링하는 인공지능 기법으로, 구현이 단순하고 예측 가능해 초창기부터 오늘날까지 게임 AI 설계의 기본 도구로 널리 쓰인다. 상태 사이의 전이 조건이 겹칠 경우 우선순위를 명시적으로 부여하지 않으면 어떤 상태로 전환될지 예측 불가능해지는 문제가 생기는데, 이는 유한상태기계 설계에서 흔히 발생하는 실무적 버그의 원인이다. 상태기계 시각화 도구는 디자이너가 코드를 몰라도 상태와 전이 규칙을 그래프 형태로 직접 편집할 수 있게 해준다.

논문에서는 이렇게 쓰입니다

Millington, I. & Funge, J. (2009). Artificial Intelligence for Games.

밀링턴과 펀지는 유한상태기계를 게임 AI의 기초 구조로 다루며 행동트리 등 후속 기법과의 비교 분석을 제공했다.

간단한 잠입 게임의 경비 NPC를 유한상태기계로 구현한 사례에서는 '순찰-경계-추격'의 세 상태만으로도 자연스러운 행동을 재현할 수 있었다.

복잡한 인공지능을 쓰지 않고도 몇 가지 정해진 상태만 오가게 만들면 그럴듯한 캐릭터 행동을 만들 수 있다는 것을 보여준 사례이다.

조금 더 깊게 보면

유한상태기계는 상태 수가 늘어날수록 상태 간 전환규칙이 기하급수적으로 복잡해지는 확장성의 한계가 있어, 더 복잡한 AI 행동을 구현할 때는 행동트리나 유틸리티 기반 AI 같은 대안적 구조로 대체되는 경우가 많다. 계층적 상태기계는 상위 상태 안에 하위 상태들을 중첩시켜 상태 폭발 문제를 부분적으로 완화하는 변형으로, 완전한 행동트리로 전환하지 않고도 유한상태기계의 단순함을 어느 정도 유지하면서 복잡도를 관리할 수 있게 해준다. 퍼지 상태기계(각 상태에 소속되는 정도를 0과 1 사이의 소속도로 표현해 여러 상태가 부분적으로 동시에 활성화될 수 있게 하는 변형)는 경계 상황에서 상태가 갑자기 튀는 문제를 완화해 더 자연스러운 행동 전환을 만든다. 상태 전이를 코드가 아니라 데이터 테이블로 분리해 관리하면, 프로그래머 없이도 기획자가 직접 전이 규칙을 조정할 수 있게 된다.

주의할 점

유한상태기계는 상태 수가 늘어날수록 전이 규칙이 기하급수적으로 복잡해지는 '상태 폭발' 문제가 발생하기 쉽다.

관련 용어