본문 바로가기

블로그 / 회고

4일 만에 0.21 버전까지: 1인 개발 속도를 낸 방법

Salmonholic 저장소는 9월 23일 밤 0.10.0으로 시작해 9월 27일 오전 0.21.0이 됐다. 커밋 54개의 날짜별 기록으로 무엇을 만들었고, 어떻게 속도를 냈고, 무엇을 놓쳤는지 돌아본다.

Salmonholic ·· 5분 읽기

9월 23일부터 27일까지 날짜별 전체 커밋 수와 버전 커밋 수를 나타낸 막대그래프

Salmonholic 저장소의 첫 커밋은 2026년 9월 23일 23시 11분이다. 그 시각에 게임 클라이언트 0.10.0, 방 서버, 테스트, 배포 설정이 커밋 10개로 한꺼번에 들어갔다. 마지막 커밋은 9월 27일 11시 29분의 0.21.0이다. 그 사이 커밋은 54개, 그중 버전 번호가 붙은 커밋이 36개다.

정직하게 먼저 적어 둘 것이 있다. 컨셉 작업은 9월 21일부터 했고, 저장소에 올리기 전 이틀 동안 0.5에서 0.9까지의 프로토타입이 있었다. 그러니 “4일”은 저장소 기록 기준이다. 그래도 0.10.0의 게임과 0.21.0의 게임은 거의 다른 게임이라서, 그 나흘을 날짜별로 정리해 두고 싶었다.

날짜별로 본 나흘

날짜 커밋 버전 한 일
9/23 10 0.10.0 저장소 정리, 고양이 대 연어로 테마 교체
9/24 12 0.11.0 → 0.12.4 온라인 PvP, 한국어, CrazyGames 반려와 첫 90초 개편
9/25 8 0.13.0 → 0.14.4 해상도 개편, 세로 화면, 자체 음악, 재제출
9/26 16 0.14.5 → 0.16.3 봇 10단계, 신규 이용자 보호, 무기 추가, 서버 선택 개선
9/27 8 0.16.4 → 0.21.0 캐릭터 16종, 랭크·리더보드·미션, 업적 52개, 품종 털

9월 23일 밤에 한 가장 큰 결정은 이름이었다. Survivor Royale이라는 가제를 Salmonholic으로 바꾸고, 이름에 맞춰 테마를 새로 골랐다. 플레이어는 고양이, 몬스터는 연어 떼, 경험치는 초밥. 그날 22시 55분에 0.10.0을 배포했다.

9월 24일은 가장 길었다. 아침 7시 0.11.0에서 맵을 1.5배로 넓히고 고양이끼리의 대결이 확실히 결판나게 바꿨고, 한국어를 아홉 번째 언어로 넣었다. 오후에 CrazyGames 반려를 받고 같은 날 0.12.0을 냈다. 이 이야기는 첫 90초를 다시 만든 이야기에 따로 적었다.

0.11 시절 경기 화면. 큰 격자 바닥 위에 흰 고양이와 연어가 있다 0.11 시절의 경기 화면. 큰 격자와 작은 영문 HUD가 그대로 보인다

9월 27일 새벽부터 오전까지는 “다시 할 이유”를 만드는 날이었다. 0.17.0에서 코인으로 여는 캐릭터와 15단계 랭크, 주간 리더보드, 일일 미션 3개를 넣었고, 0.17.1에서 7일 출석과 업적 52개를, 0.18.0에서 품종 털 12종과 장신구 20종을, 0.20.0에서 고양이 12종을 더해 캐릭터가 16종이 됐다.

0.20.0에서 추가한 고양이 열 마리가 한 경기에 모인 화면 0.20.0의 한 경기. 같은 게임의 사흘 뒤 모습이다

속도를 낸 방법 1: 나는 결정하고, 작업은 나눠 맡겼다

이 속도는 혼자 손으로 코드를 쳐서 나온 게 아니다. 나는 방향을 정하고 직접 플레이해서 판정하는 역할을 맡았고, 구현은 여러 AI 코딩 에이전트가 동시에 나눠 맡았다. 작업마다 RT1, RC8 같은 짧은 이름을 붙이고, 한 작업이 건드리는 파일 범위를 미리 정해 서로 겹치지 않게 했다. 커밋 메시지 끝의 “Story: RR1, RM2, RK2, RQ7” 같은 줄이 그 흔적이다. 0.21.0 하나에 결과 화면의 다음 목표(RR1), 모바일 첫 30초 수정(RM2), 새 스토어 아트(RK2), 출시 전 QA(RQ7) 네 작업이 합쳐졌다.

