[Escape] 백룸 개발 일지 (1)
게임 소개
유니티 엔진을 이용한 1인칭 백룸 공포 탈출 게임
개발 과정 (진행 중)
24년 12월~25년 2월
내가 흥미를 가지고 시작할 수 있는 것이 무엇일까
처음에는 스토리 게임 위주로 계획을 짰다. 이전에 작성해본 게임 기획서와 유스케이스 등을 이용해보기도 했고, 스토리를 짜보기도 했지만 내 능력의 한계를 느껴 모조리 무산됐다. 이후 내가 의지를 가지고 시작할 수 있는 게임 장르가 무엇일까 고민하는 시간을 가졌고, 그 과정에서 한 번 공포 게임을 만들어 보면 어떨까? 라고 판단했다. 그 중에서도 백룸이 적당하다고 생각했다. 이유는 끝없이 느껴지는 공간 안에서 갇히는 공포를 게임으로 구현해보고 싶다는 생각이 들었다.
25년 3월~4월 (예정)
공간 개발부터 막히다.
백룸 같이 끝없이 펼쳐지는 공간을 어떻게 구현하는가? 처음에는 논논유클리드 기하학을 이용하고 싶었으나, 유니티로는 기능을 구현하기 힘들어 엔진을 개발하는 수준을 요구하는 지식이었다. 실제로 누군가가 구현을 했으나 나에게는 어려운 일이었다. …나는 그렇게 해서 아래 참고한 영상 중 2번째를 기반으로 만들고 있다.
https://youtu.be/kEB11PQ9Eo8?si=4Sj3Ym6WGa9PwRwZ https://youtu.be/EpqzDd933R0?si=VkemsmT4G10EV4S2
내가 추구하던 백룸보다는 탈출 게임에 가까워졌지만, 이참에 탈출 게임의 기능을 살리면서 한편으로는 내가 개발하려는 게임만의 특색을 넣어보자고 생각했다.
개발 근황
-
백룸
내가 개발하고 있는 게임은 2번째 영상처럼 맵을 직접 생성할 수 있다. 그런데 영상 내용 그대로 하고 나서 내 스타일대로 바꿔보니 문제가 한 두가지가 아니었다.
1번째 문제는 ‘배리어’에도 방이 뚫리듯이 생겨서 스폰하는 방의 위치가 배리어에 가까우면 플레이어가 배리어 안에 갇히는 현상이 일어나는 것이었다. 맵 생성할 때 입력받는 값(맵 크기)의 경계값을 파악하여 배리어를 생성하는 것으로, 정사각형이라는 가정 하에 경게값에 위치하는 방을 제거한 후에 배리어를 생성하도록 했다.
2번째 문제는 방이 랜덤으로 생성되다 보니 가끔 출입구가 막히는 현상이 일어났다. 그 외에도 있었던 것 같기도 하오나, 기록을 틈틈이 하진 않아서 기억이 안난다. 플레이어가 적에게 밀려나는 현상 때문에 navMesh 컴포넌트를 추가했는데, 위 컴포넌트와 출입구 방의 위치를 통해 루트를 계산하여 도착할 수 있으면 true, 안되면 false 출력 등으로 맵 생성이 완료되기 전에 적절한 방인지 판단할 수 있도록 했다.
-
플레이어
플레이어의 기능은 기본에 충실했다. 1인칭 시점으로 카메라를 플레이어 자식 오브젝트로 심었다. 계단을 사용할 일은 없을 것 같아 캐릭터 컨트롤러를 사용했다.
isGround, isRun 등의 변수로 통해 땅을 인식(걷기 조건), 달리기 조건 등을 활용하기도 했다.
-
에너미
공포게임답게 무서운 인상의 괴물 에셋을 사용했다. 초자연적인 현상 느낌을 살리고 싶어서 유령을 선택했다.
처음에는 몬스터가 범위 상관없이 무조건 플레이어를 쫓아가도록 했는데, 테스트를 몇 번 하다보니 플레이어에게 불리한 것 같았다. 그래서 빈 오브젝트를 생성하여 그것을 포인트로 삼고 에너미가 주기적으로 순찰을 돌도록 했다. 순찰 도중 범위 안에 들면 쫓아가도록 한다. 맵이 랜덤으로 생성되는 시스템이기 때문에, 맵이 생성될 때에 순찰 포인트도 랜덤으로 생성하게 했다.
이것과 별개로 초기에 에너미가 플레이어를 쫓아가는 방향과 정반대로 회전한 상태로 움직이거나, 벽을 제대로 못 피하는 등 여러 문제가 발생했으나 navMesh/Obstacle 등 여러가지 조건을 따지면서 겨우 극복했다. (현재 글로 그저 적고 있어, 기억이 가물가물. 추후 수정할 계획)
-
손전등
내가 계획한 백룸의 컨셉이 어두운 방이여서, 손전등을 들고 빛을 비춰간다는 설정이다. 손전등의 경우는 무료 에셋을 사용했으나 무언가 심심한 느낌이 들어 손전등을 하나의 무기로서 만들었다. 물론 패널티를 주어질 것이며 정말 급할 때만 쓰는 느낌에 가깝도록 했다. (이에 대한 UI도 따로 만들어야 한다.)
이상하게도 플레이어와 다르게 손전등이 계속 벽을 뚫는 현상이 일어나는 바람에, 처음에는 플레이어의 character controller-radius를 올리며 막았다. 그런데 플레이어의 radius가 커진거니 당연히 지나갈 수 있던 길도 못 지나갔다.
그래서 일단 손전등이 벽에 닿으려고 하면 radius가 순간적으로 커지도록 조절했으나 어색해서 이것을 좀 더 손보고 싶다.
일단은 효과음, UI, 최적화 위주로 4월 초반까지 완성해볼 계획이다.
코드 정리나 더 자세한 것은 시간이 나면 따로 업로드… ^^; (위 글에서 추후 수정할 수 있음)
사진 추가 예정