UE5 Project - 공포게임 제작 일지 - 1

리벤·2023년 11월 16일

HideAndSeek

목록 보기
2/9

1. 플레이어 애니메이션 선정


처음에 플레이어의 메시를 하나하나 찾고 있었는데, 컨셉에 맞는 모델링도 없을 뿐더러, 나의 모델링 실력도 좋지 않다는 문제가 있었다.
근데 어차피 1인칭 시점이라는 점 + 플레이어의 모델링은 유저에게 절대로 보이지 않게 할 것이라는 점으로 엔진에서 기본으로 제공해주는 마네킹을 사용하기로 결정했다.
(플레이어 클래스와 애니메이션 인스턴스는 C++로 작성하였고, 애니메이션은 블루프린트 클래스를 이용했다.)

2. 맵 구성


구상했던 컨셉에 맞는 메시 선택 및 스테이지 구성.
(랜덤 레벨 생성 클래스와 레벨 내부에 상호작용을 할 액터 클래스는 C++로 작성하였고, 그 외 부가적인 것들은 블루프린트 클래스를 이용했다.)

스테이지는 위 그림과 같은 형태로 이루어져있다.
구조상 회전값이 정해져있는 Double(2갈래길), Triple(3갈래길)과는 다르게 Quad(4갈래길)은 랜덤하게 회전하여 레벨을 구성하게 된다.
해당 맵은 플레이어가 스테이지를 시작할 때마다 랜덤하게 짜맞춰져서 새로운 형태의 맵을 즐기게 했다.

스폰 구역의 예시로 랜덤한 스폰 구역이 위 스테이지에 짜맞춰진다.

여담으로, 원래는 A*알고리즘이나, 절차적 맵 생성을 통해서 랜덤한 레벨을 생성시키려고 했지만, 필자가 원하는 느낌의 맵을 생성시키지 못하는 것 같아서, 레벨은 일일이 노가다로 만들고 랜덤 레벨 생성 클래스가 해당 레벨들을 불러서 조립하게 했다..

3. 크리쳐 메시 선정 및 애니메이션 적용


크리쳐들은 웬만하면 기획에 맞게 직접 모델링을 하고 싶었으나, 나의 떨어지는 모델링 실력 상 그럴 순 없었고, Epic Games의 Paragon과 Mixamo에서 모델링 및 애니메이션을 공수해왔다.
물론, 각 크리쳐 클래스와 애니메이션 인스턴스는 C++ 작성하였고, 애니메이션은 블루프린트 클래스로 조정하였다.

  • Reaper

  • Runner

  • Brute

4. 크리쳐의 순찰 포인트를 액터로 지정하고 PatrolPointList 배열에서 해당 포인트들을 관리


스테이지가 랜덤으로 조립되어 크리쳐들의 패트롤을 어떻게 할 지 고민하던 찰나에, 순찰 포인트를 담당할 액터들을 설치해두고 각 크리쳐들이 해당 액터들의 위치를 받아와서 순찰하면 좋을 것 같다는 생각이 들었다.

각 크리쳐들은 위와 같은 PatrolPointList 배열을 가지고 있고, 각 순찰 포인트 액터 값을 가지게 설정했다. 이제 크리쳐들은 배열 내부의 액터 중 랜덤한 하나를 가져와서 해당 액터를 향해 이동하게 된다.

이렇게 생각하던 대로 잘 패트롤 하는 걸 볼 수 있다.

다음 패트롤 위치를 찾고 움직이는 비헤이비어 트리이다.

해결할 점

  • 맵 생성 후 인게임 플레이 시 프레임 드랍 문제 해결하기
  • 레벨에 배치한 후 AI가 패트롤할 때 팅기는 문제 해결하기
profile
traveler who wants to be game developer

0개의 댓글