빌드는 3일 만에, 디버깅은 14일 동안: 제가 발견하고 수정한 게임 버그 14가지 이야기 (Google Play 비공개 테스트)
요약
본 글은 AI의 도움으로 3일 만에 게임을 개발했지만, Google Play 정책상 최소 12명의 테스터와 14일간의 비공개 테스트를 거쳐야 하는 과정을 다룹니다. 필자는 이 기간 동안 직접 플레이하며 발견한 14가지 버그 수정 경험을 공유하며, 출시 전 디버깅 과정의 중요성을 강조합니다.
핵심 포인트
- AI 활용으로 게임 빌드는 빠르지만, 플랫폼 정책 준수가 필수적이다.
- 개인 개발자의 경우 최소 12명 테스터와 14일간 비공개 테스트가 필요하다.
- 출시 전 충분한 디버깅 과정이 제품의 완성도를 결정한다.
- 테스트 기간을 '죽은 시간'으로 여기지 말고 버그 발견 기회로 활용해야 한다.

part 1에서 저는 코딩 경험이 전혀 없음에도 불구하고, AI에게 게임을 설명하는 것만으로 3일 만에 게임을 만들었습니다. '게시' 버튼을 누를 준비가 되었을 때 Google Play가 저를 막았습니다. 새로운 개인 개발자 계정은 출시하기 전에 **최소 12명의 테스터와 함께 14일 동안 비공개 테스트(closed test)**를 진행해야 합니다.
14일. 게임을 만드는 시간보다 네 배 이상 긴 시간이었습니다. 저는 그저 기다리는 대신, 매일 직접 플레이해 보기로 했습니다. 그리고 이 14일이 없었다면 출시가 재앙이었을 것이라는 사실을 깨달았습니다.
빌드는 3일 만에, 디버깅은 14일 동안. 이것이 제가 발견하고 수정한 버그 14가지의 이야기이며, 개발 과정부터 비공개 테스트를 거쳐 출시 후까지의 여정입니다.
Google Play의 14일 비공개 테스트란 무엇인가요?
만약 여러분이 2023년 11월 13일 이후에 개인 Google Play 개발자 계정을 생성했다면, 앱을 프로덕션(production)으로 출시하기 전에 비공개 테스트를 진행해야 합니다.
- 테스터: 동의한 최소 12명
- 기간: 이 테스터들은 14일 동안 계속 동의 상태를 유지합니다.
- 그 후: Play Console 대시보드에서 프로덕션 접근 권한을 신청합니다.
조직 계정(Organization accounts)은 이러한 요구 사항이 없습니다. 저는 다른 인디 개발자들과 **테스트 교환(test-for-test swaps)**을 통해 약 20명의 테스터를 찾았습니다. 많은 1인 개발자들이 이 14일을 죽은 시간으로 여깁니다. 하지만 저에게는 출시 전에 버그를 잡을 수 있는 마지막 기회였습니다.

Sperm Race의 코드, 수치로 보기
저는 컴퓨터에 남아있는 버전 파일들의 코드를 세어보았습니다 (번역 파일 제외).

