안선생의 개발 블로그
[UE5 AI] AI Setup 본문
구조는 AIController는 Enemy를 제어하고, Behavior Tree는 적 캐릭터의 행동 패턴을 정의하며, Blackboard는 Behavior Tree에서 사용되는 데이터를 저장하고 공유합니다.
Enemy 캐릭터 클래스를 만들고
PossessBy함수와 , BehaviorTree , AIController를 멤버 변수를 선언해줍니다.
캐릭터마다 갖는 BehaviorTree가 다를 수 있기 때문에 캐릭터에서 BehaviorTree선언해줬습니다.
cpp
PossessedBy는 폰이 컨트롤러에 빙의되면 컨트롤러를 반환합니다.
Cast해서 컨트롤러 가져온다음에 RunBehaviorTree를 통해 실행시켜줍니다.
RunBehaviorTree는 비헤어트리를 실행하기 위해 반드시 해줘야 합니다.
RunBehaviorTree를 실행하면 BlackBoard도 알아서 설정됨 BlackBoard는 부모인 AIController에 멤버변수로 가지고 있고, 타입은 UBlackBoardComponent임
에디터를 실행시켜준뒤
만들어줍니다.
이제 Enemy (캐릭터 클래스)에 가서
Behavior Tree와 AI Controller클래스를 설정 해줍니다.
마지막으로 비헤이어트리에 블랙도브 설정해주면 초기설정은 끝이납니다.
- Enemy (적 캐릭터):
- Enemy는 일반적으로 게임 세계에서 플레이어에 대항하는 적 캐릭터를 나타냅니다.
- Enemy는 플레이어를 추적하고, 공격하고, 다양한 상황에 맞게 행동해야 합니다.
- AIController (AI 컨트롤러):
- AIController는 Enemy나 다른 AI 캐릭터의 동작을 제어하는 컴포넌트입니다.
- AIController는 적 캐릭터의 행동 패턴을 결정하고, 게임 세계에서 적절한 위치로 이동하도록 지시합니다.
- AIController는 주어진 상황에 따라 캐릭터의 행동을 변경하고, 외부 요소와 상호작용할 수 있습니다.
- Behavior Tree (비헤이비어 트리):
- Behavior Tree는 행동 기반의 AI를 구현하는 데 사용되는 그래프 기반의 도구입니다.
- Behavior Tree는 노드들의 계층 구조로 구성되어 있으며, 각 노드는 특정 행동을 나타냅니다.
- Behavior Tree는 순차적인 동작, 선택지 분기, 반복 등을 사용하여 AI의 행동을 설계하고 제어합니다.
- 각 노드는 특정 상황에서 실행될 행동을 나타내며, 이러한 노드들의 조합으로 AI의 행동 패턴을 정의합니다.
- Blackboard (블랙보드):
- Blackboard는 Behavior Tree에서 사용되는 데이터 저장소입니다.
- Blackboard는 키-값 쌍 형식으로 데이터를 저장하고, Behavior Tree의 노드들은 이 데이터에 액세스하여 행동을 결정합니다.
- 예를 들어, 적 캐릭터의 행동 패턴을 정의하는 Behavior Tree에서는 적의 위치, 플레이어와의 거리, 현재 상태 등을 Blackboard에 저장할 수 있습니다.
- Behavior Tree의 노드들은 Blackboard에 저장된 데이터를 읽고 쓰며, 이를 기반으로 행동을 조정합니다.
'언리얼 > AI' 카테고리의 다른 글
[UE5 AI] Behavior Tree - Decorator (0) | 2024.03.27 |
---|---|
[UE5 AI] Behavior Tree - Service (0) | 2024.03.21 |
[UE5 AI] Simple Parallel (0) | 2024.03.21 |
[UE5 AI] AI - BlackBoard (0) | 2024.03.20 |
[UE5 AI] AI Behavior Tree - Task, 셀렉터(Selector),시퀀스(Sequence) (0) | 2024.03.17 |