돗가비

2021년 11월 15일, Team GOAT
플랫폼 Windows
장르 액션
개발 플랫폼 Unity
진행 기간 2020년 11월 ~ 2021년 11월
관련 링크 스토브 상점

돗가비는 '세키로' 및 '젤다의 전설 브레스 오브 더 와일드'에서 영감을 받아 청강문화산업대학 2021년 졸업 작품으로 개발한 액션 게임 입니다.


1. 개발 스토리

2학년 2학기 중간고사 이후, 졸업 작품 제작을 목표로 결성된 Team GOAT에서 프로토타입부터 시작하여 우여곡절 많은 시행착오를 겪으며 만들었습니다.

프로토타입의 시스템은 젤다의 전설이 무기의 내구도에 따라 무기의 스위칭을 강제한다는 점에서 착안하고 비틀어 무기를 사용할 수록 내구도를 떨어뜨리는 것이 아닌 전투 게이지를 쌓아 무기 스위칭시 체력 회복이라는 개념으로 기획된 시스템이었습니다.

그러나 저를 포함한 팀원 모두 액션 게임 개발이 처음이었기 때문에 작업 프로세스가 정립되지 않은 편이었고 특히 다중 무기 시스템을 구현하는데 너무 많은 코스트가 들어가서 방학 중에 컨셉과 플레이어 캐릭터 시스템을 전면적으로 갈아 엎고 작업을 다시 시작하였습니다.

방학 중에는 상대적으로 시간이 널널했고 마음껏 R&D를 할 수 있었습니다. 이때 기초적인 플레이어 캐릭터 시스템의 재설계와 카메라 시스템의 작업이 진행이 되었고 3학년 1학기가 시작될 쯤에는 기반 작업이 완료되어 캐릭터 모델링 교체, 애니메이션 FSM 수정 및 교체 작업에 들어가게 되었습니다.

교체 작업을 진행하면서도 단조로운 전투를 역동적으로 만들기 위한 특수 공격 시스템 등이 추가되었고, 이후로도 크고 작은 시행착오 끝에 프로젝트를 끝낼 수 있었습니다.

2. 핵심 작업

2.1. 플레이어 캐릭터 시스템

플레이어 캐릭터 프리팹

플레이어 캐릭터 시스템은 AI 시스템과 함께 돗가비 프로젝트의 핵심적인 게임 플레이를 담당하며 유니티 애니메이션 시스템을 보다 효율적으로 활용하고 외부 시스템과 유기적으로 동작할 수 있는 구조를 의도하였습니다.

2.2. 카메라 시스템

플레이어 캐릭터를 추적하는 카메라

3D 백뷰 액션 게임을 설계하면서 몰입감을 주는 데에 가장 중요한 것은 카메라의 움직임이라고 생각하였습니다. 프로토타입 프로젝트에서는 Cinemachine의 FreeLookCamera를 이용하였으나 의도적인 움직임을 하는 데에는 한계가 있었고 플레이어를 중심으로 원형 궤도를 돌면서도 부드럽게 움직이는 카메라 코드를 직업 설계하게 되었습니다. 돗가비의 본격적인 개발 초기부터 플레이어 캐릭터 시스템과 함께 가장 많은 공을 들인 시스템이며 의도한 동작을 위해 많은 연구를 하여 개인적으로도 애착이 많은 코드입니다.

2.3. 인게임 UI

인게임 UI

인게임 UI는 플레이어 캐릭터와 상호작용할 부분이 많았기 때문에 대부분 제가 담당하게 되었습니다. UI 디자이너가 요구한 사항을 충족 시키기 위해 UI 연출에 대한 연구가 많이 필요했으며 복잡한 코드를 갖고 있습니다. 특히 각 요구사항들이 워낙 추상적이고 자주 바뀌었기 때문에 유연한 대응을 위해 몇가지 공통 컴포넌트를 제작하였으며 아주 많은 도움이 되었습니다.

인게임에서 사용된 공통 컴포넌트는 게이지바 컴포넌트, 플로팅 UI 컴포넌트, 자막 컴포넌트 등이 있으며 각 컴포넌트의 역할 및 동작을 최대한 제한시켜 컴포넌트의 조합으로 다른 UI 기능을 구현할 수 있도록 노력하였습니다.

게이지바 컴포넌트는 게이지 축소 및 기타 복합적인 연출 효과를 위해 이미지 레이어 구조로 이미지를 제어할 수 있는 컴포넌트입니다. 이 부분은 ‘젤다의 전설 : 야생의 숨결’에서 참고를 하여 감소 영역의 감소 속도 및 딜레이를 조정하여 유사한 효과를 내도록 의도하였습니다.

플로팅 UI 컴포넌트는 3D 공간상의 오브젝트를 2D 공간에서 추적하여 따라 붙을 수 있도록 설계한 컴포넌트로, 일반 몹들의 체력바나 락온 타겟 마커의 구성에 활용하였습니다.

2.4. 로딩 시스템

로딩 시스템은 하나의 코루틴 시퀀스로 이루어져 있으며 오브젝트가 많고 메모리를 많이 차지하는 저희 게임 특성상 다음 씬을 로딩하며 이전 씬의 메모리를 해제할 수 있도록 로딩 씬을 완전히 로드한 후 로딩 씬에서 다음 씬을 로드하도록 구성하였습니다.

2.5. 커스텀 프로세싱 볼륨

커스텀 프로세싱 볼륨은 프로젝트 초반에는 필요성을 못 느꼈으나 블러, 블랙아웃, 데미지 효과 등의 스크린 이펙트를 포스트 프로세싱 기반으로 구현하게 되면서 애니메이션에서 머티리얼을 제어할 방법을 찾던 중 URP에서 기본으로 제공하는 포스트 프로세싱 볼륨을 활용하는 방법을 고안하여 연구하고 구현하였습니다.

이를 위하여 며칠간 URP의 노출된 소스 코드를 분석하여 오픈소스로 공개되어 있는 BlitRenderFeature 코드를 개조하고 VolumeComponent 오브젝트를 상속받아 구현하였습니다.

2.6. 게임 연출

컷씬 연출 작업 화면

컷씬과 같은 게임 연출들은 유니티 타임 라인을 통해 구현하였으며 몇가지 기술적인 제약사항으로 인해 기획자 대신 본인이 연출 작업을 담당하게 되었습니다. 대사 출력을 위해 사용자 정의 타임라인 트랙 및 클립을 구현하거나 시그널 이벤트를 통한 C# 함수 호출로 최소한의 리소스로 최대한의 연출 결과를 도출할 수 있도록 노력하였습니다.

2.7. 오디오 작업

FMOD 오디오 작업 화면

기획자가 작업한 사운드 소스를 잘 어우러지도록 추가적으로 믹싱 및 마스터링하는 작업과 특수 효과 작업에 관여하였으며 BGM 작업의 경우 구매한 음원을 조립하여 전투 진척에 따라 진행이 바뀌는 적응형 음악 작업을 전반적으로 진행하였습니다.


#하위 문서

플레이어 캐릭터
인게임 UI
유틸리티