MathQuest 1.0.0 출시 회고

liko apps·2023년 5월 1일
0

리코앱스 이야기

목록 보기
4/8

앱 간단 소개

  • https://www.instagram.com/reel/Cq0Li-EO3zb
  • 게임 방법은 위 링크 영상을 보면 한번에 이해할 수 있을 것 같다.
  • 룰: 주어진 목표 숫자를 주어진 모든 숫자와 연산자를 이용해 만들어낸다.

앱 아이디어

  • 어릴 때 재밌게 하던 주사위 7개로 이뤄진 퍼즐게임(?)이 있었는데, 초등학교 때 정말 재밌게 하던 기억이 있음.
  • 나이먹고 찾아봐도 못 찾았는데 어떻게 다시 찾았음. 그게 바로 아래의 사진.

검은색 주사위가 2개가 있고, 나머지 5개의 주사위가 있음.
검은색 주사위가 목표 숫자 -> 사진에서는 23
나머지 5개의 숫자 6, 5, 4, 2, 1 (가려서 잘 안보이지만...)
이때 5개의 숫자와 사칙연산을 이용해 목표 숫자인 23을 만들면 된다.
예) 6x5-4-2-1 = 23

  • 암튼 이 게임은 암산을 좋아하던 나에겐 재미가 있었던 게임. (대다수는 안좋아할거라 생각함.)
  • 근데 문제가 있었다. 주사위를 던져서 하던 게임이다보니 정답이 존재하는지 알지 못한 상태에서 게임을 하는 것이 바로 그 문제.
  • 예를 들어 주사위가 1,1,1,1,1 이 나왔고, 목표 숫자가 66이라고 하면 답이 없을거고,
  • 1,2,3,1,1 이 주어지고 목표 숫자가 23 이라고 했을 때. 아마 정답이 없겠지 싶지만 확실하지는 않았다.
  • 이걸 앱으로 만들면 ...?!
  • 정답이 확실히 있게 문제를 제출하고 사용자가 어려워하면 힌트도 줄 수 있을 것이다.
  • 라는 생각으로 나 혼자서라도 해야지 하고 만들기 시작했다.

시나리오 고민

  • 퍼즐 게임에는 크게 두 종류가 있다.
  • 첫 번째는 스도쿠나 지뢰찾기처럼 한판 한판 그냥 플레이 해서 정답을 맞추는데 재미가 있는 게임
  • 두 번째는 three matching 게임처럼 룰 자체가 어렵지는 않지만 스테이지를 하나하나 깨나가는데 재미를 느끼는 게임
  • 둘 중 뭐가 좋을까 싶었지만 일단은 어릴 때 하던 감성으로 첫 번째를 선택했다.
  • 난이도를 어떻게 할 것인가.
  • 초등학생 저학년부터 나같은 수학 계산 퀴즈를 좋아하는 어른까지 모두가 플레이를 할 수 있게 하고 싶었다.
  • 난이도를 처음부터 선택가능하게 할 것인가?
  • 일단은 기본 레벨조차 처음 접하는 사람에게는 어려울 것 같아서 단순 1+2 = 3 정도의 문제푸터 풀게하고 난이도를 하나씩 언락시켜주기로 했음.

출시 전 테스트

  • 마침 출시를 얼마 앞두고 친구가 놀러와서 간단히 테스트를 시켜보았는데 ... 역시 사용자는 내 생각과는 다르게 움직였다.
  • 덕분에 온보딩에 튜토리얼 과정을 엄청 단순하고 '손가락'이 나타나서 이걸 눌러봐 하는 식으로 알려주는 방식으로 엄청 개편을 했다.
  • 난이도 언락 과정도 우리가 생각하던 느낌이 아니라 '스테이지'형 게임처럼 인지를 해서 난이도가 언락되었는데도 다음으로 넘어가지 않고 계속 쉬움 단계를 하는걸 보고 ... 이걸 어떻게 해결할지 고민을 많이 했다.;
  • 일단 '스테이지'형으로 변경하는건 좀 더 뒤에 작업하기로 하고 출시하기로 함

들어간 기술

