행동 트리(Behavior Tree)
행동 트리의 역사
- 2004년 개발사 번지의 헤일로2에서 인공지능을 설계하는데 사용됨
- 2005 GDC에서 발표 : "Handling Complexity in the Halo 2 AI"
- 우선순위와 트리 구조를 사용해 인공지능을 설계하는 기법
- 게임 산업에서 개량해 널리 사용하고 있음
행동 트리 모델의 장점
- FSM이 가지고 있던 문제를 해결하는 새로운 게임 인공지능 모델의 수립
- 행동 트리 모델의 장점
- 모듈화가 잘 되어 있어 확장이 자유로움
- 트리 기반으로 계층화가 잘 되어 있어, 복잡한 인공지능 모델을 쉽게 설계할 수 있음
- 다이어그램으로 인공지능 모델을 효과적으로 표현할 수 있음
- 제공되는 여러 편리한 부가 기능을 활용해 다양한 상황에 대해 손쉽게 제어할 수 있음
행동 트리 모델의 구성 요소
- 트리에서 항상 왼쪽에 있는 노드에 우선 순위를 부여
- 시작 상태를 설정할 필요 없이 왼쪽에서부터 깊이 우선 탐색을 시작
- 행동을 중심으로 설계
- 단, 부모 노드에서 다수의 행동을 컨트롤 함
- 이를 컴포짓(Composite)이라고 함
- 셀렉터 : 여러 행동 중 하나의 행동을 지정
- 시퀀스 : 여러 행동을 모두 수행
- 패러렐 : 여러 행동을 함께 수행
- 행동에 대한 다양한 결과
- 성공(Succeeded) : 행동의 성공
- 실패(Failed) : 행동의 실패
- 중지(Aborted) : 외부 요인으로 인한 행동의 실패
- 진행 중(InProgress) : 행동 결과를 홀딩
- 컴포짓 노드마다 다른 행동 결과 처리
- 예)
셀렉터 노드 : 성공 시 종료, 실패 시 다음 행동
스퀀스 노드 : 실패 노드가 나올 때까지 진행
- 컴포짓 노드에 부착하는 다양한 추가 기능
- 데코레이터(Decorator) : 컴포짓 노드가 실행되는 조건을 지정
- 서비스(Service) : 컴포짓 노드가 활성화될 때 주기적으로 실행하는 부가 명령
- 관찰자 중단(Abort) : 데코레이터 조건에 부합되면 컴포짓 내 활동을 모두 중단
행동 트리 모델의 구현 예시
- 전형적인 RPG 게임 NPC에 대한 행동 트리 모델 예시
- 쉬기(IDLE)와 정찰(PATROL) 상태에 대한 행동 트리
루트 - 정찰(Sequence) - 쉼 / 목적지 선택 / 이동
- 추가적으로 추격(CHASE)와 공격(ATTACK) 상태에 대한 행동 트리
루트
- 공격(Selector) + 침입자 감지(Decorator)
- 공격 / 추격
- 정찰(Sequence) + 침입자 발견(Abort)
- 쉼 / 목적지 선택 / 이동