카테고리 보관물: 자작 앱 소개

고전 우주 슈팅 게임 만들기(Retro Space Shooter game make)

개요

고전 우주 슈팅 게임을 만들면서 필자가 마주쳤던 여러가지 사항을 정리해 보았습니다. 구체적인 코드와 기술적인 부분은 담지 않았습니다. 혼자 게임을 제작하시려는 분들께 참고가 될만한 사항을 나열해 보았습니다.

제 생각이나 의견이 정답은 아닙니다. 더 좋은 도구와 방법이 얼마든지 있을 수 있습니다. 혼자 모든 것을 작업하셔야 하는 개발자 분들이 제 글을 참조하셔서 막연한 부분이 조금이라도 걷히기를 바랍니다.

기획

필자는 처음에 막연하게 우주를 배경으로 하는 멋진 우주선이 나오는 게임을 만들고 싶었습니다. 오래전부터 꼭 해보고 싶었습니다. 화려하고 복잡한 게임이 정말 많다보니 상대적으로 쉽게 만들 수 있을 것이라고 생각했습니다. 작업한지 얼마되지 않아 잘못된 생각임을 깨달았습니다. 완성하고 보니 처음에 기획을 면밀하게 했으면 많은 시간을 절약할 수 있었겠다는 생각이 들었습니다.

Rerto Space Shooter 게임 메인화면
Rerto Space Shooter 게임 메인화면

게임에 포함되는 여러가지 요소를 미리 생각해 보고 모두를 구현할 것인지 선택해서 작업을 할지 결정합니다. 물론 모든 것을 고려할 수는 없습니다. 하지만 기획없이 작업을 하다보면 고려하지 못한 부분이 많이 나오게 됩니다. 미리 여러가지 사항을 정리해 두는 것이 더 유리하다고 생각합니다.

기획 시 고려할 요소

게임에서 등장하는 요소에 대해 거꾸로 완성 후 종합해 본 사항은 다음과 같습니다. 처음 작업을 시작할 때는 생각하지 못했던 부분이 많았습니다.

플레이어

모양, 총알의 개수, 총알을 버튼을 눌러서 발사할 지 자동으로 발사할지의 여부, 크기, 업그레이드 가능여부, 총알의 모양, 움직이는 속도, 폭탄 존재여부, 조종방식(화면전체 터치, 가상 조이스틱)

적 비행기의 종류, 발사할 총알 수, 움직이는 속도, 모양 및 크기

보스

스테이지 별 등장여부, 모양, 크기, 속도, 체력, 공격 패턴, 플레이어의 총알에 맞았을때 효과

장애물

종류(지뢰, 운석), 속도

스테이지

전체 스테이지 숫자, 적과 장애물이 나타나는 구성, 스테이지 구성

난이도

스테이지 별 난이도

효과음

플레이어 총알 발사, 폭발음(적, 장애물, 보스, 플레이어)

음악

메인화면, 플레이 시 배경음악, 게임종료, 게임 클리어, 보스등장

기타

게임패드지원

단지 나열만 해 보았는데 상당히 많은 항목이 있음을 알 수 있습니다. 실제로 작업을 하다보면 더 필요한 사항이 나올 수도 있습니다. 반대로 제외되는 항목이 있을 수 있습니다. 각각의 항목의 속성값을 체계적으로 정리해서 관리해야 나중에 제어하기 수월합니다. 스크립트 작업을 하다보면 각 항목별로 제어에 필요한 변수가 필요합니다. 미리 잘 정의해 두면 생각날 때마다 추가하는 것 보다 관리가 편합니다.

어디까지 구현을 할지 결정해야 합니다. 필자는 고려된 사항을 모두 구현하지는 못했습니다. 작업을 하다보니 욕심이 생기는 것이 사실이었습니다. 더 화려하고 멋있는 효과와 소리를 만들고 싶지만 그 만큼의 노력과 시간이 필요합니다. 현재 능력의 한계로 불가능하다고 생각되는 부분도 있었습니다. 시간이 무한하게 주어진 것이 아니기 때문에 적절한 범위에서 타협을 잘 하는 것도 중요하다는 생각이 들었습니다.

