OhMyPlane

두 번째 자작 앱이 앱스토어에 올라갔다. 개발 시작부터 앱스토어에 올리기까지 대략 4주 정도 걸렸다.

OhMyPlane

그동안 작업했던 것 중 대략 기억에 남는 것들을 역시 끄적여 본다.

Sprite Kit, Gameplay Kit 학습

이상한 모임의 Slack에서 RayWenderlich를 알게 된 후, Tutorials와 책들을 하나씩 사서 즐겁게 보고 있었다.

그중 2D 게임 만들기와 관련된 2D iOS & tvOS Games by Tutorials 책을 사들여 하나씩 따라 해가며 보았다. 800여 페이지라 다 보는 데 몇 달 걸렸지만, 처음부터 게임을 하나씩 완성해가는 재미가 쏠쏠했다.

2D iOS & tvOS Games by Tutorial

총 5개의 게임을 완성했다.

학습을 통해 Sprite Kit과 Gameplay Kit에 대한 개념은 어느 정도 잡았으니, 작은 거라도 하나 만들어보자는 생각을 실천에 옮겼다.

기획

하나의 완전한 소프트웨어 처음으로 기획해본다. 다음 몇 가지 정도를 생각했다.

  • 아이들이 쉽게 할 수 있는 것
  • 단순한 형태의 게임
  • tvOS도 지원할 것이기에 입력도 간단하게
  • 그림 그릴 능력이 없으니 사용권 문제없는 이미 있는 것 활용

Flappy Bird 형태의 게임

인터넷을 통해 이리저리 검색하면서 알아보다 Flappy Bird 스타일의 게임을 만들기로 했다.

게임에 필요한 그림도 많이 필요 없고, 탭 하나로 게임을 할 수 있다. 복잡한 알고리즘도 필요 없기에 구현하는 비용도 그렇게 많이 들지 않으리라고 판단했다.

게임 이미지

게임의 형태를 결정했으니, 그에 맞는 사용 가능한 이미지를 찾아보았다. 기존에 Flappy Bird의 이미지 말고 다른 이미지를 사용하고 싶었다.

2D 게임용 그림들을 찾다가 kenney.nl를 알게 되었다. 고품질의 이미지와 소리를 Creative Commons Zero, CC0 사용권으로 공개했다. 홈페이지에서 무료로 사용할 수도 있지만, 돈을 주고 살 수도 있다. 처음에는 홈페이지에서 무료로 내려받아 사용하다, 너무 맘에 들어 Kenney Komplete를 $35에 샀다.

다양한 그림 중에서 게임 형태에 맞는 Tappy Plane을 선택했다. 필요한 이미지가 맞춤으로 다 갖춰져 있어, 정말 마음에 들었다.

Tappy Plane Preview

게임 디자인

구현 전에 제대로 디자인을 하고 시작하지는 않았다. 중간에 생각하고 결정하고 구현하였다. 잠시 시도했다 버려진 것들도 많았다. 그동안 결정하고 반영했던 것들을 더듬어 본다.

스토리

별거 아닌 스토리를 생각했다.

게임의 주인공은 비행기를 4대를 가지고 있고, 그중 한대를 골라 비행에 나선다. 산악 지형에서 비행 중에 엔진에 고장이 난다. 연기가 나면서 동굴 지형으로 비행기가 추락하는데, 이때 공구로 엔진 부분을 때리면 잠시 상승한다. 이를 이용해서 추락하지 않고, 끝까지 버텨서 살아남는 이야기다.

처음에는 집에 무사히 도착하는 것을 생각했는데, 구현 중간에 쳐냈다. 흐흐흐흐….

게임 레벨

4가지 색상의 비행기 이미지가 있는데, 이 비행기 색상에 따라 각각 속도를 다르게 했다. 장애물의 간격은 그대로 고정하면, 속도에 따라서 게임 난이도가 달라진 것으로 생각했다. 테스트해보니 어느 정도 예측이 맞았다.

비행기는 게임이 시작되면서 무작위로 골라진다. 선택하는 것을 처음에 넣었다가 역시 쳐냈다. 흐흐흐흐..

장애물은 위, 아래 두 가지 종류가 있고, 무작위로 선택된다. 다만 한 종류가 너무 많이 나오지 않게 조건을 추가했다. 장애물의 높이는 고정했다. 역시 다양한 높이로 생각했던 것을 쳐냈다.

배경 및 장애물의 그림이 4, 5가지 종류가 있는데, 게임 시작 시 무작위로 선택하게 했다. 고르는 것을 넣으려다 역시 쳐냈다.

첫 버전의 디자인은 버림의 연속이다. 크크크…

비행기가 이동하는 형태

Flappy Bird Swift 버전의 경우 배경과 장애물이 움직이고, 새는 제자리에서 위, 아래로 움직이는 구조로 되어 있다.

이 방식이 아닌 배경과 장애물은 그 자리에 있고, 비행기가 움직이는 형태로 설계했다. 비행기 하나만 움직이기가 더 쉽다고 판단했다. 비행기 움직임에 따라 카메라만 이동하면 된다.

Comments