어느 날 점심시간에 사무실을 둘러보니 동료 몇 명이 반사신경 테스트 사이트를 반복 플레이하고 있었습니다. 10ms라도 줄이려고 몇십 분씩 재도전하더라고요. 그 모습을 보면서 두 가지 생각이 들었습니다. 하나는 "이 게임이 사람을 붙잡는 힘이 있구나"였고, 다른 하나는 "만들기 어렵지 않겠는데?"였습니다. 첫 번째 미니게임은 그렇게 시작됐습니다.
첫 게임은 생각대로 쉬웠다
반사신경 테스트 자체는 어려운 포인트가 없었습니다. 화면 색이 바뀌면 클릭, 반응 시간을 측정해서 결과 표시 — 로직이 단순해서 Gemini가 기본 틀을 금방 만들어줬고, 저는 디자인을 다듬는 쪽에 집중했습니다. 심리테스트를 여러 개 만들면서 쌓인 요령이 있었던 덕도 있었습니다. 일단 하나 완성하고 나면 다음 게임 아이디어가 떠오르기 마련이라서, 에임 트레이너도 이어서 만들었습니다.
그 뒤로 순간기억 테스트, 1 to 50 순서로 만들었습니다. 게임마다 로직은 달랐지만 접근 방법은 비슷했습니다. 게임 아이디어를 설명하면 Gemini가 기본 구현을 해주고, 저는 직접 플레이해보면서 피드백을 반복했습니다.
그런데 게임이 늘어나면서...
심리테스트는 결과 구조가 비슷해서 하나의 공통 페이지로 처리할 수 있었습니다. 하지만 게임은 달랐습니다. 반사신경 테스트는 3회 평균을 내고, 에임 트레이너는 30초 동안 점수를 쌓는 방식이었습니다. 회차 수, 타이머 유무, 점수 계산 방식이 게임마다 달라서 "이 게임도 같은 페이지로 묶으면 되겠지"라는 생각이 통하지 않았습니다. 결국 새 게임을 만들 때마다 거의 처음부터 페이지를 따로 만들어야 했습니다.
랭킹이 있어야 재미있다
게임 몇 개를 만들고 나서 직접 여러 번 플레이해 보니 뭔가 밋밋했습니다. 혼자 점수를 보는 건 재미의 반쪽이라는 느낌이 들었습니다. 점심시간에 동료들이 점수를 비교하던 모습을 떠올리면서, 전체 사용자 랭킹이 있으면 반복 플레이 욕구가 생길 것 같다는 생각이 들었습니다. 일일/주간/월간으로 구분한 랭킹 시스템을 추가하기로 했습니다.
백엔드 없이 랭킹 만들기
랭킹을 넣기로 결심하고 나서 현실적인 문제가 생겼습니다. 랭킹 시스템은 사용자 데이터를 서버 어딘가에 저장해야 하는데, 지금까지는 백엔드가 전혀 없었습니다. 탄생기에서 이야기했던 것처럼 Java/Spring Boot 서버를 직접 올리는 건 배보다 배꼽이 더 큰 격이었습니다. 새로운 백엔드 수단이 필요했습니다. Gemini에게 물어봤더니, 간단하게 도입하는 용도라면 Firebase를 추천해줬습니다. Firestore로 데이터를 저장하고 Functions로 서버 로직을 처리하는 구조였습니다. 이때 처음으로 Firebase를 도입하게 됐습니다.
Firebase는 처음 써보는 서비스였습니다. 코드 연결은 Gemini가 처리해줬는데, 예상대로 그쪽은 어렵지 않았습니다. 진짜 막힌 건 Firebase 대시보드에서의 설정이었습니다.
지인들이 반복 플레이를 한다
랭킹 시스템을 붙이고 나서 지인들에게 먼저 보여줬습니다. 반응이 재미있었습니다. 점수가 마음에 안 드는지 계속 재도전하더라고요. 특히 반사신경 테스트에서 랭킹 1위가 바뀔 때마다 서로 자극을 받으면서 몇 번씩 다시 했습니다. 점심시간에 동료들이 타인의 반사신경 테스트에 몇십 분씩 쓰던 것과 정확히 같은 패턴이었습니다. 의도대로 됐다고 생각했습니다.
돌아보면 아쉬운 것들
지금 Q-Fit의 게임 목록을 보면 버튼 크기, 폰트 사이즈, 결과 표시 위치가 게임마다 조금씩 다릅니다. 초기에 게임 UI에 대한 문서화를 충분히 해두지 않았기 때문입니다. 심리테스트는 결과 페이지 구조를 일찍 통일해서 공통 컴포넌트로 분리하는 데 성공했는데, 게임은 그렇게 하지 못했습니다. 랭킹 시스템을 추가한 뒤에도 결과 화면에 랭킹을 어떻게 보여줄지, 버튼 스타일은 어떻게 통일할지에 대한 기준을 미리 잡아두지 않았습니다.
결국 나중에 게임 공통 컴포넌트와 훅을 만들고 가이드를 정비하면서 어느 정도 통일하기는 했습니다만, 그 과정에서 시간이 꽤 들었습니다. 처음부터 기준이 있었다면 훨씬 수월했을 텐데라는 생각은 지금도 합니다.
게임을 만들면서 배운 것
미니게임 개발을 통해 반복 플레이를 유도하는 요소가 무엇인지 조금은 알게 됐습니다. 단순히 게임이 재미있는 것만으로는 부족합니다. "내 점수가 어디쯤 있지?"라는 궁금증, 그리고 "한 번만 더 하면 올라갈 것 같은데"라는 감각이 있어야 합니다. 랭킹 시스템은 그 두 가지를 모두 충족시켜 줬습니다. 물론 랭킹을 붙였다고 해서 모든 게임이 다 재미있어지는 건 아닙니다. 기본 게임플레이가 반복할 가치가 있어야 한다는 전제가 먼저입니다.
그리고 게임은 심리테스트보다 "한 번 해보면 알 수 있는" 피드백이 훨씬 빨리 옵니다. 만들고 나서 5분만 플레이해보면 재미있는지 없는지 대충 느낌이 오더라고요. 그 빠른 피드백 사이클 덕분에 여러 게임을 비교적 빠르게 만들 수 있었습니다. 다음 편에서는 게임 수가 늘어나면서 공통 구조를 만들어 가는 과정을 좀 더 이야기해볼까 합니다.