게임/마인크래프트 앱 개발일기

마인크래프트 앱 개발기 8편 <Markdown에 관하여>

Lou Park 2016. 8. 22. 00:28

새로운 기능, 패치 노트

요즘 추가하고 있는 기능은 패치노트라고 하는 버전 히스토리를 보는 기능이다.

마인크래프트 게임은 특이하게도 매번 업데이트를 할 때마다 유저들이 패치노트를 주의깊게 살펴보기에 필요성이 있겠다 싶어 넣었다.


저번에 앱에 추가한 서버 확인 기능은 잠시 안보이게 넣어두고

이번 패치노트를 그 자리에 끼워 넣으려고 한다.

서버 확인 기능을 접은 이유는 아래에 따로 적도록 하고, 패치노트 기능에 대해서 적어보겠다.



패치노트 기능은 저번에 블로그에서도 찬양했었던 FireBase를 이용해 구현했다.

마인크래프트 패치는 자주되는 편이기 때문에 그때그때마다 실시간으로 업데이트 해주기 위해서 

Firebase Storage에 마크다운으로 적은 패치노트를 업로드한 뒤 Firebase Realtime Database를 통해 앱에 뿌려주는 방식으로 구혔했다.

그런데 Firebase API가 의외로 한계가 아주 많았다. 당연히 될거라고 생각되는 아주 기본적인 기능도 구현되어있지 않았다.

원래는 Firebase Storage만 사용해서 Storage에 있는 파일들을 리스트로 불러오려고 했다.


그런데 모든 파일을 보여주는 API가 존재하지 않았다...! 그렇게 하려면 파일을 모두 다운받아서 이름을 가져와야 했는데 이건 정말 데이터 낭비다.

와이파이에 의존하는 우리 어린 유저님들을 위해 이 방법은 테스트하지도 않았다 ㅎㅎ.

그래서 추가적으로 Realtime Database를 사용할 수 밖에 없었다. 번거롭지만 Realtime Database에서 파일 이름을 적어주고,

Realtime Database에 적힌 파일 이름을 이쁘게 가공하여 앱에 리스트로 보여주었다.


그런데 또 문제가 있었다. Realtime Database에서 인덱싱 관련 API가 전혀 없었다. Storage와 마찬가지로 모든 데이터를 한번에 보여줄 수가 없었다.

대신 DataSnapshot이라는게 있어서 얘를 루프 돌리면 하나씩 얻을 수 있어서 이 방법을 택했고, JSON 형식으로된 데이터 베이스이기에

Key 값을 숫자로, Value에 파일 이름을 넣는 방식으로 인덱싱 관련 문제를 해결했다. 역시 꼼수왕 ^^


그 결과, 가볍고 빠르게 실시간으로 버전 정보를 조회할 수 있는 멋진 기능이 구현되었다!


마크다운(Markdown)

사실 얼마전에 다른 앱을 개발하면서 안드로이드 M 퍼미션 관련 클래스를 만들었었다.

안드로이드 M 퍼미션 받는 작업을 수월하게 해주는 클래스였다. 내가 다음에 쓸거기도 하고 공유하고 싶기도 해서 Github에 해당 클래스를 업로드했다.

Github에는 클래스를 어떻게 사용하는지에 대한 README.md 를 작성해야했는데, 일반 텍스트 작성기와는 다르게 제목에 #을 붙이질 않나... 뭔가 색달랐다.

검색해보니 마크다운이라는 언어란다. 스치듯 들어봤는데, 뭔지 알게 되서 반가웠다. 마크다운을 이용하니 손쉽게 일관적인 포맷으로 글을 쓸 수 있어 좋았다.


인생을 살아가면서 만나는 모든 점들은 하나로 연결된다고 스티브 잡스가 말하지 않았는가. (과한 비유이지만 ㅎㅎ)

패치노트를 어떻게 보여주면 좋을까,라는 고민을 시작하자마자 나는 망설임 없이 얼마전에 경험한 마크다운을 사용하기로 결정했다.

패치노트 특성상 일관적인 포맷을 보여주는 것이 가장 중요하기 때문이다.

테스트 해보니 쓰기도 빠르고 보기에도 편하다.


마크다운은 정말 편하고, 멋진 것 같다!


서버 상태 확인 기능을 접는 이유

서버 상태 확인 기능은 예전부터 내 앱에 넣고 싶은 기능이었는데, 지식이 못따라와서 감히 하질 못했다.

그러나 이번에 열심히 공부해서 넣고야만, 대단한(?) 기능이다.

하지만 서버 상태 확인 기능이란 말 자체는 유저들에게 너무 어려운 용어였고, Php 통신 속도도 느려서 별로 쓸모있지가 않았다.

그래서 다음에 더 공부를 해서 빠르게 구현이 되면 다시 넣으려고 한다.