- Firebase Hosting & Functions

  • MathQuest에는 플레이 하고 있는 게임을 친구에게 공유해주는 기능이 있다. 현재 게임의 코드를 생성하고, 해당 코드 url을 친구가 클릭 할 경우 앱이 설치 되어있으면 앱이 실행 된 뒤에 해당 코드를 불러와서 게임이 로드되고, 그렇지 않은 경우는 웹 페이지에서 해당 게임을 보여주는 기능이다.

  • 게임 코드를 분석해서 해당 게임을 로드하는데 사용된 기술이 Firebase Functions 이고 (node js를 활용) 이를 다시 웹에 보여주는데 사용된게 Firebase hosting 이다. Firebase Functions는 꽤 널널한 사용량이 주어지는데 Firebase hosting을 하루 360Mb 밖에 무료로 주어지지 않아 걱정이지만, 이 게임의 공유가 360Mb을 넘을 경우에는 수익이 충분할거라는 계산.

  • Firebase Functions는 Firebase 의 인증/구글 어널리틱스/데이터베이스 등등을 모두 활용할 수 있어서 아주 유용했다. 나중에 다른 서비스를 만들때도 유용하게 쓸 수 있을 듯.

- ChatGPT

  • 최근 가장 화제인게 ChatGPT다. 나는 ChatGPT를 아주 아주 똑똑한 자동 완성기라고 생각하는 편인데, 이미 잘 알려진 문제들에 대한 힌트나, 창의력이 필요한 것들 (예를 들면 앱 이름 짓기 같은)은 아주 유용했다.

  • 기획/디자인은 사장님(아내)가 하지만 개발은 혼자서 하다보니 이야기 나눌 사람이 없는데 ChatGPT가 아주 유용했다. 간단한 코드 블럭 던져주고 개선해보라던가, 함수명 제안해주라던가, QA해주라던가, 테스트를 작성해달라던가 이런 명령을 아주아주 잘 수행해줬다.

- SwiftUI Preview Screenshots

  • 기존에는 앱스토어 제출 할 때 '스크린샷'을 fastlane 의 screenshot / frameit 2가지를 활용해서 작업했는데 이게 문제가, 아주아주 느리다는거다.

  • 그래서 이번엔 SwiftUI 100%로 작업하니까 각 화면을 모두 가지고 있기 때문에 스크린샷을 프리뷰 화면을 캡쳐하는 방식으로 처리했다. 덕분에 좀 더 자유로운 연출(?)과 빠른 속도를 둘다 얻을 수 있었다.

  • 다만 이 방식은 화면이 로드 된 뒤에 특정 시간이 지나고 나서 캡쳐해야 할 필요가 있는 것들은 제대로 동작하지 않기 때문에 주의가 필요하다.


배포

  • 엡 심사를 한번 리젝 당했었다. 그 이유는 '할인코드' 제공 금지 약관을 위반했다는 것이었다.

  • 우리앱은 최초 앱 설치하고 n번 게임을 하면 사용자에게 24시간 동안의 할인 상품을 구입할 수 있는 기회를 주고 있는데, 앱스토어 심사의 편의를 위해 n번 게임을 하지 않고도 특정 코드를 입력하면 해당 상품이 노출되도록 작업한게 리젝된 것이었다.

  • 보통 다른 게임의 경우 '로그인' 시스템이 자연스럽게 붙어있기 때문에 특정 아이디에 특정 기능을 바로 테스트 할 수 있는 상태로 만들어서 해당 아이디를 제공하는식으로 처리하는걸로 알고 있는데, 우리 게임은 '로그인' 시스템이 없어서 편의를 위해 해당 기능을 만든것이었는데 그것 때문에 리젝된 것이었다.

  • 그냥 해당 기능 삭제하고 n번 플레이 하면 해당 상품 테스트 가능하다고 안내하고 나서 심사를 올렸더니 통과했다.


배포 이후

  • '숫자 계산' 퀴즈 게임에 대한 니즈는 굉장이 낮을 것으로 예상했기 때문에 초기 자연 유입이 적은 것은 이해할만 했음.

  • 활동하는 커뮤니티에 '리딤'코드 나눔을 했고 그 뒤 상황을 지켜봤는데 리텐션이 거의 없었다. 아직까지는 사용자들이 즐겁게 할 수 있는 게임은 아닌 것으로 판단됨.

  • '스테이지'형태로 즐길 수 있고, 게임을 매일 몇 판씩 하는 것에 대한 동기부여를 어떻게 해줄 지 고민중이고, 현재 개발 중에 있음.


만족한 점

  • 내가 어릴 때부터 하고 싶었던 게임을 직접 구현 한 것.
  • 다른 사람들이 하지 않아도 '나는' 할거라서 재밌게 하고 있음.

아쉬운 점

  • 유저 테스트 이후에 개선했어야 할 문제를 개선하지 않고 그냥 출시한 것은 잘한 것인지 모르겠음. 어차피 개선은 계속할거라 잡고 있는 것보다는 출시한게 좋은것 같지만 아쉬움.

끝.

profile
제주에서 iOS 앱을 만들고 있습니다. 개발관련 회고 / 정리 블로그

0개의 댓글