[팀 프로젝트 포트폴리오] 순천까지만 (최우수상)

상세 내용(링크)

https://youtu.be/7ZjDMzMMbR8

 

프로젝트 개요

  • 게임 제목 : 순천까지만
  • 개발 기간 : 1학년/9/26 ~ 1학년/9/28
  • 플랫폼 : PC
  • 장르 / 플레이 방식 : 플라이트 아케이드 게임 / 플레이어는 흑두루미로, 계속 앞으로 가면서 위나 아래에서 튀어나오는 적들을 피해 목적지까지 도달하는 게임입니다. 시작하면 스페이스 바를 눌러 위로 상승하고, 상승하지 않을 때는 하강합니다. A, D 키로 좌, 우로 이동할 수 있고, 일정 범위 내에서만 움직일 수 있으며 후진을 할 수 없기 때문에 신중히 움직여야 하는 것이 특징입니다. 플레이어는 적들에게 맞으면 느려지고, 철새를 만나 무리에 포함시킬 수록 빨라지며, 목적지에 도달한 시간에 따라 점수가 달라지기 때문에 흑두루미를 움직여서 철새를 무리에 포함시키고 적들에게 맞지 않으면서 최대한 빨리 목적지까지 도달하여 랭킹에 드는 것이 게임의 목표입니다.
  • 팀 구성 : 프로그래머, 기획 구분없이 기획을 모두 듣는 자리에서 발표하고, 맘에 드는 기획에 따라 손을 들어 팀에 참가하는 방식으로 팀이 구성되었습니다. 전 간단한 게임을 만들어야 완성할 수 있을 것 같았기에 러너 게임의 일종인 이 게임의 개발에 참여하게 되었습니다. 팀은 개발자 4명, 기획자 1명으로, 저 빼고는 전부 성인이셨습니다. 총 17개의 팀이 있었고, 100명을 모집했지만 생각보다 많은 인원이 빠져서 팀에 아트분을 데려오지 못한 것이 아쉬웠습니다.
  • 내 역할 : 인 게임을 제외한 UI를 맡았고, 사운드 매니저, 컷신 등의 자잘한 부분도 맡게 되었습니다.
  • 사용 툴 / 언어  / 기타 도구 : Unity / C#

기획 의도 / 게임 컨셉

  • 게임을 만들게 된 동기 : AI를 사용하여 '순천만'이라는 주제에 맞는 게임을 3일 동안 개발하는 순천 AI 게임잼에 참여했지만 학교의 학생 외의 사람들과 개발하는 것을 처음이였기 때문에 최대한 간단해 보이는 게임 기획을 원하였습니다. AI 사용과 주제에 맞는 게임, 완성도 등을 보는 게임잼이였는데, 러너 게임을 만들 것이라는 기획을 듣고, 간단하며 아직 만들어 본 적 없는 장르이기도 해서 포트폴리오 용도로도 좋을 것 같아 팀에 참가하게 되었습니다. 그런데 기획을 들은 후 2D 게임을 만들 것이라고 생각했던 저의 예상과는 다르게 분위기가 3D 쪽으로 기울었습니다. 3D는 한 번도 만들어 본 적이 없었기도 하고 원래 UI를 만든 경험이 가장 많기 때문에 또 UI를 만들게 되었습니다. 처음엔 UI를 또 개발하는 것이 좀 걸렸지만 게임잼에서 새로운 것을 배우고 그것을 포트폴리오로 삼기에는 시간의 제약이 심한 편이고, 게임잼에서 신경써야 할 것은 경험과 자신의 실력을 발휘하는 것이라고 생각하여 UI 작업을 하게 되었습니다. 
  • 핵심 아이디어 : 제한된 공간 내에서 계속 상하좌우로 움직여 적들을 피하고 아이템을 먹는 3D 탄막 게임의 재미를 중점으로, 철새를 무리에 포함시켰을 때 도감이 채워지게 하거나 랭킹을 만드는 등 부가적인 수집, 경쟁 등의 재미를 부가적으로 추가시켰습니다.
  • 차별점 : 배경이 아닌 맵을 따로 만들었기 때문에 플레이어는 비행하는 동안 계속 주변의 경관을 감상할 수 있고, 플레이어의 동선이 일직선이 아닌 곡선입니다. 그렇기에 동선에 따라 플레이어의 시선이 꺾였을 때 게임잼의 주제인 '순천만'에 맞게 설정하고 배치된 적이나 아이템, 환경 요소, 배경 등이 플레이어의 눈을 사로잡아 배경만 바뀌는 3D 탄막 슈팅 게임에 비해 더욱 풍요로운 플레이 경험을 느낄 수 있습니다.
  • 타깃 유저 : 게임잼이 시작되기도 전에 '순천만'이라는 주제가 나왔기 때문에 이건 게임의 재미만큼이나 순천을 알리고 게임에 순천만을 담는 것이 중요하다고 생각하여 일반적인 유저보다는 순천에 대해 궁금하거나 순천을 좋아하는 사람들을 타깃으로 개발하였습니다.

