OhMyPlane

자작 앱 개발 여섯 번째 이야기로 드디어 마지막 이야기다. 이번에는 Game Center 기능을 추가할 때의 이야기다.

OhMyPlane

게임 센터 관련 기획

게임 센터 관련 기능 구현과 관련된 코드 구현 작업은 그렇게 어렵지는 않았다. 다만, 구현 시작 전에 게임의 목표를 기획하는 부분이 어려웠다.

게임의 목표

게임 센터에서 목표를 달성하면 얻는 점수의 총점이 1,000점으로 제한되어 있다. 굳이 1,000점을 다 맞출 필요는 없었으나, 하다 보니 1,000점에 맞춰서 목표를 설계했다.

Game Center Achievements

다양하게 목표를 설계했군 하면서 뿌듯해 하다, itunesConnect에 목표를 입력하자마자 좌절했다. 목표에 대한 정보를 입력하는 부분에서 이미지가 반드시 필요하다고 한다.

Image Request

대략 30여 개의 512 x 512의 이미지……. 아~~~~

게임 목표 이미지 작업

이미지 관련 도구 사용이 익숙하지 않으니, 이미지 조작에 대한 부담이 크다.

어떻게 해야 하나 고민하다가 KeyNote를 띄웠다. 비행기 그림, 메달 그림, 숫자 등을 이용해 아이콘을 하나 만들었다. 그리고 PixelMator를 띄운 후, KeyNote에서 Command + C를 한 것을 PixelMator에서 Command + V를 하니 잘 된다!!! 신대륙을 발견한 기분이 이럴까 싶다. 흐흐흐흐.

KeyNote

PixelMator에 512 x 512 크기로 새로운 이미지를 만든 후, 게임에 사용된 배경 화면을 잘라 배경으로 만들었다. 그리고 KeyNote에서 만든 아이콘을 복사하니 그럴싸한 이미지가 만들어졌다. 한 땀씩 작업해서 게임 목표에 맞는 이미지를 다 만들었다.

순위 보드 추가

순위 보드는 비행기 종류별로 나누었다. 비행기 종류에 따라 게임 레벨이 달라지기 때문에 비행기가 다를 경우, 점수를 비교하는 게 의미가 없어 보였다.

그 외 뒤늦게 생각난 것

Sprite Kit의 paused 버그

Sprite Kit의 버그 중에 하나로 보인다. Sprite Kit을 이용해 게임에 사용되는 객체들은 Tree 형태의 자료 구조로 표현이 된다. Tree의 Root 같은 상단 노드의 속성이 하위에 자연스럽게 적용되는 모델이라, 게임 멈춤 구현 시 상단 노드의 paused 속성 값하나 변경으로 구현했었다.

처음에는 몰랐는데, 나중에 보니 여기에 버그가 있다. 멈춘 상태에서 홈 버튼을 눌러 나갔다 게임으로 돌아오면 몇몇 하위 노드에 멈춤이 풀린다. 움직임이 풀리는 하위 노드에 대해서 명시적으로 paused 속성을 설정해주는 것으로 우회했다.

모든 작업 완료 후

대략 1달 조금 넘는 시간을 투자해 하나의 게임을 완성했다. 게임성과 완성도가 떨어지고 우주의 먼지 같은 게임이지만, 내 이름이 박힌 게임이 세상에 나왔다는데 큰 의미를 둔다.

Thank you

게임을 내려받아 즐겨주신 분들과 1편부터 6편까지 부족한 글을 읽어주신 분들께 감사하다는 말씀을 드립니다.

Comments