- 처음 이틀 동안 AI로부터 **16번의 수정(revisions)**을 받았고, 코드는 두 배로 늘어났습니다.
- 안드로이드 앱으로 변환하는 과정에서 약 2,250줄이 추가되었고, 코드 내의 "원래 버그였던 것"이라는 주석은 8개에서 17개로 증가했습니다.
- 첫 버전부터 최신 버전까지 약 10,900줄이 추가되었습니다. 여기에는 버그 수정뿐만 아니라 생존 모드(Survival mode)나 친구와 함께 플레이하기(Play with friends) 같은 새로운 기능도 포함됩니다.
저는 그 줄들 중 단 하나도 직접 작성하지 않았습니다. 제가 한 일은 플레이하고 본 것을 설명하는 것뿐이었습니다. 코드는 8,000줄을 넘었지만, 여전히 Claude Pro 플랜으로 출시까지 충분했습니다. 자신의 코드 토큰 수를 알고 싶다면 Claude 토큰 카운터에 붙여넣으세요.
"버그 찾기"만으로는 작동하지 않는다
처음에는 그저 "버그를 찾아서 고쳐줘"라고 말했습니다. AI는 자신감 있게 "수정 완료!"라고 답했지만, 버그는 여전히 존재했고, 예전에 작동하던 것이 이제는 망가져 있었습니다. 마치 어디가 아픈지 말하지 않고 의사 사무실에 가서 "뭐든 고쳐줘"라고 하는 것과 같았습니다.
효과적이었던 것은 어떤 모드에서 + 내가 무엇을 했는지 + 어떤 일이 발생했는지를 말하는 것이었습니다. 솔직히 저의 보고서도 처음에는 모호했습니다. 아래 인용된 버그 제목들은 제가 실제로 입력한 내용(한국어 번역)이며, 그중 "트랙션 컨트롤이 전보다 더 어렵게 느껴진다"와 같이 어디에서 어떻게 발생했는지 빠진 경우가 많습니다.
| 막연함 | 구체적인 설명 |
|---|---|
| "버그를 찾아서 고쳐줘" | "레이싱 중, 출발선을 통과한 직후에 랩 카운터가 1/3에서 2/3으로 점프합니다." |
| "트랙션 컨트롤이 전보다 더 어렵게 느껴진다"(제가 말했던 내용) | "레이싱 중, 코너에서 옆으로 멀리 드리프트하면 갑자기 브레이크가 걸립니다." |
다행히도 AI가 무언가를 수정할 때마다 코드에 “이전에 문제가 발생하던 부분”과 같은 메모를 남겨 두었기 때문에 버그 기록이 모두 남아 있었습니다. 아래 화면들은 이전 버전 파일을 실행하거나 단지 하나의 수정 사항만 되돌림으로써 실제 게임에서 재현된 것입니다. 게임을 망가뜨리거나 검토에 실패할 뻔했던 버그는 **주요 버그(major bugs)**이며, 나머지는 **사소한 버그(minor bugs)**입니다.
주요 버그 7가지
1. 레이스가 시작하기도 전에 한 바퀴를 돈다 (빌드 중)
레이싱 모드에서 불이 초록색으로 바뀌고 제가 한 칸 이동하자 라운드 카운터가 올라갔습니다. 게임에게는 출발선 바로 뒤에 주차된 정자가 경주자들이 “한 바퀴를 거의 마칠 것 같은” 모습처럼 보였습니다. 3바퀴 레이스가 실제로는 2바퀴 레이스였던 것입니다. 그리드를 선 앞쪽으로 이동시키자 문제가 해결되었습니다.

2. 1등을 위해 끼어든다 (빌드 중)
레이싱에서 바퀴를 돌려 완주하면 중앙으로 가는 게이트가 열리고, 난자 안에 가장 먼저 도착하는 정자가 승리합니다. 하지만 누군가가 바퀴를 돌리는 즉시 모두에게 게이트가 열렸습니다. 그래서 저는 출발선에 앉아 NPC가 바퀴를 돌릴 때까지 기다린 다음, 게이트로 미끄러져 들어가 이길 수 있었습니다. 반대 방향도 마찬가지였습니다. 제가 바퀴를 돌려 완주하고 난자 쪽으로 향하면, 트랙을 돌아다니던 NPC가 끼어들어 1등을 차지했습니다.
그래서 저는 두 가지 규칙을 요청했습니다. “바퀴를 다 돌리지 않은 정자는 안으로 들어갈 수 없다”와 “실제로 난자에 닿아야만 완주로 인정한다.” 이 두 가지는 제가 플레이하면서 짜증이 나서 생긴 것이었습니다.
3. "게임 도중 뒤로 버튼을 누르면 앱이 종료됩니다" (비공개 테스트)
레이스 도중 실수로 휴대폰의 뒤로 가기 버튼을 눌렀더니 앱이 그냥 꺼져버렸습니다. 이기고 있던 레이스가 사라진 거죠. 만약 이게 출시되었다면, 첫 리뷰는 "뒤로 가기 버튼이 게임을 종료시킵니다, 별점 1개"였을 겁니다. 이제는 게임 도중에 메인 메뉴로 돌아갑니다.
4. 정액 베팅 장소 (비공개 테스트)
테스트 기간 동안 구글 플레이 정책을 읽어보면서 식은땀을 흘렸습니다. 더비 모드에는 "배당률(odds)"이라는 단어가 있었고, "누구를 응원하시겠습니까?"라고 물었습니다. 레이싱하는 정액에 베팅하는 게임이었습니다. 리뷰어에게는 이것이 전형적인 도박 앱처럼 보입니다. 저는 이것을 별점 평가(★★★☆☆)와 "누구를 응원할지?"로 변경했습니다.

