OverRapid

요약

개발범위 iOS 백엔드 전반, Lua 일부 코드, php 일부 코드
레포지터리 주소 [비공개] https://git.meu.works/ArcStar/OverRapid
레포지터리 생성 일자 2016. 09. 09..
사용한 언어 Swift, Lua, php
사용한 개발 툴 (IDE) Xcode, Visual Studio Code
활성화 된 기능
  • iCloud - Key-value storage, iCloud Documents
  • Game Center
  • In-App Purchase
  • 사용된 라이브러리
  • Fabric - Total SDK platform service.
  • Crashlytics - Collect error when app crashed.
  • 스토어 링크 Play Store: 링크
    App Store: 링크

    개요

    OverRapid는 Team ArcStar에서 출시한 체감형 모바일 리듬액션 게임입니다. 6개의 라인으로 이루어져 있는 노트형 건반리듬게임입니다. Corona 엔진을 사용하여 만들어졌으며, CoronaCards 기술을 이용하여 엔진과 플랫폼 간의 데이터 교환 부분을 개발하였습니다.

    앱 내용

    기본적으로 CoronaCards의 프로토콜로 전달받는 함수인 receiveEvent(_:) 함수를 통해 필요한 기능과 인자를 전달받고, 필요에 따라 그 결과를 반환하거나, sendEvent 함수를 통해 결과를 Event에 담아 엔진에 전송합니다.

    Game Center

    Android 버전은 Google Play Game Services, iOS 버전은 Game Center 를 이용하여 개발하였습니다.

    1.0.7 버전까지는 iOS도 Google Play Game Services를 이용하였으나, iOS에서의 Play Game Services 가 Deprecated 됨에 따라 게임센터로 이전하였습니다.

    Game Center 기능을 통해 지원하는 기능은 다음과 같습니다.

    • 로그인
    • 리더보드와 성과표 보기
    • 유저 정보 가져오기
    • 점수 불러오기
    • 점수 저장하기
    • 성과 해금하기

    receiveEvent 함수를 통해 넘어오는 인자 중 개발 당시 정했던 키워드로 인자와 실행해야 할 함수를 전달받습니다. 각 넘어오는 인자는 플레이어의 데이터와 범위 등을 기반으로 하여 Game Center 함수를 실행하는데 필요한 인자를 모두 포함하고 있습니다. 따라서 넘어온 인자를 처리하여 값을 반환하기만 하면 되는 비교적 간단한 작업이었습니다.

    현재 Game Center 기능을 통해 해금할 수 있는 성과는 40여개, 그리고 리더보드는 150여개 정도입니다. 이는 게임을 하는 유저들에게 활발한 경쟁심을 유도하고, 노력했던 자신의 점수에 대한 보상을 확인할 수 있는만큼 큰 도움이 된다고 생각합니다.

    iCloud Documents

    Google Play Game Services에서 지원하던 Snapshot 기능을 대체하기 위해 개발하였습니다. iCloud를 통해 지원하는 기능은 저장로드 이며, 사용자가 iCloud와 iCloud Drive 옵션이 켜져있어야 사용이 가능합니다. 이 기능의 장점이라 함은 다른 기기로 기기를 바꿨을 경우에도 게임 데이터를 동기화하여 어느 기기에서든 이어서 플레이할 수 있다는 것이 장점입니다.

    Game Center 지원 킷인 GameKit 에서 GKLocalPlayer.localPlayer() 함수로 플레이어를 불러와 iCloud Container를 통해 데이터를 저장, 로드합니다.

    In-App Purchase

    인앱결제 기능은, 앱에서 아이템을 판매할 수 있게 하는 중요한 기능입니다.

    결제여부의 판별을 위해 영수증 검증을 지원합니다.

    영수증 검증 기능은 앱 내의 로직을 이용해 처리하는 것(Local validation)은 아니고, 서버를 경유하여 인증합니다. 해당 서버는 PHP로 작성되었고, Google Cloud의 App Engine 상에서 구동되고 있습니다.

    영수증을 인코딩하여 서버에 전송하면, 서버가 App Store와 통신 후 해독된 영수증을 반환합니다. 반환된 값을 디코딩 후, 결제된 아이템을 앱 내에 저장 후, 엔진에 그 결과를 전송합니다.

    이전 Google Play Game Services 개발 내용

    OverRapid는 C++을 기반으로 제작된 Play Game Services for iOS를 이용했었습니다. Google이 이 서비스의 지원을 중단 (Deprecated) 시킴에 따라, 위의 Game Center 방식으로 이전하게 되었습니다.

    작동방식의 차이점을 간단하게 정리해보면,

    • 로그인 방식: 현재 앱은 자동으로 실행만 하면 프레임워크가 자동으로 로그인을 처리하지만, 이전에는 게임 엔진이 실행되기 직전, UIAlertController를 통해 로그인을 물어봤습니다. 이는 Window의 중첩을 유발함으로써 애플리케이션의 안정성을 떨어트리는 결과를 낳았습니다.
    • 유저데이터 관리 방식: 문서 상 Legacy 로 분류되는 Snapshot 기능을 이용하여 저장하였습니다. 다만, Snapshot 은 특정된 분류 기준이 없었기 때문에 저장할 데이터에 따로 기준점을 두는 등의 과정이 필요했습니다. 하지만 이전시킴으로써 데이터 관리가 좀 더 수월해졌습니다.