게임을 업데이트 하면서 느끼는 것들...
벌써 만든지 2년된 폭격 방어자에 대한 3번째 업데이트를 하면서 느끼는 것들에 대해서 이야기 하려고 합니다.
(물론 1번은 단순 안드로이드 SDK 업데이트 였으니 실제로는 2번째 업데이트입니다.)
나만의 게임을 처음 만든다고 했을 때가 몇 년전이었는데 그 때는 정말로 무언가 처음부터 끝까지 만든다는 설레임이 가득했던거 같습니다. 하지만, 실제로 게임을 해본 사람들의 냉정한 평가 속에 한동안은 여러 게임을 이번에는 단순 프로그래머가 아닌 게임 개발자로서 다양한 관점으로 살펴보았던거 같습니다. 덕분에 게임 관련 글을 써도 프로그래머적인 시각보다는 기획자나 그래픽 디자이너의 시각에서 더욱 살펴보게 된거 같습니다.
1인 개발로 이런 저런 작업을 다하다보면 정말로 다양한 롤의 관점에서 게임을 보게 됩니다.
그러다보면 게임을 만드는 설레임과 만들었다는 자기 만족 보다는 뭔가 내가 만든 게임에 대해서 조금 부끄러워지기도 했습니다.
게임이 성공적이지 않았지만 이번 업데이트를 한 것은 처음 만든 게임에 대한 애착과 아직 새로운 게임을 구상만 해놓았을 뿐 시작하지 않았기 때문입니다. 이런 이유를 업데이트를 하면서 느끼는 것 하나는 소규모로 게임을 만들었고 애착이 있다면 만든 게임을 프로그래밍 적이나 기획적으로 혹은 그래픽 적으로 개선하는 것은 자신의 실력을 늘리는데 좋은 한 방법인거 같습니다. 물론 서버가 필요해서 서버 비용이 나간다면 현실적으로 힘들 수도 있지만 저처럼 서버를 필요로 하지 않게 만들었다면 개발 공부겸 해볼만한 일인거 같습니다.
본격적으로 이야기를 시작하기 전에 초기 버전과 지금 버전의 동영상을 살펴보자면 아래와 같습니다.
[초기 버전]
[이번 버전(2.0)]
우선, 동영상 만으로는 중간에 다양한 아이디어와 밸런스 조절을 한 이전 업데이트의 내용을 알 수 없으니 조금은 아쉽습니다. 뭐 이런거 넘어가기로 하고 이번 버전 이야기를 하려고 합니다.
처음 폭격 방어자를 만들 때는 레트로 슈팅 게임을 많이 참조하여 만들었습니다. 터치 슈팅이지만 기본적인 골격은 슈팅 게임을 기초로 하였습니다. 그래서 나온 것이 다양한 적의 움직이는 패턴과 보스들입니다. 그 다음 업데이트에는 MMORPG의 크리티칼 히트나 레벨에 따른 HP량의 향상들을 적용해 보았습니다.
이번 업데이트에는 액션 게임의 타격감을 조금 넣어 보았습니다. 이런 것이 가능한 이유는 터치를 몇 번해야 터지는 적이 많이 나오기 때문입니다. 어느 날의 아이디어 였는데 실제로 타격 받는 구간을 넣고 보니 터치하며 적을 때리는 맛이 있다는 느낌을 받았습니다. 간단한 구현이지만 해당 상태를 넣고 구현해 보니 다양한 레트로 게임에서 타격감 이렇게 넣었구나라는 생각이 들었습니다. 예전 레트로 게임 개발 비하보면 이런 비슷한 이야기 나왔던 거 보니 그 때 그 작은 프로그램들을 만들 때도 개발자들은 이런 사소한 것들을 엄청 신경 썼던거 같습니다.
이렇게 만들고 나니 이제 뭔가 게임을 구성하는 기본적인 것들을 좀 더 알게 되는거 같다는 느낌입니다.
다음으로 폭탄을 조금 다양한 속도로 떨어지게 해보았고 중력 효과도 넣어 보았습니다. 게임이 조금 어려워지는 느낌은 있는데 폭탄의 떨어짐이 좀 더 자연스러워 보였습니다. 이렇게 사소한 차이가 조금 게임의 개성을 만드는거 같아 괜찮아 보였습니다.
이번 버전 업데이트의 50% 이상이 유니티 쉐이더를 이용한 효과였습니다. 우선 크게 느껴지지는 않겠지만 전체 게임 화면이 TV 브라운관 색상을 적용하였습니다. 처음 시작하는 맘으로는 뮤직비디오나 뭐 게임에 나오는 오래전 TV 브라운관 느낌을 재현하고 싶었지만 R&D의 한계상 브라운관 색상 느낌과 간단한 흰색 스캔라인 정도만 구현했습니다. 참고로 프로그래머 출신인지라 모든 쉐이더는 쉐이더 그래프가 아닌 텍스트 쉐이더 코드로 직접 구현했습니다.
다음으로 보이는 것이 적이 죽을 때 사라지는 효과 입니다. 젤다 야숨을 할 때 캐릭터가 사라지는 구현을 무지 신기해했습니다. 그걸 어떻게 구현했을까 고민하다가 아 저런식으로 비슷하게 구현할 수 있겠다 싶어서 구현한 것입니다. 저렇게 구현하고 나니 적이 폭파되는 모습의 밋밋함이 사라져 좋았습니다. 저거 구현하다가 실제로 유니티 스프라이트 쉐이더 어떻게 구현하는지도 알게되어서 기술적으로는 많은 것을 배울 수 있는 순간이었습니다. 나중에 관련 글을 쓸지 모르겠지만 유니티 스프라이트 쉐이더를 재정의하면 2D 게임에서는 정말로 많은 효과를 스프라이트에 줄 수 있습니다. 혹 모르셨던 유니티 프로그래머 분이시면 참조하시면 좋습니다.
영상에는 안보이지만 게임오버나 스테이지 시작과 끝 등의 텍스트에도 많은 애니메이션 효과를 주었습니다. 이렇게 효과를 주고나니 정적인 텍스트와 움직이는 텍스트는 느낌이 많이 틀리다는 생각이 들었습니다. 전문 그래픽 디자이너가 아니라서 게임에 아주 녹아든다는 느낌이 아니지만 그럭저럭 괜찮았습니다. 왜 수 많은 대전 게임에서 스테이지 시작과 끝 글씨에 대해서 신경을 쓰는지 배우게 되는 순간인 듯 싶었습니다.
이번 업데이트를 하고나니 사소해 보이는 많은 것들을 바꾸는 것이 얼마나 게임을 다르게 보이게 하는지를 배우는 거 같았습니다.
마지막으로 영상을 보시면 아시겠지만 초기버전의 영상보다는 이번 버전의 영상이 좀 더 게임을 하고 싶게 역동적인거 같습니다. 처음 만들 때는 영상을 만들어야 한다는 생각이 강했지 어떤 것을 어떻게 보여줄 지는 깊게 생각해보지 못한거 같습니다. 만들고 나서 왜 사람들이 다운로드 안하는지를 분석도 하고 다른 게임들의 영상을 보면서 아! 이렇게 해야하는구나를 느끼면서 변경한거 입니다.
다른 분야도 그렇겠지만 게임은 정말로 만들고 나서야 느껴지는게 있는거 같습니다. 또 그렇게 개선해가며 느껴지는 것이 있는거 같습니다.
참고로 이번 버전은 iOS용으로만 업데이트 하였습니다. 아이폰8 Plus에서 60프레임으로 튜닝한 것을 기준으로 해서 입니다. 쉐이더 코드를 많이 쓰다보니 상대적으로 기준 기기 사양을 올려야했습니다. 또한 특정 폰 기준 60프레임을 만들때도 프로파일링 해가면서 쉐이더를 튜닝해야 했습니다.
이런 기술적인 면과 다른 몇 가지 고민할 부분이 있어 안드로이드는 언제 업데이트할 지 모르겠습니다.
모바일로 게임 개발하다보면 고민하는 점 중 하나는 기준을 어느 폰으로 몇 프레임을 만들까하는 점입니다. 한가지 생각은 너무 구형이나 저사양 지원하다보면 표현의 한계를 가진다는 점입니다. 그래서 이번 버전은 아이폰8 Plus 이하 성능의 모바일 기기는 크게 신경쓰지 않는다는 생각으로 만들었습니다. 뭐 아이폰8 Plus도 구형이고 해당 구형에 맞추느라고 블러 효과가 좀 약해진 점도 있습니다.
이상 글 읽어주셔서 감사합니다.