모래게임 Sandrop TIL 32
게임은 어디서 멈추는지가 품질이다
메트로놈 때는 이런 질문이 없었다
지금까지 낸 앱은 메트로놈이었다. 켜서 쓰고 끄는 도구라 “유저가 어디까지 갔나”라는 질문 자체가 없었고, 잘 도는지만 보면 됐다.
게임은 500개의 판을 순서대로 지나가는 구조다. 어디서 멈추는지가 곧 품질이고, 그걸 알아야 다음에 무엇을 고칠지 정해진다. 그런데 그 질문은 남의 폰에 들어가고 나서야 생긴다. 내 폰에서는 내가 다 깨니까 막히는 자리가 안 보인다.
분석 도구(Firebase Analytics — 앱이 보낸 이벤트를 모아 콘솔에서 보여 주는 구글 서비스)는 붙여 두고도 몇 달을 안 열어 봤다. 무엇을 봐야 하는지 몰랐기 때문이다.
- 제품의 형태가 봐야 할 것을 정한다. 단계를 지나가는 제품은 어디서 멈추는지를, 켜서 쓰는 도구는 잘 도는지를 본다
- 무엇을 봐야 하는지 모르면 도구가 있어도 안 연다
열어 보니 비어 있었다
레벨 번호 자리가 전부 비어 있었다
출시 사흘 뒤, 유저가 몇 탄에서 그만두는지 보려고 콘솔을 열었다. 이벤트 수는 쌓여 있는데 레벨 번호가 들어갈 자리가 전부 비어 있었다.
앱은 레벨 번호를 제대로 실어 보내고 있었다. 문제는 받는 쪽이었다. 보낸 값 중 무엇을 쪼개 볼지 콘솔에 미리 등록해야 하는데(맞춤 측정기준 — 이벤트에 딸린 값을 콘솔에서 나눠 보려면 따로 등록하는 항목), 그게 빠져 있었다. 등록 안 된 값은 집계에서 버려진다.
- 보내는 것과 볼 수 있는 것은 다른 단계다. 계측을 넣었으면 콘솔 화면에서 실제로 보이는지까지 봐야 끝난 것이다
- 데이터가 비면 보내는 쪽부터 의심하기 쉽지만 받는 쪽 설정일 수 있다
등록했는데 지난 사흘은 안 채워졌다
등록하면 지난 데이터도 채워질 줄 알았다. 아니었다. 등록한 뒤에 들어온 것만 쪼개지고 그 전 것은 계속 빈 채로 남는다. 출시 첫 사흘은 “몇 탄”으로 영영 나눌 수 없게 됐다.
출시 직후라 표본이 애초에 적어서 실제 손해는 작았다. 유저가 많았으면 초반 데이터를 통째로 못 쓰게 됐을 것이다. 이벤트를 코드에 넣은 날 같이 등록했어야 했고, 출시 전 체크리스트에 있었어야 하는 항목이다.
- 설정을 켜기 전에 소급이 되는지부터 확인한다. 안 되는 설정은 켜기 전 시간이 영영 비고, 늦을수록 잃는 양이 커진다
- 그런 설정은 “지금 필요한가”가 아니라 “나중에 필요해질 수 있는가”로 판단한다
그래서 원시 데이터를 쌓기로 했다
앞으로도 “이것도 볼 걸” 하는 게 계속 나올 것이다. 그때마다 등록하고 그때부터 쌓으면, 궁금해진 시점에는 늘 데이터가 없다.
그래서 집계된 결과 말고 원시 기록을 한 줄씩 그대로 쌓아 두기로 했다. BigQuery(구글의 대용량 데이터 창고 — 쌓인 기록을 SQL로 꺼내 본다)로 내보내는 연결을 켰다. 그러면 나중에 어떤 질문이 생겨도 그때 꺼내 볼 수 있다. 다만 이것도 소급이 안 돼서 켠 날부터만 쌓인다. 당장 볼 일이 없어도 오늘 켠 이유다.
처음엔 Claude가 이건 유료 요금제에서만 된다고 해서 건너뛰었다. 그런데 내가 콘솔을 직접 들여다보니 무료 요금제에서도 켜졌다. 유료가 아니라고 알려 주고 그때 켰다.
- 집계는 미리 정한 질문에만 답한다. 원시 기록은 질문을 나중에 정해도 되는 대신 꺼내 보려면 손이 더 간다
- 미뤄 둔 일은 미룬 이유가 아직 맞는지 다시 본다. “돈이 든다”는 말은 직접 확인해 볼 만하다. 무료 범위는 그사이 넓어져 있기도 하다
저장 위치는 나중에 못 바꾼다
연결할 때 데이터를 어느 지역에 둘지 고르는 항목이 있다. 고를 수 있는 지역이 많아서 Claude에게 어디로 해야 하는지 물었다. 멀리 있는 지역을 고르면 데이터가 오가는 게 느려질 수 있다는 건 알고 있었다. 나중에 바꾸려면 연결을 끊고 다시 만들어야 하고 그동안 쌓인 것은 날아간다고 해서, 유저가 있는 한국에 맞춰 서울로 잡았다.
- 되돌릴 수 있는 설정과 없는 설정을 가르면 어디에 시간을 쓸지 정해진다. 되돌릴 수 있는 건 빨리 정해 보고, 못 되돌리는 것만 붙잡고 생각한다