언리얼 엔진5 45

[UE5] 블루아카이브 TPS게임 개발일지 (33) - 엄폐 시스템 구현 3

엄폐 시에 이동을 담당하는 CoverTrace 함수는 굉장히 길고 복잡하다.따라서 이에 대한 설명을 포스팅 안에서보단, 코드에 주석을 최대한 많이 다는 것으로 대체하고자 한다.코드는 다음과 같다. (PC 환경에서 보는 것을 추천)void AKannaCharacter::CoverTrace(){ FHitResult HitResult; FCollisionQueryParams CollisionParameters; CollisionParameters.AddIgnoredActor(this); FVector ActorLocation = GetActorLocation(); UCharacterMovementComponent* Movement = GetCharacterMovement(); //현재 PlaneConstrai..

[UE5] 블루아카이브 TPS게임 개발일지 (31) - 엄폐 시스템 구현 1

이번엔 엄폐 시스템을 만들어보고자 한다. 엄폐를 담당하는 InputAction을 만들어 캐릭터에 달고, 매핑하는 과정은 특별할 것이 없기 때문에 이 포스팅에서는 생략하려고 한다. 우선 낮은 엄폐물에 앉아서 엄폐하는 것부터 시작하였다. Mixamo에서 캐릭터가 앉은 채로 행동하는 애니메이션을 받아서 캐릭터에 맞게 조금 수정해주었다. 이 두 애니메이션을 기반으로 속도를 축으로 하는 블렌드 스페이스 1D를 만들었다.  그리고 애니메이션 블루프린트의 MainStates에 InCover 상태를 추가하고, 전환 조건을 새로 만든 변수인 IsInCover의 true/false로 하였다.  그리고, 준비할게 하나 더 있다.엄폐물을 찾기위한 라인트레이싱 채널을 새로 하나 만들 것이다.Project Settings -> ..

[UE5] 블루아카이브 TPS게임 개발일지 (30) - 리팩토링 (블루프린트 -> C++)

게임을 기껏 C++ 프로젝트로 만들어놓고 최근 너무 블루프린트로만 기능을 만든 것 같다. 그래서 오늘은 몇가지 기능을 C++ 코드로 옮겼다.  먼저 BP_Enemy의 NoticePlayer, AwarePlayer 이벤트는 각각 플레이어를 목격했을 때, 플레이어의 위치를 인지했을 때 호출되는 이벤트이다. 지금은 이동속도 증가 기능뿐이지만, 추후 새로운 기능이 추가될 수 있다. 이 두 이벤트를 C++로 옮기되, 이 이벤트에 종속적이던 다른 에셋에는 영향이 없도록 BlueprintCallable 지정자를 사용했다.//Enemy.hUFUNCTION(BlueprintCallable)void NoticePlayer();UFUNCTION(BlueprintCallable)void AwarePlayer(); void A..

[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게임 개발일지 (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게임 개발일지 (23) - 비헤이비어 트리를 이용한 적 AI 제작 4

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

[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  간단히 ..

[UE5] 블루아카이브 TPS게임 개발일지 (18) - 적 이동 애니메이션

지금까지 Enemy 블루프린트의 애니메이션에 애니메이션 시퀀스 하나만 박아두었었다. 슬슬 체계화된 애니메이션이 필요할 것 같아, 애니메이션 블루프린트를 만들기로 했다. 우선 Mixamo에서 Idle, 걷기, 달리기 애니메이션을 가져와, 총 사이즈에 맞게 적절히 수정해주었다.   그리고 이 세 애니메이션을 기반으로 한 Blend Space 1D를 만들었다. Blend Space는 일전에 칸나의 무빙샷 애니메이션에 사용한 바가 있다. https://ciel45.tistory.com/15 블루아카이브 TPS게임 개발일지 (6) - 조준 개선 (Layered Blend, Blend Space)·지금까지 조준 기능이 카메라 줌 인 부분만 구현되어있었다. 이번에는 조준한 채로 걸어다닐 수 있고, 카메라를 좌우로 돌..

[UE5] 블루아카이브 TPS게임 개발일지 (17) - 적 무기 모델링 임포트

이번엔 적들이 쓸 무기 모델링을 임포트하였다.  다시 한번 원화를 살펴보니, 들고있는 무기가 M16과 비슷하다는 느낌이 들었다.따라서 sketchfab에서 적절한 M16 모델을 구했다.https://sketchfab.com/3d-models/low-poly-m16-58af6360d8864eb79f47638fe8d94378 Low Poly M16 - Download Free 3D model by samanthacford - SketchfabAn American classic and former service rifle for the U.S. military. The Weapon comes in 3 configurations, the first with the A2 handguard, the second c..

[UE5] 블루아카이브 TPS게임 개발일지 (16) - 적 사망 연출 2

래그돌이 뭔가 이상한 이유는 Physics Asset이 엉망이었기 때문이다.캐릭터를 임포트한 뒤 아무것도 건드리지 않은 Physics Asset이다. 캡슐이 마구 겹쳐있고, 방향도 중구난방이며, 누락된 bone도 많은 것을 볼 수 있다.  그래서 이걸 계속 수정해보다가, 그냥 Physics Asset을 새로 만들기로 결정했다.     피직스 에셋을 새로 만든 뒤 필요없는 뼈들은 버리고, 우선 캡슐의 크기를 캐릭터에 맞게 잘 조정하였다. 그리고 관절부에 초록색, 빨간색 표시가 있는 것이 보일 것이다.이는 Constraint로, 관절이 움직일 수 있는 범위를 제한해준다.  우측의 디테일 패널에 angular를 검색해두고 작업하면 편하다. 빨간색 3d 원뿔 표시는 디테일 패널의 Swing 1,2 Limit와 ..