본문 바로가기

Unreal

(316)
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-33 C++로 커스텀 BTTasks 구성하기이제 행동 트리에 더 많은 기능을 구성해보록 하자.이에 앞서 이번 강의에서는 C++로 커스텀 BTTasks 구성하는 것을 해보게 된다. 일단 기존의 마지막 위치를 탐색하는 노드의 이름을 바꿔주고 데코레이터로 LastKnownPlayerLocation을 할당해주자. 다음으로 BTTask 기반의 C++ 클래스를 새로 생성해준다.우리는 블랙보드 키 값을 적극적으로 사용하고 있기 때문에  BTTask_BlackboardBase 기반을 선택해준다. 이제 헤더와 CPP 파일이 생성될 것이다.헤더에 생성자를 통 태스크를 직접 생성해보자. 이렇게 하면 아직 기능은 없지만, 해당 이름을 가진 노드를 행동 트리에서 생성할 수 있게 된다.이제 할당하고 실행해보면 해당 태스크를 무사히 완..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-32 BT 데코레이터 및 셀렉터현재는 간단하게 플레이어에게 왔다가 일정 시간 지나면 원래 위치로 돌아가는 시퀸스를 설정하였다.우리의 목표는 플레이어가 보이면 플레이어 위치로 이동하고, 아니라면 플레이어의 마지막 위치로 이동하는 것이다.이러한 기능을 위해 셀렉터 노드를 사용할 수 있다.셀렉터 노드 아래 위치한 내용은 첫 태스크가 성공할 때까지 실행하게 된다. 그리고 시퀸스의 데코레이터 기능을 통하여 조건을 설정하는 것이 가능하다.우리는 기존의 블랙보드 키를 이용할 것이므로 블랙보드로 설정한다. 아래는 현재 SelfActor가 설정된 상태이다.우리는 플레이어 위치를 찾아야 하므로 플레이어 위치로 설정해주자.그러면 플레이어 위치가 존재한다면 해당 시퀸스를 실행하게 된다. 만약 플레이어 시야에서 사라지면 거기까지 가..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-31 행동 트리 태스크 및 시퀸스이제 AI가 실제로 앞뒤로 이동하도록 만들어보자.이를 위해 행동 트리에서 태스크를 생성해주어야 한다.이번 강의에서는 단순 이동을 테스트 할 것이기 때문에 Move To 태스크를 사용해보자. 이렇게 생성한 태스크는 시퀸스 아래에 위치하게 된다.시퀸스 아래에 할당한 태스크들은 해당 시퀸스 차례가 되면 순서대로 할당된 태스크들을 실행하게 된다. Move To 태스크를 더 자세히 살펴보면 어디로 이동할 것인지 위치 설정이 가능하다.여기서 우리가 전에 만들었던 블랙보드 키를 이용하여 PlayerLocation 지정이 가능하다. 이동 후에 잠깐 멈췄다가 다시 이동하는 것을 원하므로 Wait 태스크도 생성해주자.Wait 태스크 또한 얼마나 멈출 것 인지에 대한 값 할당이 가능하다. 플레이어..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-30 C++로 블랙보드 키 설정하기이제 블랙보드에서 게임플레이의 상태를 설정해서 AI가 그에 따라 행동할 수 있게 설정하는 블랙보드 키를 C++을 통해 직접 설정해보자.우선 블랙보드 창을 보면 다음과 같이 기본 키를 볼 수 있다. 그리고 VScode에서 GetBlackboardComponent() 함수를 통해 블랙보드 키 값을 설정하는 것이 가능하다.해당 함수를 사용하기 위해서는 관련 헤더를 포함시켜주어야 한다.해당 함수를 통해 플레이어의 위치를 벡터값으로 받아와보자.  이제 설정한 키를 새롭게 할당해보자.상단 New Key를 눌러서 할당하며, VScode 상에서 할당한 이름과 타입을 정확히 일치시켜주어야 한다.이후 실행을 시켜보면 해당 키에 다음과 같이 플레이어 위치 좌표가 뜨는 것을 볼 수 있다. 제대로 ..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-29 행동 트리 및 블랙보드언리얼에서 정교한 AI 행동을 위해서는 보통 행동 트리를 생성한다.이에 행동 트리와 여러 가지 변수를 저장하고 AI의 메모리와 비슷한 기능을 하는 블랙 보드도 같이 생성해주자. 이제 행동 트리를 확인해보면 다음과 같다. 우측 디테일 패널에서 생성했던 블랙 보드를 확인할 수 있고, 우측 상단에서 해당 블랙 보드 모드로 전환도 가능하다. 이제 해당 행동 트리와 블랙 보드를 통해서 우리가 기존에 구현했던 AI 기능을 구현하도록 할 것이다.이를 위해 기존에 작성했던 VScode의 내용은 주석처리해놓고, 행동 트리를 위한 변수를 하나 선언해주자. 해당 행동 트리를 실행하는 함수는 RunBehaviorTree이다.실행하기에 앞서 해당 행동 트리가 유효한 지부터 체크를 해주자. 그리고 언리얼로 ..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-28 AI 시선 확인하기전 강의에서 AI 시선 문제와, AI의 시야에서 벗어나게 되면 더 이상 AI가 쫓아오지 못하도록 해보자.AI의 시야를 체크하기 위해서는 LineOfSightTo 함수를 사용하게 된다.해당 함수를 통해 AI가 다른 액터(플레이어)를 볼 수 있는 지 없는 지에 대해 체크하고 이를 bool 타입으로 반환하게 된다. 만약 보이는 대상(플레이어)이 있다면 해당 대상에 포커스를하고 해당 대상을 향해 움직이게 되고,만약 보이는 대상(플레이어)이 없다면 포커스를 지우고 움직임 또한 멈추게 하자. 포커스를 지우는 방법은 ClearFocus() 함수를 통해 할 수 있다.여기에 매개변수로 포커스 우선순위에 대한 값이 들어간다.우리는 기존에 GamePlay를 기본 우선순위로 사용했기에 해당 값을 넣어주게 된..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-27 내비메시를 이용해 AI 이동하기이제 AI가 플레이어를 향해 쫓아오게 만들어보자.AI가 장애물을 피해 플레이어에게 올 경로를 찾을 수 있어야 하는데, 이는 Nav Mesh통해 하게 된다. Nav Mesh는 레벨에서 걸어 다닐 수 있는 공간인 메시로 A* Pathfinding 알고리즘을 사용한다.해당 메시 구역 내 경로를 계획하면 AI가 그 경로를 따라 움직이게 된다.이를 위해 우선 Nav Mesh를 배치해주자. Nav Mesh를 보이도록 하기 위해서는 좌측 상단의 Show 항목에서 Navigation 항목을 활성화 해주어야 한다. 그리고 전에 생성했던 BP_ShooterAIController가 가진 컴포넌트 중에 다음과 같은 컴포넌트가 존재한다. 해당 컴포넌트는 FMesh를 찾아서 우리로 하여금 경로를 생..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-26 AI로 조준하기저번 강의에 이어서 AI에 대해 더 자세하게 알아보자.이번엔 AI 포커스라는 것에 대해 알아보게 된다.AI 캐릭터들이 플레이어 캐릭터를 계속하여 포커스하며 시선을 따라오게 된다. 전 강의에서 생성만 했던 SHooterAIController 클래스에서 구현을 하게 되며, 해당 클래스에 BeginPlay 함수를 만들어주고 해당 함수에서 포커스를 하게 된다. 그리고 사용할 포커스 함수는 다음과 같다.포커스할 대상과 우선순위 값을 받는데, 보통 GamePlay를 기본으로 하므로 따로 건들지 않는다. 포커스할 대상은 우리 플레이어이기에 플레이어 폰을 얻을 필요가 있다.이는 UGameplayStatics에 속한 GetPalyerPawn 함수를 통해 얻을 수 있다.  플레이어 캐릭터는 인덱스가 0이므로..