적 AI의 엄폐 시스템을 만들기 위해서는 EQS를 사용할 것이다.
EQS는 Environment Query System의 약자이다.
직역하면 환경에 질의를 한다는 뜻이 된다. 즉 AI가 주변 환경에 맞춰 최선의 선택을 할 수 있게 해주는 시스템이다.
공식 문서의 설명은 여기를 참고하면 될 것같다.
https://docs.unrealengine.com/5.3/ko/environment-query-system-in-unreal-engine/
이 시스템을 활용하여 적이 최선의 엄폐 위치, 공격 위치를 찾을 수 있도록 할 것이다.
만들어진 EQS는 비헤이비어 트리 내부에 들어갈 것이다. 즉 본 프로젝트에서는 BT_Enemy에 들어갈 것이다.
우선 EQS 에셋을 만드는 것 부터 시작할 것이다. 컨텐츠 브라우저에 우클릭 -> Artificial Intelligence -> EQS를 선택하여 에셋을 생성할 수 있다.
루트로부터 화살표를 드래그하여 Points : Grid를 선택하여준다.
이것이 의미하는 바는 EQS 에셋을 월드에 드래그 앤 드롭 해서 놓아보면 알 수 있다.
동그란 알맹이들이 그리드 모양으로 바닥에 깔려있는 것을 볼 수 있다.
이 각 알맹이들은 아이템이라고 부르며, EQS는 이 아이템들 중 최고의 아이템을 찾는 시스템이라고 할 수 있다.
이는 필터링으로 아이템을 걸러내거나, 스코어링으로 아이템들에 점수를 주는 방식으로 구현된다.
곧 그러한 방식을 실제로 사용할 것이다.
다시 EQS 내부로 돌아와서, SimpleGrid에 조건을 달아줄 것이다.
SimpleGrid 노드에 우클릭 -> Add Test -> Trace를 선택해준다.
현재 Trace를 사용하는 목적은,
아이템으로부터 플레이어 쪽으로 라인트레이싱을 해봐서 중간에 다른게 맞지 않는다면,
즉 플레이어로부터 그대로 노출되는 위치라면, 엄폐를 할 만한 위치가 아니므로 그 아이템은 버리기 위한 것이다.
우선 플레이어에게 위치가 노출되는 아이템은 점수를 주고 할 것 없이 그대로 버리면 되므로, 디테일 패널의 Test Purpose를 Filter Only로 바꿔준다.
그리고 현재 Context가 EnvQueryContext_Querier로 되어있는데, 이는 EQS를 사용하는 적 자기자신을 뜻한다.
Context쪽으로 라인트레이싱을 해야하므로, Context에는 플레이어가 들어가야 한다.
플레이어를 의미하는 Context를 새로 만들어주어야 한다.
블루프린트를 생성하되, 부모 클래스를 Env Query Context Blueprint Base로 설정해준다.
블루프린트의 이름은 Context_Player로 짓고나면,
좌측 Functions 섹션을 보면 오버라이딩 할 수 있는 함수가 3개가 있다.
Provide Single Actor를 오버라이딩하여, 플레이어를 리턴하도록 하면 된다.
이제 아까 EQS 에셋의 Trace의 디테일 패널의 Context에 Context_Player를 넣어주면 된다.
이제 게임에서 이게 어떻게 동작하는지 실험해볼 수 있다.
EQS 에셋을 월드에 드래그 앤 드롭하여 배치하고, 주변의 지형지물과 PlayerStart 모두에 적절히 걸치도록 한 뒤, 게임을 실행한다.
그리고 어퍼스트로피 키를 눌러 AI 디버깅 모드(이름이 이게 맞는지는 잘 모른다)를 켜고, ; 키를 눌러 자유 카메라로 전환한다.
그러면 아이템들이 각각 플레이어 쪽으로 라인트레이싱을 하여, 가로막힌 것들만 살아남고, 가로막히지 않은 것들은 파란색으로 죽어있는 것을 확인할 수 있다.
이제 살아남은 아이템들을 또 필터링하고, 스코어링을 통해 저것들 중 최고의 아이템을 엄폐 포인트로 사용하도록 할 것이다.
'언리얼 엔진 5 > 개발 일지' 카테고리의 다른 글
[UE5] 블루아카이브 TPS게임 개발일지 (26) - EQS를 이용한 엄폐 AI 3 (0) | 2024.01.02 |
---|---|
[UE5] 블루아카이브 TPS게임 개발일지 (25) - EQS를 이용한 엄폐 AI 2 (0) | 2024.01.01 |
[UE5] 블루아카이브 TPS게임 개발일지 (23) - 비헤이비어 트리를 이용한 적 AI 제작 4 (0) | 2023.12.31 |
[UE5] 블루아카이브 TPS게임 개발일지 (22) - 비헤이비어 트리를 이용한 적 AI 제작 3 (0) | 2023.12.31 |
[UE5] 블루아카이브 TPS게임 개발일지 (21) - 비헤이비어 트리를 이용한 적 AI 제작 2 (0) | 2023.12.30 |