언리얼 엔진 5 81

[UE5] 블루아카이브 TPS게임 개발일지 (29) - 총구 화염 효과

이번엔 사격 시 총구 화염을 적용해보았다. 언리얼에서 파티클 시스템을 구현하는 에셋은 두가지 종류가 있다. 각각 Cascade, Niagara이다. 나이아가라는 캐스케이드를 발전시킨 것이라 여러 면에서 뛰어나지만, 비교적 최근에 나온 것이라 정보, 자료가 많이 없다.반대로 말하면 캐스케이드는 레거시 에셋이지만 그만큼 리소스가 풍부하다.따라서 여기서는 캐스케이드를 사용하였다. 에셋은 여기에 들어있는 것을 사용하였다.  우선 적에게 화염 효과를 달아주는 것 부터 시작하였다.효과가 재생될 기준점으로 새로운 ArrowComponent를 만들어, 총구에 맞춰 위치시켜주었다. 그리고 적의 One Shot 함수, 즉 단발 사격 함수에 캐스케이드가 머즐에 붙어 재생되도록 하였다.캐스케이드를 재생시키기 위해서는 Spaw..

[UE5] 블루아카이브 TPS게임 개발일지 (28) - 적 연발 사격, 겹침 방지

전투의 양상을 구현할 수는 있었지만, 고칠 점이 있다. 적이 자동소총을 들고있음에도 단발사격만 함자기들끼리 서로 진로를 방해함 우선 연발 사격을 구현하기 위해,BP_Enemy의 이벤트 그래프에 만들어놓았던 Shoot 이벤트를 One Shot이라는 이름의 함수로 바꿨다. 또한 적이 너무 정확하게 사격하지 않도록 발사 방향에 약간의 랜덤성을 부여하였다.함수 노드는 다음과 같다. 또한 Play Sound at Location에 Attenuation Setting을 달아줌으로써 적의 총성에서 거리감을 느낄 수 있도록 하였다.이에 대한 자세한 설명은 https://docs.unrealengine.com/5.0/ko/sound-attenuation-in-unreal-engine/ 사운드 어테뉴에이션언리얼 엔진 4 ..

[UE5] 블루아카이브 TPS게임 개발일지 (27) - EQS를 이용한 엄폐 AI 4

지난 포스팅에 이어서 BTTask_Cover, BTTask_Attack에 대해 설명할 것이다. 먼저 비헤이비어 트리 구조를 상기해보자면 태스크가 쓰이는 곳은 다음과 같다.(엄폐 위치로 이동한 후, 공격 위치로 이동하여 플레이어 쪽을 본 후) BTTask_Cover의 내부 구현은 다음과 같다.먼저 상기해두자면, 이 태스크를 수행하는 것은 최적의 엄폐위치를 찾아서 그곳으로 이동한 뒤이다. 이동한 뒤에는 BPI_Combat 인터페이스의 Cover 이벤트를 호출한다. 그 결과로 BP_Enemy의 Cover 이벤트가 호출되어, 지난 포스팅에서 보았다시피 Crouch 노드를 실행할 것이다. 그 다음, Random Bool with Weight 노드를 통해 확률을 준다. Weight가 0.7임은 70%로 true라는..

[UE5] 블루아카이브 TPS게임 개발일지 (26) - EQS를 이용한 엄폐 AI 3

엄폐 EQS에 이어 공격을 담당하는 EQS도 빠르게 만들었다. 이름은 EQS_FindAttackPos로 짓고 내부는 다음과 같이 만들었다. 여기서 검사하는 것은 두가지이다.아이템에서 플레이어 방향으로 라인트레이싱을 하여, 가로막히는 것들을 걸러낸다.EQS_FindCover 때와는 반대이다. 플레이어로부터 가려지는 곳이 아닌, 플레이어를 노리기 위한 자리를 찾는 것이기 때문이다. 이를 위해서는 디테일 패널의 Bool Match를 꺼줘야 한다. 자기자신에게서 최대한 가까운 포인트에 높은 점수를 준다.당연하게도 플레이어를 공격할 수 있는 위치로 빠르게 갈 수록 좋기 때문이다. + FindAttackPos EQS는 아이템들의 높이를 FindCover EQS보다도 더욱 높여주어야 한다. 적이 앉아서 엄폐해있다가 ..

[UE5] 블루아카이브 TPS게임 개발일지 (25) - EQS를 이용한 엄폐 AI 2

지난 포스팅에서 플레이어에게 노출되는 위치를 걸러내는 것까지 했었다. 이번엔 엄폐물 주변에 있는 아이템만을 사용하도록 한번 더 걸러낼 것이다.EQS 에셋에 들어가 SimpleGrid를 우클릭한 뒤, Add Test -> Overlap을 선택해준다. Overlap은 아이템이 자기 주변에 엄폐물이 있는지를 오버랩을 통해 알 수 있도록 하기 위해서 사용하는 것이다.  디테일 패널의 Overlap Data 섹션에서, X와 Y를 10에서 100으로 바꾼다. 왜냐하면, 우선 현재 아이템 간의 간격은 100으로 되어있다. 이는 SimpleGrid 노드 자체를 클릭하면 나오는 디테일 패널에서 Space Between 값을 통해 확인할 수 있다. 따라서 오버랩 박스의 X, Y 크기를 100으로 하는 것이 각 아이템이 딱..