그래픽

필자는 예전 감성으로 도트그래픽으로 애셋(asset)을 만들기로 정했습니다. 도트그래픽에 특화된 프로그램(GraphicsGale(무료), Aseprite)을 찾아보고 필자에게 맞는 것을 선택해서 사용했습니다. 애셋스토어에서 생각하는 것과 부합하는 것이 있으면 구매해서 사용하는 것도 방법입니다. 다행인지 불행인지 필자가 생각하고 있는 형태의 애셋이 없었습니다. 더 큰 이유는 구매한 애셋은 다른 게임과 중복될 수 있지만 내가 그린 우주선은 볼품이 없지만 유일하기 때문에 직접 제작하기로 마음 먹었습니다.

당연히 필자처럼 처음해보는 작업이면 상당한 노력이 필요합니다. 많이 그려보는 방법이 해결책 이었습니다. 계속 마음이 바뀌게 됩니다. 여유있게 생각하시는 것을 추천드립니다. 괜찮은 것 같았는데 다음날 보면 영 이상하게 느껴지는 경우가 있습니다. 충돌판정 영역을 정의하는 것은 맨 마지막에 하는 것을 추천 드립니다. 모양이 계속 바뀌게 될 가능성이 높기 때문입니다.

애니메이션 효과를 어느 정도로 세밀하게 할 것인가 결정해서 작업해야 합니다. 스프라이트를 구성하는 이미지가 많으면 품질은 좋아지지만 작업량이 많이 늘어나고 실제 게임을 제작했을 때 성능문제가 발생할 수 있습니다. 처음에 작업량을 최소화한 형태로 작업해서 확인합니다. 생각한 수준의 애니메이션 품질이 나오면 그것을 기준으로 해서 작업을 진행합니다.

적이나 플레이어의 스프라이트 이미지 개수를 정하면 그 개수를 가능하면 유지하도록 합니다. 계속 모양이 바뀌게 될 확률이 높습니다. 개수를 동일하게 해서 작업하면 스프라이트를 덮어쓰는 것 만으로도 모양을 바꿀 수 있습니다. 이미지 개수가 다르면 별도의 작업을 또 해주어야 해서 불편합니다.

효과음

효과음을 생성해 주는 프로그램들이 있습니다. 필자가 사용한 프로그램은 Bfxr 입니다. 여러 번 생성하고 들어보기를 반복하면서 원하는 소리가 만듭니다. 조금 부족하다고 생각되면 소리 편집 프로그램을 이용해서 수정하면 됩니다. 무료로 사용할 수 있는 효과음도 있지만 작업하는 게임과 맞지 않을 가능성이 큽니다.

Bfxr 실행화면
Bfxr 실행화면

음악

이것도 무료로 사용할 수 있는 것이 있는데 필자가 생각하는 게임 분위기와 맞지 않아 직접 만들었습니다. 개인적으로 그래픽 작업보다 훨씬 더 어려웠습니다. 그래픽 작업처럼 화면에 보이는 것이 최종 결과가 아니라서 더 어려웠습니다. 계속 만들고 들어보고 또 만들고를 수 없이 반복했습니다. 좋은 음악이 쉽게 나오는 것이 아니라는 것을 깨닫게 되었습니다. 음악을 취미로 하시거나 공부를 하신분이라면 좀 더 쉽게 만드실 수 있다고 생각됩니다.

프로그램은 LMMS를 사용 했습니다. 본격적인 상업용 작곡 프로그램에 비해 부족한 부분이 있겠지만 필자같은 완전 초보가 사용하기에는 차고 넘쳤습니다. 음악에 대한 기초지식도 없고 프로그램 사용법도 익숙하지 않아 여러 강좌를 참고했습니다.

LMMS 홈페이지
LMMS 홈페이지

멜로디를 어떻게 만들어야 하는지 정말 막연했습니다. 여기 저기 강좌와 책을 참고해서 반복하다 보니 어찌어찌 찍어서(?) 음악을 만들 수 있었습니다.

테스트

