1. 기초
2. 내비게이션 시스템
- 한 위치에서 다른 위치로의 경로를 계산하고 실시간으로 장애물을 피하며 이동하는 인공지능을 만드는 시스템
- 내비메시는 게임 플레이 도중 실시간으로 생성할 수 없기 때문에 내비메시를 미리 bake 해야함
- 내비게이션 시스템의 컴포넌트는 아래와 같이 구성되어 있다.
- 내비메시(NavMesh) : 에이전트가 걸어다닐 수 있는 표면
- 내비메시 에이전트(NavMesh Agent) : 내비메시 위에서 경로를 계산하고 이동하는 캐릭터 또는 컴포넌트
- 내비메시 표면(NavMesh Surface) : 특정 타입의 내비메시 에이전트가 걸을 수 있는 영역을 나타내고, 씬에서 내비메시를 빌드할 수 있는 부분을 정의
- 내비메시 장애물(NavMesh Obstacle) : 내비메시 에이전트가 피해야 하는 동적 또는 정적 장애물을 정의하는 데 사용되는 컴포넌트
- 내비메시 모디파이어(NavMesh Modifier) : 내비메시가 베이크되는 런타임 시점에 특정 게임 오브젝트가 행동하는 방식을 실시간으로 조정
- 내비메시 링크(NavMesh Link) : 끊어진 내비메시 영역 사이를 잇는 연결 지점. 올라갈 수 있는 절벽이나 뛰어넘을 수 있는 울타리 등을 구현하는 데 사용
- Area Mask : 내비메시에 경로의 가중치를 부여하기 위해 사용. Area Mask를 사용하면 에이전트가 최단 거리의 경로보다 가중치가 낮은 경로를 선택해 이동하게 된다.
3. Behaviour Tree

- 캐릭터의 행동을 제어하기 위해 사용하는 계층적이고 모듈화된 구조(DFS 기반)이며, 오브젝트의 행동을 관리하는 데 사용된다.
- Behaviour Tree는 아래와 같이 구성된다.
- Root 노드 : 트리의 시작점으로, 트리의 실행을 시작하는 노드
- Composite 노드 : 여러 자식 노드를 가질 수 있으며, 자식 노드들의 실행 순서나 조건을 정의함.
- Sequence 노드 : 자식 노드들을 순차적으로 실행하며, 하나라도 실패하면 전체가 실패한다. 즉 모든 자식 노드가 성공해야 성공한다.
- Selector 노드 : 자식 노드들을 순차적으로 실행하며, 하나라도 성공하면 전체가 성공한다. 즉 모든 자식이 실패해야 실패한다.
- Decorator 노드 : 다른 노드의 실행을 제어하거나 조건을 부과하는 노드. 정해진 조건에 따라 자식 노드를 실행시키고 Success, Failure, InProgress를 반환한다.
While, if의 경우 조건을 만족한다면 자식 노드를 실행시키며, Loop의 경우 자식 노드 실행 후 InProgress를 반환, 특정 횟수를 만족 시 Success를 반환한다.
- Task 노드 : 실제 행동을 정의하는 노드로, 캐릭터가 수행해야 할 구체적인 행동을 기술한다. 보통 Success, Failure, InProgress 중 중 하나의 결과를 반환한다.