안선생의 개발 블로그

[UE5 AI] AI - BlackBoard 본문

언리얼/AI

[UE5 AI] AI - BlackBoard

안선생 2024. 3. 20. 00:20

블랙보드란?

상태 및 정보 저장: 블랙보드는 게임 세계에서 AI의 상태 및 정보를 저장하는 데이터 구조입니다. 예를 들어, AI 캐릭터의 위치, 플레이어와의 거리, 현재 상태 등을 저장할 수 있습니다.

 

BehaviorTree가 알아야하는 정보들이라고 생각하면된다.

 

블랙보드가 왜 필요한가?

AI가 Sensing을 통해 오브젝트를 찾아서 오브젝트 위치로 움직인다 치자. 근데 갑자기 Sensing이 오브젝트를 다른애를 찾았다 치면 Sensing은 BehaviorTree에 알려주고 BehaviorTree는 오브젝트를 변경해줘야한다. 하지만 BehaviorTree는 계속 루프돌고 있으므로 바쁘다. Sensing도 계속 찾고 있으므로 바쁘다. 그리고 BehaviorTree는 값이 필요할때마 갖고있는 클래스를 계속 참조하고 있어야하므로 BehaviorTree가 너무 거대해진다. 여기서 중간다리인 블랙보드가 필요한 이유다. Sensing은 블랙보드에 값만 변경해주고  BehaviorTree는 블랙보드에 있는 값만 참조하며 블랙보드에 있는값이 바뀔때마다 BehaviorTree에서 값을 처리해주면 된다. 하나의 인터페이스라고 생각하면 될거같다.

 

 

  1. 상태 및 정보 저장: 게임에서는 AI 캐릭터가 다양한 상황에서 다양한 행동을 취해야 합니다. 블랙보드는 이러한 상태와 정보를 저장하고 유지하는 데 사용됩니다. 예를 들어, AI 캐릭터의 위치, 플레이어와의 거리, 적의 위치 등을 저장할 수 있습니다.
  2. 의사 결정: AI 캐릭터는 게임 세계에서 주어진 상황에 따라 행동을 결정해야 합니다. 블랙보드는 행동 트리(Behavior Tree)와 같은 의사 결정 메커니즘에서 사용되어, 각 행동 노드가 현재 상황을 판단하고 적절한 행동을 취할 수 있도록 합니다.
  3. 동적 상황 처리: 게임 세계는 동적으로 변화합니다. 플레이어의 행동, 적의 이동, 환경 요소의 변경 등에 따라 AI 캐릭터가 적응해야 합니다. 블랙보드는 이러한 동적 상황에 대응하여 정보를 업데이트하고 행동을 조정하는 데 사용됩니다.
  4. 중앙 집중화된 데이터 관리: 블랙보드를 사용하면 AI 시스템에서 중요한 데이터를 중앙 집중화하여 관리할 수 있습니다. 이를 통해 여러 AI 캐릭터가 동일한 데이터에 액세스하고 조작할 수 있으며, 데이터의 일관성과 효율성을 유지할 수 있습니다.
  5. 유연성 및 확장성: 블랙보드를 사용하면 AI 시스템을 더욱 유연하고 확장 가능하게 만들 수 있습니다. 새로운 상태나 정보가 추가되거나 변경될 때, 이를 블랙보드에 반영하여 AI의 행동을 쉽게 조정하고 확장할 수 있습니다.

따라서 블랙보드는 게임의 AI 시스템을 구현하는 데 필수적인 요소이며, 게임 세계에서 다양한 상황에 대응하고 지능적으로 행동할 수 있도록 도와줍니다.

 

블랙보드 사용하기

블랙보드가서 intkey,stringkey를 만듬

 

테스크를 하나 만들어서 블래보드키셀렉터를 하나 만들준다음에

인스턴스 편집가능하게 해줌

 

 

그럼 이렇게 키 선택을 통해서 원하는 키를 선택해서 이 테스크를 실행할 수 있다.

 

블랙보드 셀렉터를 사용하는 이유는 블랙보드 재사용성 때문이다. 만약 블랙보드에 있는 Intkey를 가져와 값을 수정한다치면 다른 블랙보드에서는 이 테스크를 사용할 때 무조건 Intkey가 있어야하고 만들어야 한다. 하지만 저렇게 키 셀럭터를 사용하면 다른 블랙보드나 Task에서는 원하는 블랙보드 키값을 넣어주면 된다.

이러면 블랙보드는 Task를 모르고 Task도 블랙보드를 모른다. 비헤이비어 트리에서 서로 연결 시켜주므로 Task는 다른 블랙보드에서 재사용이 가능함 

 

다른 비추천 예시

AIController->GetBlackboardComponent()->SetValueAsBool(FName("HitReacting"), false);

위에 말했듯이 HitReacting이라는 키가 있어야하므로 다른 키를 절대 사용 불가능 사용하고싶으면 직접 코드를 수정,

다른 블랙보드나 Task에서는 재사용도 불가능하다. 

 

그런이유로 블랙보드 키셀렉터를 사용하는걸 추천한다.

'언리얼 > 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 Behavior Tree - Task, 셀렉터(Selector),시퀀스(Sequence)  (0) 2024.03.17
[UE5 AI] AI Setup  (0) 2024.03.17