테스트는 작업 중간 중간 진행했습니다. 작업을 마무리 한 후 본격적으로 테스트를 진행했는데 몇 가지 개선해야 할 부분이 있었습니다. 필자는 테스트를 여러 대상으로 충분히 진행하지는 못했습니다. 여건이 되시면 꼭 폭 넓게 테스트를 진행하시기 바랍니다.

플레이어 조종방법

원래는 화면의 모든 곳을 터치해서 플레이어를 조종할 수 있었습니다. 게임을 반복해서 하다보니 사용자 입장에서는 꽤 불편했습니다. 손가락과 손으로 화면을 가리게 되니 의도하지 않게 플레이어가 죽어 게임이 종료되는 경우가 많았습니다. 그래서 화면 왼쪽 하단에 가상 조이스틱을 추가하는 것으로 변경했습니다. 사용자 별로 불편함을 느낄 수 있는 것이 모두 다르기 때문에 더 많은 테스터를 동원하면 더 나은 방법을 찾아낼 수 있을것 같습니다.

난이도

게임이 진행되면 점점 어렵게 되도록 설계 했습니다. 실제로 해 보니 초기에 설정했던 조건이 너무 어려웠습니다. 게임이 너무 어려우면 사용자들이 불만을 가지게 됩니다. 너무 쉬우면 긴장감이 없으니 적절한 수준으로 맞추는 것이 매우 중요하다고 느껴졌습니다. 설정값을 조정하면서 너무 급격한 변화보다는 점진적으로 난이도가 높아지도록 했습니다. 이 부분도 많은 테스터의 의견을 들어보아 잘 조정하는 것이 좋을 것 같습니다.

마치며

하나의 게임을 완성한다는 것이 정말로 어려운 것임을 깨닫게 되었습니다. 아무리 간단한 게임이라도 만드는 사람의 많은 고민이 담겨 있다는 것을 알게 되었습니다. 개인적으로 참 어렵고 긴 작업이었습니다. 프로그래밍은 원래 하던 것이니 괜찮았습니다. 전혀 상관이 없었던 예술적인 부분에 연관이 되어야 하니 많은 노력이 필요했습니다. 다음에 게임을 만들 때 좀 더 잘 할 수 있겠다는 약간(?)의 자신감도 생겼습니다.

다른 사람의 평가가 좋지 않더라도 처음부터 끝까지 내 손으로 만들었다는 것에 큰 성취감을 만끽 했습니다. 오랜만에 가슴 뛰는 여정이었습니다. 저와 같이 혼자 개발하시는 분들 포기하지 마시고 자신의 게임을 꼭 완성하시기를 바랍니다!

고전 우주 슈팅 게임

개요

필자는 갤러그 같은 비행기 슈팅 게임을 좋아합니다(연식 나온다…). 이런 저런 게임을 접하고 즐기다 보니 이런 슈팅 게임은 어떻게 만들었는지 궁금했습니다. 자료를 찾아보니 혼자 제작도 가능할 것 같다는 생각이 들었습니다. 나만의 게임을 만들어 보자는 생각이 들어서 제작해 보기로 마음 먹었습니다. 물론 다른 사람들도 즐길 수 있도록 해야하니 그 부분도 제작하는 중에 계속 고려했습니다.

제작

처음에는 막연하게 무엇부터 해야할지 결정하기가 어려웠습니다. 일단 보이는 부분부터 작업하기로 하고 그래픽, 효과음, 음악 순서로 진행했습니다. 중간 중간 프로그램 부분을 작업하면서 전체적인 게임의 틀을 만들었습니다.

그래픽

당연히 처음에는 상당히 막연했습니다. 일단 비행기와 적들은 기본적으로 있어야 하니 도트 그래픽으로 하나씩 작업했습니다. 그래픽 작업을 하지 않는 필자의 솜씨니 그려 놓고도 마음에 들지 않았습니다. 그래도 계속 반복하면서 그렸더니 나중에는 그나마 봐줄만한 정도는 되었습니다(철처한 개인생각). 그리고 조금씩 그리는 요령이 생겼습니다.

