게임에서 말하는 AI는 대화형 인공지능과 조금 다릅니다. 몬스터가 순찰하다 플레이어를 발견하면 쫓아오고, 체력이 줄면 도망치는 것처럼 '그럴듯하게 행동하는 규칙'을 만드는 일이 게임 AI의 중심입니다. 이 글에서는 가장 많이 쓰이는 두 방식인 유한 상태 머신과 행동 트리를 비교해 설명합니다.
게임 AI의 목표는 '똑똑함'보다 '재미'
게임 AI가 너무 완벽하면 플레이어는 이길 수 없어 재미를 잃습니다. 일부러 공격 전에 신호를 주고, 가끔 실수하고, 플레이어가 대응할 틈을 남기는 것도 AI 설계의 일부입니다. 그래서 게임 AI는 프로그래머와 기획자가 함께 다듬는 경우가 많습니다.
또 AI는 한 프레임 안에서 수많은 캐릭터가 동시에 판단해야 하므로 계산이 가벼워야 합니다. 상태 머신과 행동 트리는 이런 조건에 잘 맞는 구조입니다.
좋은 게임 AI는 플레이어가 그 의도를 읽을 수 있어야 합니다. 적이 왜 그렇게 움직였는지 짐작할 수 있으면 플레이어는 공략법을 찾는 재미를 느끼고, 이유 없이 움직이면 불공정하다고 느낍니다. 공격 전 준비 동작이나 경고 효과음이 그래서 중요합니다.
유한 상태 머신(FSM)
유한 상태 머신은 캐릭터가 가질 수 있는 상태를 정해 두고, 조건에 따라 한 상태에서 다른 상태로 옮겨 가게 하는 방식입니다.
| 현재 상태 | 전환 조건 | 다음 상태 |
|---|---|---|
| 순찰 | 플레이어가 시야에 들어옴 | 추격 |
| 추격 | 공격 사거리 안에 들어옴 | 공격 |
| 추격 | 플레이어를 일정 시간 놓침 | 복귀 |
| 공격 | 체력이 낮아짐 | 도주 |
| 복귀 | 원래 위치에 도착 | 순찰 |
상태 머신은 구조가 직관적이라 그림으로 그리기 쉽고, 기획자와 소통하기도 좋습니다. 하지만 상태가 늘어나면 상태 사이 연결선이 폭발적으로 늘어 관리가 어려워집니다. 이를 줄이려고 상태 안에 다시 상태를 넣는 계층형 상태 머신(HFSM)을 쓰기도 합니다.
행동 트리(Behavior Tree)
행동 트리는 행동을 나무 모양으로 배치하고, 위에서 아래, 왼쪽에서 오른쪽으로 평가하며 실행할 행동을 고르는 방식입니다. 각 노드는 성공, 실패, 실행 중 가운데 하나의 결과를 돌려줍니다.
- 셀렉터: 자식 중 하나라도 성공할 때까지 차례로 시도. '공격할 수 있으면 공격, 아니면 추격, 아니면 순찰'
- 시퀀스: 자식을 순서대로 모두 성공해야 성공. '목표 찾기 → 이동 → 공격'
- 데코레이터: 조건 검사나 반복 같은 규칙을 덧붙임. '체력 30% 이하일 때만'
- 태스크(리프): 실제 행동. 이동, 공격, 대기, 애니메이션 재생
행동 트리는 부분을 떼어 재사용하기 쉽고, 우선순위가 트리 위치로 드러나 복잡한 AI도 정리하기 좋습니다. 언리얼 엔진은 행동 트리 편집기를 기본으로 제공해 많이 쓰입니다.
두 방식 비교
| 항목 | 상태 머신 | 행동 트리 |
|---|---|---|
| 이해하기 | 쉬움 | 처음엔 노드 규칙을 익혀야 함 |
| 규모가 커질 때 | 연결선이 급증 | 가지를 추가하며 확장 |
| 재사용 | 상태 단위로 제한적 | 하위 트리를 다른 AI에서 재사용 |
| 어울리는 곳 | 단순한 적, 캐릭터 애니메이션 상태 | 보스, 동료 NPC, 복잡한 적 |
실무에서는 둘 중 하나만 쓰기보다 섞어 쓰는 일이 많습니다. 큰 흐름은 행동 트리로 짜고, 애니메이션 전환은 상태 머신으로 처리하는 식입니다.
감지와 블랙보드
AI가 판단하려면 정보가 필요합니다. 시야각과 거리, 소리, 마지막으로 본 위치 같은 정보를 모으는 감지 시스템을 함께 만듭니다. 시야각 판정에는 벡터 내적이, 벽 뒤에 숨었는지 확인하는 데는 레이캐스트가 쓰입니다.
행동 트리에서는 이런 정보를 블랙보드라는 공용 메모장에 저장해 두고 여러 노드가 꺼내 씁니다. 이동 경로는 길찾기 알고리즘이 맡고, AI는 '어디로 갈지'만 정하는 식으로 역할을 나눕니다.
직접 만들어 보기
- 순찰-추격-공격 세 상태로 된 몬스터를 상태 머신으로 만듭니다.
- 같은 몬스터를 행동 트리로 다시 만들어 구조를 비교합니다.
- 도주와 지원 요청 행동을 추가해 확장이 어느 쪽이 편한지 확인합니다.
SBS아카데미게임학원 게임프로그래밍 과정은 AI 알고리즘을 포함한 게임 개발 기술을 프로젝트 기반 수업으로 다룹니다.
자주 묻는 질문
게임 AI에 머신러닝도 쓰나요?
테스트 자동화나 밸런스 분석 등에 연구되고 활용되는 사례가 있지만, 실시간 몬스터 행동은 여전히 상태 머신이나 행동 트리처럼 예측 가능한 규칙 기반 방식이 많이 쓰입니다.
유니티에도 행동 트리가 있나요?
엔진 버전과 패키지에 따라 제공 방식이 다르며, 에셋이나 직접 구현으로 쓰는 경우도 많습니다. 사용하는 버전의 공식 문서를 확인하는 것이 좋습니다.
