2024년 6월 25일, 드디어 전역을 했습니다.
(육군 병장 만기전역)
물론 이 글을 쓰고 있는 현재는 약 3개월 이상이 지난 시점입니다.
(이렇게 보니 국방부의 시계가 정말 느렸었다는게 느껴집니다..)
처음 게임회사에서 산업기능요원으로 현업의 경험도 쌓으면서 군 복무를 마치겠다는 계획은
막바지에 물거품이 되어버렸지만, 많은 사람들이 함께 재밌게 즐길 수 있는 게임을
만들어 낼 수 있는 게임 개발자가 되겠다는 목표는 여전합니다.
하지만 1년 6개월이라는 공백기가 생각 외로 길다보니 다시 재활을 해야겠다는 필요성을 느꼈습니다.
(물론 군 복무 중에도 게임 그래픽스나 최적화, 기획과 관련된 이론 공부들은 꾸준히 했지만..)
그래서 최근 작은 게임 프로젝트를 하나 진행하여 출시까지 해보기로 결심했습니다.
프로젝트 소개
<무한의 기둥>
영어로는 "Infinity Column" 한국어로는 "무한의 기둥" 이라는 모바일 플랫폼 타겟의 캐주얼 장르 게임입니다.
(수의 의미가 가까운 Infinite보다는 뫼비우스의 띠에 가깝게 떠올랐으면 하는 생각에 Infinity로 결정했습니다)
아직 목표로 하고 있는 출시 플랫폼은 구글과 앱스토어 밖에 없지만,
구글의 자체심의를 이용하여 스팀에도 출시하고 싶다는 생각을 하고 있습니다..
(싸장님 심의비 너무 비싸요)
프로젝트는 8월 말에 시작하여 실제 작업을 진행하기부터 현재까지 거의 1개월 이상이 지난 것 같습니다.
(전역했다고 정신 못 차리고 중간중간 많이 놀았습니다 허허)
최근 작업물부터 보여주면 재미가 없으니 초기 작업물부터 보면서 이야기 해보겠습니다(?)
사실 이 GIF 이미지 하나만으로 더 이상의 설명을 할 필요도 없이,
이 게임이 무슨 게임이고 어떻게 플레이하는 건지 직감이 올 것 같습니다.
세로 화면 영역의 좌/우 터치를 통해 가지가 없는 방향으로 기둥을 타고 올라가며
줄어드는 체력을 회복하고 최고 점수를 기록하는 게임입니다.
복잡할 것도 없이 굉장히 간단하고 쉽죠?
간단한 조작으로 즐기는 게임들을 좋아하거나 평소에 관심이 많은 사람이라면
뭔가 이미 익숙한 느낌이 들 수도 있을 것 같습니다.
그것은 바로!
이번 프로젝트의 아이디어는 학생 시절에 친구들과 한때 재밌게 즐겼던
Timberman (팀버맨) 에서 크게 영감을 받아 나오게 되었습니다.
꽤나 간단하고 재밌는 조작감으로 생각보다 게임을 알고 있는 분들이 꽤 많습니다.
그리고 이와 별개로 한창 산업기능요원이 되어보겠다는 목표가 좌절되고(?) 번아웃이 오던 시기에
친구들과 진행했었던 프로젝트가 있었습니다.
해당 프로젝트는 퍼즐을 풀고 코인을 모아 자판기를 업그레이드하여 하늘로 날리는 게임이었습니다.
(물론 지금은 드랍했습니다)
이렇게 2가지의 기억이 결합되면서 "기둥을 타고 아예 올라가자!" 라는 아이디어가 나왔습니다.
물론 군 복무 중에도 게임 개발을 하고 싶다는 열정으로 차곡차곡 쌓아둔 아이디어는
굉장히 많았습니다만..
군 문제가 해결되었으나, 아직 취업을 할지, 무엇을 할지,
아무런 결정도 하지 못한 예비군 0년차 백수 게임 개발자에게 재활하기엔
이 아이디어가 적합했습니다..
(전역 이후의 새로운 포트폴리오로도 적합하겠다는 생각도 했죠)
결국 프로젝트를 시작했고, 많은 기능 구현이 필요한 게임은 아니었기에
플레이해볼만 한 프로토타입이 나오기까지 꽤나 순조롭게 진행되었습니다.
현재까지의 작업
이제 다시 작업물로 빠르게 돌아와서..
가장 중요한 핵심 기능이자 메인 기능을 구현하고 나서보니
무한정 넋 놓고 기둥을 타고 올라가기에는 너무 지루하다고 느껴졌습니다.
그래서 피버타임이라는 조미료(?)를 첨가해봤습니다.
일단은 누적 100점 단위로 게이지를 채우면 발동되도록 했습니다.
여러번 테스트 해보니 플레이어 입장에서는 100점 단위가
도전 의식을 불러일으키기에 가장 적합하겠다는 생각이 들었기 때문입니다..
(죽어도 피버고 죽겠다 죄송합니다)
그리고 점수 뻥튀기 효과는 덤으로 따라오기 때문에 굳이 넣지 않을 이유가 없었습니다.
(점수 부스팅 효과)
이후 어느 정도의 검증 과정을 거치고 기본 UI 구성 작업을 진행하며 더미 캐릭터도 만들어주었습니다.
(TMI지만 URP 프로젝트로 넘어오면서 이번에 TMP를 적극적으로 사용하기 시작했습니다, 굉장히 맘에 듭니다)
그리고 캐릭터 선택 기능도 만들어주고..
지금 상태에서도 사실 그래픽 디자인을 제외하면 충분하다 싶지만
랭킹 리더보드 기능과 일일 챌린지 기능
이 2가지 기능이 있으면 더 좋겠다는 생각이 들었습니다.
일단 아직 플랫폼별로 출시하기 위한 작업은 좀 남았기 때문에
가장 먼저 PC 버전을 기준으로 랭킹 리더보드 기능을 작업하기로 했습니다.
PC버전은 합리적으로 사용할만한 랭킹 리더보드 API 가 없었기 때문에 직접 구현하기로 결정했습니다.
알리에서 할인할때 산 미니PC (서버용) 에 MySQL로 DB를 구축하고
관련된 요청 처리는 Node.js 를 활용하기로 했습니다.
그렇게 여러 시행착오와 테스트를 거친 끝에..
이렇게 PC 버전에서 사용 가능한 랭킹 리더보드도 완성했습니다.
(생략된 많은 세부 과정들이 있지만 넘어갑시다)
그리고 남은 일일 챌린지 기능도 구현해봤습니다.
그리고 이번 게임은 기둥과 캐릭터도 가장 중요한 메인 요소이지만
배경도 캐릭터 못지 않게 중요한 메인 요소라는 생각이 들었습니다.
(당신은 계속 올라가다보면 게속 똑같은 배경만 보게 됩니다.. 당신은 계속 올라가다보…)
플레이어의 높이 (점수) 에 따라서 배경이 서서히 하늘에서 우주로 바뀌면 좋겠다 싶어서
스카이 박스에 셰이더를 별도로 작업하여 적용했습니다.
그리고 이전에 언급한 ProjectFVM 에서 이미 레거시 (빌트인 셰이더) 버전에서 사용하던
컬러 배경 기능과 셰이더가 있어서 URP로 새롭게 작업하는데 크게 어려움이 없었습니다.
(3년 전 봤었던 유니티 코리아 공식 유튜브의 URP Shader Trainning 이 정말 큰 도움이 되었답니다..
셰이더에 익숙하지 않은 유니티 개발자분들은 꼭 봐보시길)
우주 배경까지 보려면 꽤나 많이 올라가야겠지만..
그건 피버타임이 도와줄겁니다.
이렇게 여러 굵직굵직한 작업들을 끝내고 이제 디자인을 한번 챙겨주러 갑니다.
(저는 분명 클라이언트 프로그래머이지만 디자인(?)도 합니다)
게임 캐릭터와 기둥 디자인에는 MagicaVoxel (매지카 복셀) 을 사용했습니다.
학생 시절에 진행했었던 팀프로젝트에서 사용한 적이 있는데 꽤나 괜찮았던 기억이 있었기 때문이죠..
(VoxelHunt : https://youtu.be/cdzPk5aDtPc)
또한 지금 당장 쉽게 다룰 수 있는 모델링 툴이 없기도 해서입니다.
그리고 이번 프로젝트는 1인 개발이 아니라 복셀 디자인을 담당하고 있는 팀원 한 명 있습니다.
(이번 일지에는 팀원 친구의 작업물이 별로 나오지 않을 예정입니다만..)
일단은 팀원이 본격적인 디자인을 뽑아내줄 때까지 임시로라도 디자인 틀을 잡기로 했습니다.
(그렇게 제가 작업한 디자인으로 틀이 그냥 자리잡게 되었다고 하는데...)
원래 저는 프로그래밍만 하다 보니 디자인 감각이 그렇게 좋지 않아(?) 한계는 있습니다만..
적당히 감각적인 느낌으로, 기세로 몰아서 캐릭터와 표정 디자인까지 뽑아봤습니다.
그리고 이렇게 만든 김에 캐릭터의 모션 작업도 제가 해보기로 했습니다.
캐릭터의 표정은 별도의 스프라이트를 그려서 머리 위치를 따라가도록 했는데,
단순히 모션만 있으니 뭔가 심심해보였습니다.
훨씬 보기 좋아졌습니다.
캐릭터를 디자인하다보니 토끼도 생각나서 디자인해봤는데,
딱딱하게 움직여도 되는 캐릭터들과는 다르게
메시가 부드럽게 붙어서 움직이는 모션이 필요해졌습니다.
토끼의 꽤나 괜찮은 모션이 나오긴 했는데..
계속되는 모션 작업에 심취한 나머지 재미를 찾기 시작했습니다.
결국 참지 못하고 바로 선글라스를 씌워줬습니다.
물론 실제로 씌운 채 게임에 사용하진 않습니다.
이렇게 이벤트 모션도 한번 만들어주고
팀원의 작업물을 일부 받아서 기둥 디자인도 추가해봤습니다.
이제는 스카이박스가 아닌 물리적인 배경에도 심심하지 않게 오브젝트를 넣고 싶었는데,
Foreground 에는 기둥과 플레이어,
Midground 에는 몇 종류의 기둥들,
Background 에는 큰 산 또는 능선
3가지로 나눠서 넣어보기로 했습니다.
3가지 모두 큰 어려움은 없었지만
가장 고민이 많았던게 Background 였습니다.
2D 스프라이트로 그냥 뒤에 무작정 띄워봤는데
어울리냐는 질문에 차마 대답을 못할 것 같은 느낌이였습니다.
복셀로도 한번 넣어봤으나 대충 넣은 것 치고도 너무 아닌 것 같음을 느꼈습니다..
색감도 조정해보고 여러 시도를 해본 끝에..
그냥 빼버리고 자연스럽게 분리감만 있도록 그라데이션 스프라이트 하나만 넣을까!
라고 하기엔 아직도 너무 허전해보였습니다..
그러다가 팀원이 업데이트된 유니티의 터레인 기능이 꽤 쓸 만해졌다고
이야기하여 한번 시도해 보기로 했습니다.
오..
이건 이거다 싶어서 이걸로 픽스했습니다.
이 시점부터는 이제 중요한 요소들이 어느 정도 정리가 된 것 같았기에
이제부터는 디테일들을 조금씩 더해보기로 했습니다.
이외에도 기둥의 가지가 날라가는 이펙트, 로컬라이징 기능 등
사소한 기능이나 디테일들 위주로 한 달 중의 반 이상을 소요했던 것 같습니다.
여기까지 다시 돌아온 이야기부터 프로젝트를 시작하게 된 계기와
현재까지의 작업 과정들까지 쭈욱 정리해봤습니다.
여태까지 했었던 작업 내용들을 한꺼번에 쓰려고 하니 꽤나 길어졌는데,
다음편부터는 어느 정도 작업물이 생길때마다 차곡차곡 들고오도록 하겠습니다.
'Unity > 개발 일지' 카테고리의 다른 글
[무한의 기둥] #002 - 부동 소수점 이야기 (0) | 2024.11.23 |
---|
댓글