개발 내용 및 구현

  • 게임 흐름 설명 : 메인 화면에서 게임을 시작하면 컷신이 나오는데, 이름을 입력하는 창이 나온 후 이름을 입력하면 순천만을 대표하는 동물인 흑두루미 어미가 자식을 만나러 가는 여정을 잠깐 컷신으로 보여준 다음 게임이 시작됩니다. 처음 게임을 시작하면 게임의 조작 방식이나 규칙을 짧게 설명해 주는 튜토리얼이 플레이어를 보조해 주며 플레이어는 이동 동선을 따라 계속 앞으로 비행하고, 일정 범위 내에서 계속 움직이며 철새를 만나 무리에 합류시키거나 독수리, 짱뚱어 등을 피하며 목적지까지 이동합니다. 목적지에 도달하면 자신이 포함시킨 철새들을 도감 UI에서 보여주고, 랭킹 UI에서 자신의 점수에 따른 등수를 보여주며 끝납니다.
  • 직접 구현한 기능 목록 :
  • 모노싱글톤과 enum 키워드, 제네릭을 사용하여 BGM, SFX 말고도 다른 종류의 오디오를 바로 추가할 수 있게 만든 사운드 매니저를 만들었습니다.

  • 클리어, 랭킹,  도감
  • 이름 입력, 세팅, 컷신

  • 문제 해결 사례 : 팀원과 협력하여 람다식 캡쳐 문제로 인한 버그를 해결했고, 사운드 매니저를 만들 때 자신 오브젝트와 컴포넌트를 붙이고, 클립을 저장하는 등 많은 작업이 필요했기 때무누에 사운드 매니저에서 딕셔너리를 직렬화한 것 처럼 보이는 방식으로 클립과 enum 값을 같이 설정할 수 있게 했고, 따로 오디오 소스 컴포넌트를 붙이지 않아도 되는 방식을 고안해 깔끔하고 에디터에서 많은 작업을 할 필요 없는 사운드 매니저를 만들었습니다.
  • 협업 방식 : 깃허브를 사용하였고, 팀이 개발자 4명과 기획자 1명으로 이루어져 있었기 때문에 아트 역할을 기획자분이 맡아주셨습니다. AI를 사용하여 3D 모델링을 할 수 있다는 것을 이때 처음 알았고, 폴리곤 수는 많지만 생각보다 퀄리티 높은 모델이 나와 놀랐습니다.

테스트 및 결과

  • 플레이 테스트 방식 : 게임잼이기도 하고 저의 실력 이슈로 시간이 부족하여 게임을 만들며 게임의 틀이 잡히거나 기능이 추가되었을 때 플레이해보는 방식으로만 테스트가 진행되었지만, 게임이 간단하고 밸런스가 중요하지 않은 게임이였기 때문에 큰 문제는 없었습니다.
  • 게임의 완성도 / 구현율 : 게임의 볼륨이 크지 않은 것도 한몫하지만 게임에 버그가 많지 않고 랭킹이나 도감 같은 시스템을 저장시키는 것까지 구현했기 때문에 완성도는 게임잼 기준 75% 정도라고 생각하고, 원래 구현하려고 했던 바람은 구현하지 못했지만, 철새 무리 합류 기능이나 맵은 만들었기 때문에 구현율은 80% 정도라고 생각합니다.
  • 플레이 시간 : 약 7분
  • 개선하고 싶은 점 : 일단 버그가 없지는 않고 맵이 1개이기 때문에 더 추가하면 좋을 것 같다는 생각이 듭니다. 그리고 UI를 이렇게 한 번에 많이 만든 적이 없어서 디자인을 너무 캐주얼하게 했는데, UI 디자인을 게임의 컨셉과 분위기에 맞게 바꾸면 좋을 것 같습니다.