사람이 해야 하는 판단은 짧고 구체적이었다. 기록에 남은 것만 봐도 이렇다.

  • 첫 프로토타입을 보고: “너무 빠르고 정신없다” → 이동과 몬스터 속도를 낮춤
  • 0.12.2를 해 보고: 연어는 첫 대에 죽어야 하고 성장이 느리면 지루하다 → 0.12.3
  • 네온 색 털 변형을 보고: 네온 털색은 빼고 자연스러운 품종 털로 → 0.18.0의 품종 털 12종

속도를 낸 방법 2: 매 릴리스 같은 관문을 통과시켰다

빨리 내려면 빨리 확인할 수 있어야 한다. 그래서 모든 버전이 같은 관문을 지나게 했다.

  • 골든 테스트: 같은 시드로 경기를 돌려 결과가 기준과 같은지 본다. 규칙을 의도적으로 바꿀 때만 기준을 다시 만든다.
  • 재접속 검사 27개를 한국 서버와 해외 서버 양쪽에서 돌린다(커밋마다 “reconnect 27/27 x2”).
  • 포털 빌드 검증: CrazyGames, Poki, itch 등 포털용 빌드를 실제 브라우저로 띄워 오류가 0인지 본다.
  • 성능과 용량: GPU 브라우저에서 중앙 120fps를 유지하는지, 첫 다운로드가 얼마나 늘었는지 적는다. 0.21.0의 기록은 “307/307 audit, GPU median 120 fps, initial transfer +0.18%“였다.

관문이 있으니 커밋마다 “Deployed” 줄을 자신 있게 쓸 수 있었다. 한국 서버, 해외 서버, 웹을 한 번에 올리는 날이 대부분이었다.

놓친 것들

빠르게 가면 빠르게 넘어진다. 기록에 남은 실수도 있다.

  • 한글 깨짐(0.12.4): 워밍업 안내에 새로 넣은 문장 속 글자(건너뛰, 먹, 밥 등)가 한글 폰트 부분집합에 없었다. 직접 켜 보고서야 알았다. 이후 번역 검사가 폰트에 없는 글자를 발견하면 실패하도록 바꿨다.
  • 카카오톡 인앱 브라우저(9/24): 아이폰 카카오톡에서 링크를 열면 “WebGL 2가 없다”는 오류가 났다. 원인은 http로 열린 페이지였다. 엔진이 보안 연결을 요구하는데 https로 넘기는 설정이 없었다.
  • 오디오 예외(0.16.2): 브라우저가 오디오 재개를 거부할 때 나는 예외를 처리하지 않았다. CrazyGames에서 보고된 게임 중단의 원인으로 의심돼 막았다.
  • 홍보는 속도가 안 났다: 9월 24일 저녁 스레드에 짧은 영상과 링크를 올렸지만, 다음 날 아침 기록은 조회 11회, 방문 0회였다. 게임을 만드는 속도와 사람들이 알게 되는 속도는 전혀 다른 문제였다.

다음에도 가져갈 것

나흘을 돌아보며 남긴 결론은 세 가지다. 첫째, 판단은 사람이 짧게, 구현은 나눠서. 둘째, 속도는 확인 비용을 낮춘 만큼만 난다. 골든 테스트와 재접속 검사가 없었다면 하루 열 번 배포는 무서워서 못 했을 것이다. 셋째, 버전 번호가 올라가는 속도에 속지 말 것. 0.12.4의 한글 깨짐처럼, 결국 직접 켜 보는 사람이 있어야 잡히는 문제가 있다.

이 속도를 가능하게 한 서버 구조는 한국에서 324ms → 14ms에 적었다. 나흘 동안 만든 게임은 Salmonholic 게임 페이지에서 해 볼 수 있다.

#1인개발#개발속도#AI도구#회고#Salmonholic

함께 읽으면 좋은 글

전체 글 →