[UE5] 블루아카이브 TPS게임 개발일지 (24) - EQS를 이용한 엄폐 AI 1

적 AI의 엄폐 시스템을 만들기 위해서는 EQS를 사용할 것이다. EQS는 Environment Query System의 약자이다.직역하면 환경에 질의를 한다는 뜻이 된다. 즉 AI가 주변 환경에 맞춰 최선의 선택을 할 수 있게 해주는 시스템이다. 공식 문서의 설명은 여기를 참고하면 될 것같다.https://docs.unrealengine.com/5.3/ko/environment-query-system-in-unreal-engine/ 인바이런먼트 쿼리 시스템인바이런먼트 쿼리 시스템(EQS)이 무엇인지, 이 시스템으로 어떻게 환경 데이터를 쿼리하는지 설명합니다. 그런 다음 이 데이터를 AI가 취할 행동을 결정하는 프로세스에 사용하도록 제공할 수docs.unrealengine.com 이 시스템을 활용하여 적..

[UE5] 블루아카이브 TPS게임 개발일지 (23) - 비헤이비어 트리를 이용한 적 AI 제작 4

이번엔 촉각, 예측 AI 기능을 추가할 것이다.  AI_Enemy (AI Controller) 블루프린트의 AIPerception에 또 새로운 config을 추가해주었다. 이것들은 둘다 딱히 내부적으로 설정할 건 없다. 그냥 추가만 해주면 된다.  AI에 촉각이 생겼으므로 촉각을 인지하여 블랙보드 키를 세팅해주는 함수를 만들 차례이다.위의 이미지의 좌측 Functions 섹션에 Handle Touch Event를 추가해둔 것이 그것이다.  함수 내부는 기존 것들과 거의 비슷해서, 설명은 주석이 달려있는 블루프린트 이미지 한 장이면 충분할 것 같다.   이제 플레이어의 위치를 예측하는 함수, Handle Prediction의 내부를 구현할 차례이다. (마찬가지로 AI_Enemy 블루프린트 이미지를 보면 이..

[UE5] 블루아카이브 TPS게임 개발일지 (22) - 비헤이비어 트리를 이용한 적 AI 제작 3

시작에 앞서, 비헤이비어 트리의 Chase Selector 부분을 조금 수정했다. 플레이어가 숨어도 확실하게 접근해서 확인하도록 하기 위해서이다.   이제 비헤이비어 트리에서 쓴 BTTask를 만드는 과정을 담을 것이다.BTTask 역시 블루프린트 에셋으로, 다음과 같이 만들 수 있다. BTTask_MoveRandomLocation 이름으로 블루프린트를 만들어 이벤트 그래프를 열면, 좌측의 My Blueprint 탭의 Functions 섹션에 (5 Overridable) 표시가 있을 것이다. 말그대로 BTTask Blueprint Base 부모클래스에 정의되어있는 함수를 재정의할 수 있는 것이다. Override 버튼을 눌러, Receive Execute AI를 만들고 노드를 다음과 같이 짜주었다.  G..

[UE5] 블루아카이브 TPS게임 개발일지 (21) - 비헤이비어 트리를 이용한 적 AI 제작 2

지난 포스팅에 이어서 BB_Enemy와 BT_Enemy의 내용을 작성하고자 한다. SelfActor는 기본적으로 있는 키이고, 나머지 3개는 New Key 버튼을 통해 직접 추가한 것이다.각각의 의미는 다음과 같이 사용할 것이다.SelfActor: 말그대로 자기자신을 의미. 여기서는 Actor로써의 BP_Enemy이다.TargetActor: 인지할 대상인 액터를 의미. 여기서는 Actor로써의 BP_KannaCharacter가 될 것이다.TargetLocation: AI가 타깃이 있을 것으로 추정하는 위치를 나타낼 것이다.LastKnownLocation: 타깃이 시야에 있다가 사라졌을 때, 사라지기 전 마지막 위치를 나타낼 것이다.  비헤이비어 트리에서 이 키들을 사용할 것이다. 참고로 아래 이미지들에서..

[UE5] 블루아카이브 TPS게임 개발일지 (20) - 비헤이비어 트리를 이용한 적 AI 제작 1 (+AI Controller)

이제 적이 플레이어를 인지하고, 이동하여 공격하는 AI를 만들 것이다. 게임에서 전통적인 AI 구현 방식은 스테이트 머신이다. 공격, 이동, 도망 등을 스테이트로 만들어 전환하도록 하여 동작시키는 방식이다.다만 AI가 복잡해짐에 따라 전환조건이 애매해지고, 머신이 지나치게 복잡해지는 단점이 있었다. 이러한 단점을 보완하여 나온 것이 비헤이비어 트리이다.   놀랍게도 과거 김용하 PD님이 비헤이비어 트리에 관하여 인터뷰한 내용의 글이 있다. https://blog.naver.com/panmocle/220649357866 [판모클] 게임 AI에 대해서 with 큐라레 마법도서관 김용하PD님  이번에는 모바일 게임 "큐라레:마법도서관"의 김용하PD님을 모시고, AI 중...blog.naver.com  간단히 ..