1인 개발 가디언 슬래시 출시 후기2
이전 글에서는 서버의 선택과 데이터베이스에 대한 내용을 적었습니다.
본 글에서는 클라이언트의 입장에서 게임을 어떻게 구성해왔는지 적어보겠습니다.
게임 플레이 영상
게임의 인터페이스 구성은 생각보다 단순합니다.
보이는 것처럼 스코어, 체력, 진행도, 블록 체력, 콤보, 데미지, 캐릭터 조작 등으로 인터페이스가 구성되어 있습니다.
그 외에도 점프와 착지 효과, 공격 효과, 블록 파괴 효과, 블록 감속 효과, 다이아 획득 효과 등 다양한 파티클을 구성해 놨으며, 보이지 않는 곳에는 풀링 시스템과 사운드 시스템, 전투 시스템, 게임 컨트롤 시스템 등 다양한 기능들이 숨겨져 있습니다.
캐릭터 구현
게임을 구현하면서 가장 처음 했던 작업은 캐릭터의 구현이었습니다. 2D 스프라이트 이미지를 마음대로 움직이기 위해서는 뼈대 작업이 필요했습니다. 누군가가 만들어 줬었다면 작업 속도가 훨씬 빨랐겠지만, 1인 개발의 입장에서 필요한 리소스는 직접 만들어야 했습니다. 협업의 필요성은 리소스가 없을 때 가장 뼈저리게 느끼는 것 같습니다.. 그림도 못 그리는데 개발자가 포토샵으로 머리, 몸통, 팔, 다리를 그렸습니다. 예술적인 재능은 없어서 대부분 원과 직사각형 뿐인 이미지이지만 스파인 툴도 사용할 줄 모르기에 힘겹게 레이어로 구분된 팔다리를 만들고 유니티 내에서 리깅 작업을 했습니다. 이미지만 보면 보잘 것 없지만, 만들 당시에는 뼈대의 위치나 가중치가 멋대로 설정되어 애니메이션을 설정하는 것에 많은 시행착오가 있었습니다.
애니메이션도 한땀한땀 설정해가며 자연스러운 행동이 연출될 수 있도록 시간을 투자했던 것 같습니다.
블록 구현
블록은 스테이지 안에서 가장 중요한 역할을 합니다. 기본 게임성을 가지고 있으면서 난이도 조절과 함께 사용자의 접근성과 도전 욕구를 상승시키는 주요한 요소입니다. 80개의 블록이 스테이지를 이루며, 일정 확률로 방어막을 가진 블록들이 난이도를 상승시킵니다. 스테이지를 진행하면서 초반 웨이브에서는 도전한 스테이지의 이전 스테이지 블록이 출현하기도 하며 후반 웨이브에서는 다음 스테이지 블록이 출현하여 플레이어의 적응을 돕습니다.
블록의 체력과 캐릭터가 보유한 무기는 피보나치 수열을 기반으로 설정되며 방어막의 강도에 따라 추가적인 체력을 가질 수 있습니다. 피보나치 수열을 택한 이유는 점진적인 난이도 증가와 관련이 있습니다. 사용자는 5웨이브 전에는 이전 스테이지 블록을 만날 확률이 있기 때문에 적응기를 가지거나 쉽다고 느낄 수 있습니다. 하지만 후반 웨이브로 갈 수록 다음 스테이지 블록이 출현할 확률이 높아지기 때문에 다음 스테이지를 미리 적응하거나 도전 욕구를 불러올 수 있습니다.
블록에 방어막이 추가되는 이유도 사용자의 도전 욕구와 변칙성을 주기 위함입니다. 방어막은 총 9단계로 풀, 얼음, 돌 순으로 강도가 강력해집니다. 방어막은 블록의 기본 체력을 높여주기 때문에 한 방에 깨지던 블록도 공격을 여러번 해야 파괴할 수 있습니다. 방어를 하지 않으면 가속이 붙은 블록이 캐릭터를 깔아뭉개기 때문에 공격 뿐만 아니라 방어의 중요성도 높아집니다.
캐릭터와 블록의 낙하
2D 스프라이트에 대해 물리 효과를 적용하는 것은 매우 쉬운 일입니다. 단순히 Rigid Body 2D 컴포넌트를 추가하기만 하면 기본적인 동작은 모두 해결됩니다. 하지만 제 게임에서는 모든 물리 법칙을 사용하지 않습니다. 게임의 재미와 성능 개선을 위해서라도 불필요한 계산 등은 제거하는 것이 옳은 선택이었습니다. 단순히 위 아래로만 움직이는 캐릭터와 블록에 마찰력이나 탄성 등은 필요가 없기 때문에 프로젝트를 진행할 때에는 RigidBody를 제거하고 물리 스크립트를 따로 작성하여 적용했습니다. 스크립트의 주요 내용은 매우 간단합니다. 내장된 물리효과를 사용했다면 Fixed Update를 사용했겠지만 이 프로젝트에서는 Update구문에서 중력에 대한 내용을 설정합니다.
파티클 구현
파티클은 텍스쳐만 가져오거나 직접 만들면서 다시금 협업의 중요성을 느꼈습니다. 파티클에 사용될 이미지 한 장 만드는 것 조차 많은 시행착오가 있었습니다. 에셋 스토어에서는 원하는 느낌의 파티클을 무료로 구할 수 없었고 불필요한 리소스가 많이 포함되어 있기 때문에 선별하거나 직접 만드는 작업에 시간을 많이 사용했습니다. 예를 들어 블록이 내려오는 것을 막았을 때 핑~! 팅~! 하는 느낌의 파티클을 사용하고 싶다면 내가 생각하는 모양새의 파티클은 없거나 패키지로 판매하고 있기 때문에 가격이 비쌉니다. 결국 직접 만들어서 색감을 조절하고 원하는 느낌을 나타내기 위해서는 수 많은 시도가 필요하다는 것을 알았습니다.
파티클을 직접 만들면서 응용력이 조금 더 좋아졌다는 성과가 있었으니 직접 작업한 것에 대해서는 아쉬움이 있지만 후회 하지 않습니다.
사운드 시스템
사운드는 게임에서 빠질 수 없는 중요한 요소 중 하나입니다. 이번 프로젝트에서는 32채널의 SFX와 단일 채널의 BGM을 구현했습니다. BGM의 경우는 사운드가 전환될 때 트랜지션 효과를 넣어서 로비 씬과 게임 씬이 전환 될 때 이질감이 들지 않도록 하는 것을 목표로 했습니다. SFX는 게임에서 사용되는 클립과 UI용 클립을 열거형으로 구분하여 스크립트를 작성할 때 혼동되지 않도록 했습니다. 예전 작업 방식은 사운드 컴포넌트를 필요한 위치에 넣어줬었는데 싱글톤 패턴과 함께 사운드를 관리하니 재사용성이 매우 좋아졌습니다.
이것으로 게임에 대한 내용을 마치고 다음 포스트로 돌아오겠습니다.
'Unity > Records' 카테고리의 다른 글
1인 개발 가디언 슬래시 출시 후기 5 (1) | 2025.01.01 |
---|---|
1인 개발 가디언 슬래시 출시 후기4 (3) | 2025.01.01 |
1인 개발 가디언 슬래시 출시 후기3 (0) | 2025.01.01 |
1인 개발 가디언 슬래시 출시 후기 (3) | 2025.01.01 |