언리얼 AI 기초 정리 (AIController, Behavior Tree, Blackboard)
언리얼 AI 학습 노트. 강의 8.1~8.2 개념만. BT 구조 헷갈릴 때 다시 보기.
AIController와 빙의
지금까지 폰은 플레이어 컨트롤러가 수동 조종. AI는 플레이어 대신 AIController가 폰에 빙의해서 제어. 빙의 방식은 플레이어 컨트롤러와 동일.
NPC = 플레이어가 조종 안 하지만 레벨에 배치되는 캐릭터.
자동 빙의 설정: 캐릭터 클래스에서 AIControllerClass 지정 + AutoPossessAI를 PlacedInWorldOrSpawned로 두면 레벨 배치/스폰 시 자동 빙의.
필요 모듈: AIModule, NavigationSystem, GameplayTasks (Build.cs에 추가). 빠뜨리면 링크 에러 나니까 AI 작업 시작 전에 먼저 추가.
네비게이션 메시
NPC가 스스로 이동하려면 네비 메시 필요. NavMeshBoundsVolume을 레벨에 배치, 크기 설정 후 P키로 녹색 영역 확인(이게 이동 가능 영역).
핵심 함수 두 개:
- GetRandomPointInNavigableRadius(): 이동 가능한 랜덤 목적지 반환
- SimpleMoveToLocation(): 목적지로 폰 이동
FSM vs Behavior Tree
Finite State Machine: 상태 노드를 수평으로 연결. 상하 관계 없음. 모든 상태에서 모든 상태로 전환 가능. 구현 쉽지만 노드 많아지면 폭발적으로 복잡해짐.
Behavior Tree: 우선순위 + 트리 구조. 수직. 상위 노드가 어떤 서브트리를 실행할지 결정, 하위는 자기 작업만. 노드 많아도 가독성 유지. 대신 규칙과 노드 용도를 알아야 해서 진입장벽 있음.
Behavior Tree 기본 규칙
- 위, 좌측일수록 우선순위 높음
- 시작 노드 설정 불필요. 항상 왼쪽부터 깊이 우선 탐색
- 각 노드를 Task라고 부름
- Task는 단독 실행 불가. 반드시 Composite Task를 거쳐야 함
Blackboard
BT가 판단에 쓰는 데이터를 저장한 애셋. 매 순간 업데이트되며 BT 동작에 영향. BT의 분기 조건, 이동 목표 등이 전부 여기 키로 들어감.
Composite Task 세 종류 (라면 기계 비유)
- Sequence: 자식들을 왼쪽부터 순서대로. 실패가 나오면 거기서 멈춤. (라면 없으면 물도 안 담음)
- Selector: 자식 중 조건 맞는 하나 선택. 실패하면 다음 자식으로 넘어감. (신라면 없으면 너구리)
- Parallel: 자식들을 동시에. 실패 나오면 멈춤
Task 수행 결과 네 가지
- InProgress: 수행 중. 결과는 나중에 알려줌 (지연 Task)
- Succeeded: 성공
- Failed: 내부 요인 실패. 수행은 했는데 실패
- Aborted: 외부 요인으로 중단됨
Failed와 Aborted 구분이 중요. Failed는 자기가 못한 거, Aborted는 밖에서 끊은 거.
Composite에 부착하는 기능 세 가지
- Decorator: 이 Composite가 실행될 조건 지정 (if문 역할)
- Service: 이 Composite 수행 중 일정 주기로 Tick 호출 (주기적 감지/갱신)
- Observer Abort: Decorator 조건 부합 시 해당 Composite 내 작업 모두 중지하고 루트부터 다시
이 세 개가 BT의 핵심 도구. Decorator는 분기, Service는 주기 감지, Observer Abort는 중단/재시작.
'학습 > Unreal' 카테고리의 다른 글
| 언리얼 게임 데이터 관리 정리 (StatusComponent, PlayerState, GameInstance, DataTable) (0) | 2026.05.16 |
|---|---|
| 언리얼 Behavior Tree 노드 구현 핵심과 함정 (BTTask, Service, Decorator) (0) | 2026.05.16 |
| 언리얼 데미지 프레임워크와 죽음 처리 정리 (TakeDamage) (0) | 2026.05.16 |
| 언리얼 충돌 시스템 핵심 정리 (콜리전 프리셋, 트레이싱) (0) | 2026.05.16 |
| 언리얼 애니메이션 시스템 정리 (AnimInstance, State Machine, Montage, Notify) (0) | 2026.05.06 |
