1. AIController
AIController는 플레이어가 없는 캐릭터(NPC)를 대신 조종하는 클래스로, AI 캐릭터를 조종하는 역할이며, 플레이어 컨트롤러와 같은 레벨에서 작동하지만 AI 전용기능이 추가되어있다.
AI캐릭터를 제어하는 객체로 실제 플레이어 대신 캐릭터의 입력을 처리해준다.
예시
void AMyAIController::BeginPlay()
{
Super::BeginPlay();
UseBlackboard(BlackboardAsset, BlackboardComponent);
RunBehaviorTree(BehaviorTreeAsset);
// 초기 목표 설정
BlackboardComponent->SetValueAsObject("TargetActor", PlayerActor);
}
주요 역할
- 행동 판단 로직(Behavior Tree) 을 작동시킴
- 상황 데이터를 저장/갱신(Blackboard) 함
- 결정된 행동(이동, 공격 등) 을 캐릭터에 전달함
2. Behavior Tree
Behavior Tree는 행동규약, 또는 양식을 미리 지정해두는 오브젝트로, 어떻게 AI가 움직일지에 대한 의사결정을 논리적으로 구성할 수 있게 도와주는 Tree기반 시스템이다.
예시
주요 역할:
- 어떤 상황에서 어떤 행동을 할지 조건과 흐름을 시각적으로 정의
- Selector: 여러 행동 중 하나라도 성공하면 그 경로로 감
- Sequence: 모든 행동이 순서대로 성공해야 통과함
- Task: 실제 행동을 수행 (예: 공격, 이동)
- Decorator: 조건 검사 (예: 플레이어가 근처에 있을 때만 실행)
- Service: 틱마다 계속 실행되는 검사나 로직
3. Blackboard
Blackboard는 AIController와 Behavior Tree사이에서 AI의 의사결정에 필요한 정보를 주고받도록 도와주는 데이터 저장소로, AI가 알고 있는 정보(상태, 목표, 위치 등)를 저장하고 공유하는 데이터 공간이다.
주요 역할
- Behavior Tree와 AIController 간의 데이터 공유
- Key-Value 방식으로 정보를 저장 (예: TargetActor, bIsAlert)
- Decorator, Task, Service 등에서 조건 비교와 데이터 접근용으로 사용
AIController + Behavior Tree + Blackboard 관계
관계
구성 요소 | 설명 | 상호작용 |
AIController | AI의 주체 (명령자) | Behavior Tree 실행, Blackboard 값 설정 |
Behavior Tree | 판단 로직 설계도 | Blackboard 값 기반으로 행동 선택 |
Blackboard | 기억 데이터 저장소 | 트리 조건 검사 및 행동에 영향 |
전체 흐름 예시
- AIController가 소환된 AI 캐릭터에 부착
- BeginPlay에서 RunBehaviorTree() 호출 → 트리 시작
- 트리는 Blackboard에 저장된 값 기준으로 의사결정
- 결정된 Task(예: MoveTo, Attack)가 실행됨
- 게임 상황에 따라 Blackboard 값이 계속 바뀌면서 행동도 변경
'Unreal_Engine 5 > UE5 AI(NPC, Enemy)' 카테고리의 다른 글
UE5 AI(NPC, Enemy)(5) RVO (0) | 2025.04.26 |
---|---|
UE5 AI(NPC, Enemy)(4) AIController의 MoveToActor와 MoveToLocation (0) | 2025.04.26 |
UE5 AI(NPC, Enemy)(3) Nav Modifier Volume (0) | 2025.04.25 |
UE5 AI(NPC, Enemy)(2) NavMeshBoundsVolume, Navigation Invoker (1) | 2025.04.24 |