다운로드 및 영상 링크

회고 및 느낀 점

  • 개발하면서 느낀 교훈 : 많은 작업이 아닌 중요한 작업을 오랜 시간을 들여 개발하는 역할만을 해왔기 때문에 맛없는 것을 먼저 먹는 성격이 되어 코드 욕심에 게임잼임에도 불구하고 재사용성과 유지보수성, 확장성, 효율성 등을 너무 신경 써서 코드를 짜게 되었습니다. 그리고 필수 기능이 아님에도 완성도를 위해 구현한 기능들에 시간을 또 사용해 버그 픽스 작업을 제대로 하지 못했습니다. 완벽한 코드는 없을뿐더러 게임잼에선 시간을 많이 고려하여 유지 보수성이나 확장성이 떨어지더라도 일단 구현한 후 버그를 고치고, 그 후에 기능에 살을 붙이는 방식으로 개발해야 한다는 교훈을 알았습니다.
  • 팀 프로젝트로서 배운 점 : 그전까지 팀이 개발자로만 이루어져 있었기 때문에 UI나 플레이어 같은 분야의 디자인 같은 부분은 알아서 하는 방식으로 개발했습니다. 이번에도 습관처럼 혼자 디자인부터 기능까지 전부 개발하고 있었는데, 기획자분이 디자인이나 기능적인 부분을 기획해주셨습니다. 이미 어느정도 개발이 된 후라 그 기획을 제대로 수용하지 못해 시간은 시간대로 쓰고 아쉽고 기획자분께 죄송했습니다. 이번에 제대로 된 기획자분과 팀을 꾸려 작업하다 보니 UI를 만들 때나 어떤 기능을 구현할 때 디자인은 엄청 간단하게 하고 구현에만 집중하면 시간 절약과 퀄리티 상승 등의 이점이 있는 것을 깨닫고 기획자의 중요성도 제대로 알게 되었습니다. 그리고 학교에서만 개발하며 학교 밖의 사람들과 같이 개발했을 때 내가 너무 느리거나 할 수 있는 게 없으면 어쩌지라는 고민을 했는데, 3D 게임을 개발했기 때문에 UI 외의 개발 난이도나 성인분들의 실력을 정확히는 알지 못했지만, 최우수상으로 2등을 하여 상금 20만원과 헤드셋을 얻음으로써 그래도 학교에서 배운 것으로 1인분 간당간당하게 할 수 있다는 것을 알게 되어 내가 똑바로 걷고 있는지에 대한 긍정적인 답을 얻었습니다. 
  • 지금 다시 만들면 바꾸고 싶은 부분 : 일단 기능을 빨리 구현한 후 기획자분의 의견을 듣고 디자인이나 구현을 가공하는 방식으로 UI를 구현하고 싶고, 작동하면 버그를 고치고 그 후에 동적으로 바꾸든 기능을 추가하든 하는 방식으로 개발할 것입니다.
  • 앞으로 만들고 싶은 게임 방향 : 친구들과 함께 게임잼을 참여했지만, 같이 하면 대회에 참가한 의미가 없는 것 같아 서로 다른 팀에 들어가기로 했습니다. 학교라는 우물 밖의 개발은 어떨까 싶어 친구들과 갈라져 다른 팀에 들어갔지만, 처음으로 서로 얼굴을 보며 개발하는 게임잼이기도 했고 학교에서만 개발하던 중에 성인들과 팀을 맺고 기획자와 같이 팀이 되어 개발하니 생각했던 것보다 훨씬 많은 경험치를 얻게 되었습니다. 이를 토대로 팀원들뿐만 아니라 다른 사람들의 의견을 수용하는 게임을 만들어야겠다는 생각이 들었습니다.