그 다음으로 생각되는 것이 왕(보스) 였습니다. 플레이어와 일반 적들보다는 커야 하니 크기는 키웠는데 상대적으로 그리기는 더 어려웠습니다. 윤곽은 그렸는데 그 안쪽을 보기 좋게 채워넣는 것이 어려웠습니다. 이것 역시 여러번 그리기를 반복해서 그나마 괜찮다고 느껴지는 것을 골라 사용했습니다.

비행기가 날아가고 있다는 효과는 배경이 스크롤 되도록 해서 마무리 했습니다. 배경은 최대한 간단하게 작업했는데 필자의 그래픽 작업 실력으로는 다른 게임처럼 화려하면서도 시선을 빼앗기지 않도록 작업하는 것이 거의 불가능했습니다.

그래픽 관련 애셋(Asset)을 어떻게든 만들어서 기본적인 비행기 슈팅 게임의 틀은 구성했습니다. 이리저리 테스트 하다보니 여러가지 생각이 들었고 운석과 지뢰 장애물이 추가되었습니다. 그런데 너무 밋밋한 느낌이 들었습니다. 그 이유가 효과음과 음악이 없었기 때문이었습니다.

처음화면
처음화면

효과음

일단 효과음은 이리저리 찾아보니 제작할 수 있는 프로그램이 있어 필자가 원하는 느낌의 소리를 만들 수 있었습니다(총알발사, 폭발…). 다른 프로그램을 이용해서 조금씩 바꾸어서 최대한 필자가 원하는 효과음을 제작했습니다.

음악

문제는 음악이었습니다. 음악을 듣기만 했지 만드는 것은 상상조차 한 일이 없었습니다. 일단 무료로 사용할 수 있는 배경음악을 들어보고 받아 놓기는 했습니다. 그런데 어느 것도 필자가 원하는 분위기는 아니었습니다. 조금 더 생각해 보니 여러가지 음악이 필요했습니다. 처음 메뉴화면, 플레이, 보스등장, 게임오버, 게임클리어 이렇게 다섯가지나 필요했습니다. 욕심이었는지 모르겠지만 독립된 화면에는 그에 맞는 음악이 있어야 한다고 생각했습니다. 그 동안 별 생각이 없었는데 게임에서 음악이 참 중요한 요소라는 것을 알게 되었습니다.

음악에 대한 지식이 없으니 이른바 찍어서(?) 만드는 방식으로 멜로디를 만들고 몇번의 시도 끝에 겨우겨우 짧은 배경음악 5개를 만들 수 있었습니다. 들어보면 뭔가 어색한 느낌이 중간중간 드는 것은 사실인데 일단 스스로 만들었다는 것에 더 의미를 두기로 했습니다. 좋은 음악이 것이 쉽게 만들어지는 것이 아니라는 것을 느끼게 되었습니다.

게임 진행 화면
게임 진행 화면

프로그래밍

프로그래밍 자체는 그렇게 어렵지는 않았습니다. 원래 프로그램쪽이 주 분야라서 만들어진 애셋을 제어해서 원하는 동작으로 하도록 하는 것은 크게 문제되지 않았습니다. 프로그래밍 자체보다는 여러가지 조정해야 하는 변수나 기초 자료를 잘 관리하는 것에 더 많은 신경을 써야 겠다고 느꼈습니다. 처음에는 단순했는데 작업을 진행하다보니 각 객체(플레이어, 적, 배경…)를 제어하는 여러가지 설정이 필요하게 되었습니다. 이것을 잘 분류해서 관리하는 것이 중요하다고 느껴졌습니다. 게임의 규모가 더 커졌을 때 초기 계획없이 진행하면 나중에 큰 문제가 될 것이라고 느껴졌습니다.

처음에는 쉽게 생각하고 접근했는데 실제로 해 보니 게임제작에 상당한 노력과 시간이 들어간다는 것을 알 수 있었습니다. 아무리 간단한 게임이라도 제작자의 수많은 고민과 노력이 담겨있다는 것을 잘 이해하게 되었습니다.

게임은 다음 주소에서 확인하실 수 있습니다. 게임이 끝나면 광고가 나타납니다.

https://play.google.com/store/apps/details?id=jaeyoung.kim.RetroSpaceShooter