5. 무료 아이템 받기 (비공개 테스트)
개발 단계에서 만든 가짜 구매 버튼이 게임에 남아 있었습니다. 그것을 누르는 것은 아무 비용도 청구하지 않았고 즉시 "구매 완료"라고 표시했습니다. 가짜 광고는 5초를 기다린 후 보상을 주었습니다. 플레이어에게는 천국이지만, 구글 입장에서는 기만적인 행동입니다. 저는 이 모든 것을 제거했습니다.
6. 게임 전체가 멈췄습니다 (출시 후)
저는 14일을 거쳐 출시까지 마쳤습니다. 끝났다고 생각했지만, 더 무서운 일이 다음에 벌어졌습니다. 다른 플랫폼에 게임을 제출했다가 거절당했습니다. 타이머는 00.0초에서 멈춰 있었고 레이싱 화면은 검은색이었습니다. 네 가지 모드 모두 그랬습니다.
원인은 게임패드였습니다. 정액 레이스는 게임패드를 지원하기 때문에, 매 프레임마다 "게임패드가 연결되어 있습니까?"를 확인합니다. 그 플랫폼에서는 게임패드 연결 여부를 확인하는 것이 아예 허용되지 않았습니다. 모든 확인 과정이 오류를 발생시켰고, 모든 오류가 게임을 멈추게 했습니다. 아무리 노력해도 제 휴대폰에서는 이런 일이 일어나지 않았습니다. 사소한 편의 기능 하나가 다른 곳에서 전체 게임을 멈추게 만들었습니다.
7. 다른 모든 사람들을 위한 한국어 지원 (출시 후)
Sperm Race는 13개 언어를 지원합니다. 하지만 휴대폰의 기본 언어가 이 13개 언어 중 하나가 아닌 경우, 게임 전체가 한국어로 표시되었습니다. 원인은 지난 8월 20일자 노트에 명확히 적혀 있었습니다: "감지 실패 시, 한국어로 기본 설정." 제가 3일 만에 빌드할 때 설정했던 기본값이 한 달 뒤 버그로 돌아왔습니다. 이제는 알 수 없는 언어에서는 영어로 표시됩니다.

7가지 사소한 버그들
게임 플레이에 치명적이지는 않지만, 바로 알아챌 수 있는 종류였습니다.
- 알 주위에서 끝없이 회전: 마지막 바퀴에서 NPC 정자가 알 쪽으로 들어가는 대신 계속 빙글빙글 돌았습니다. 너무 빨리 돌아 튕겨져 나갔습니다. 이제는 급커브에서 속도를 줄입니다.
- 머리는 여기, 꼬리는 저기: 장애물에 부딪히면 머리 부분은 되돌아왔지만 꼬리 부분은 제자리에 남아 있어 꼬리가 머리 앞에 걸쳐 있었습니다.
- "게임 사운드가 백그라운드에서 계속 재생됩니다": 앱을 최소화하거나 화면이 꺼져 있어도 게임 소리가 계속 들렸습니다. 정자들이 제 주머니 안에서 여전히 경주하고 있는 것이었습니다.
- 조용한 배경 음악: 휴대폰이 처음으로 음악 재생 시도를 차단했을 때, 게임은 "음악이 이미 재생 중"이라고 가정하고 다시는 시도하지 않았습니다.
- "드래그 컨트롤이 이전보다 어렵게 느껴집니다": 커브 구간에서 손가락이 조금이라도 아래로 미끄러지면, 게임은 이를 제동으로 인식하여 모든 커브가 갑작스러운 정지로 이어졌습니다.
- "태풍 기능이 작동하지 않거나 보이지 않습니다": 새로운 장애물은 29단계부터 나타났습니다. 저는 그 단계까지 도달한 적이 없었습니다. 이 단계를 12단계로 올렸습니다.
- AI에게 '0'은 숫자가 아닙니다: "경쟁자 0명"이어야 하는 미로는 경쟁자가 3명이 있었습니다.
코드는 0을 '값이 없음(no value)'으로 읽고 기본값인 3을 채웠습니다. 원인은 단일 심볼 때문이었습니다.

14일간의 비공개 테스트 활용 방법
현재 비공개 테스트 기간을 보내고 계시다면, 제 경험에서 바로 가져가실 수 있는 세 가지 사항이 있습니다.
1. 이 템플릿으로 AI에게 버그 보고하기
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
