이제 적이 플레이어를 인지하고, 이동하여 공격하는 AI를 만들 것이다.
게임에서 전통적인 AI 구현 방식은 스테이트 머신이다.
공격, 이동, 도망 등을 스테이트로 만들어 전환하도록 하여 동작시키는 방식이다.
다만 AI가 복잡해짐에 따라 전환조건이 애매해지고, 머신이 지나치게 복잡해지는 단점이 있었다.
이러한 단점을 보완하여 나온 것이 비헤이비어 트리이다.
놀랍게도 과거 김용하 PD님이 비헤이비어 트리에 관하여 인터뷰한 내용의 글이 있다.
https://blog.naver.com/panmocle/220649357866
간단히 요약하자면 스테이트 머신에서는 애매했던 부분을 비헤이비어 트리에서는 논리적으로 명확하게 만들 수 있다.
추후에 비헤이비어 트리에 대해서는 별도의 포스팅을 만들 계획이다.
그렇다면 이제 본 프로젝트의 적에 들어갈 비헤이비어 트리를 만들어줄 시간이다.
만들어준 에셋들을 하나씩 살펴보자면,
AI_Enemy는 부모 클래스를 AIController로 하는 블루프린트이다.
우리가 플레이어 Pawn을 Controller로 소유하는 것 처럼, 플레이어 이외의 Pawn은 AIController에 의해서 소유될 수 있다.
BB_Enemy는 블랙보드이다.
블랙보드는 비헤이비어 트리에서 쓸 수 있는 키(일종의 변수)들을 담는 에셋이다.
BT_Enemy는 비헤이비어 트리이다.
실제로 적이 수행할 태스크와 태스크 간의 전환조건들이 들어가있는 에셋이다.
우선 AI_Enemy를 열어, Components의 +Add를 통해 AIPerception을 추가해주었다.
AIPerception에서 AI의 시각, 청각 능력을 만들어줄 수 있다.
컴포넌트 창에서 AIPerception을 선택하고, 디테일패널의 AI Perception 섹션을 살펴보면 Senses Config이 있다.
여기에 element를 추가해서 AI Sight config, AI Hearing config을 만들어주고 내부 값들은 다음과 같이 설정해주었다.
AI Sight config에서 설정할 주요 값들은 다음과 같다.
- Sight Radius: 인식 시야 반경
- Lose Sight Radius: 인식 해제 시야 반경
- PeripheralVisionHalfAngleDegress: 이상하게 이름이 긴데, 그냥 시야각도이다. 주의할 점이, Half 값이기 때문에 90으로 설정하면 180도의 시야를 갖는다. 현재 45도로 설정했으므로 90도의 시야를 가진다.
AI Hearing config에서 설정할 주요 값들은 다음과 같다.
- Hearing Range: 말그대로 소리를 들을 수 있는 범위
설정이 끝났으므로, BP_Enemy에 이 AIController를 넣어줄 차례이다.
디테일 패널의 Pawn 섹션에서 AI Controller Class를 선택해줄 수 있다.
바로 다음 포스팅에서는 이어서 블랙보드, 비헤이비어 트리 내부를 만들어줄 것이다.
'언리얼 엔진 5 > 개발 일지' 카테고리의 다른 글
[UE5] 블루아카이브 TPS게임 개발일지 (22) - 비헤이비어 트리를 이용한 적 AI 제작 3 (0) | 2023.12.31 |
---|---|
[UE5] 블루아카이브 TPS게임 개발일지 (21) - 비헤이비어 트리를 이용한 적 AI 제작 2 (0) | 2023.12.30 |
[UE5] 블루아카이브 TPS게임 개발일지 (19) - 총알 투사체 제작 (Projectile Movement) (0) | 2023.12.30 |
[UE5] 블루아카이브 TPS게임 개발일지 (18) - 적 이동 애니메이션 (0) | 2023.12.27 |
[UE5] 블루아카이브 TPS게임 개발일지 (17) - 적 무기 모델링 임포트 (0) | 2023.12.26 |