요약
기계식 키보드 스위치를 모으고 길들이는 감성 방치형 게임입니다. 스위치 내부의 스프링과 접점이 움직이는 모습을 X-ray처럼 보여주고, 누를 때마다 타건음이 납니다. 클릭·택타일 계열은 공개 CC0 녹음 음원, 나머지 계열은 직접 만든 합성음입니다.
2026년 6월 5일부터 15일까지 11일 동안 Claude Code와 페어로 커밋 57개를 쌓아 웹 프로토타입과 iOS 셸까지 만들었습니다. 앱스토어 출시는 하지 않았고, iOS는 시뮬레이터에서만 확인한 단계입니다.

| 항목 | 내용 |
|---|---|
| 프로토타입 | 단일 HTML 파일(약 3천 줄), Web Audio, 4개 탭 |
| iOS 셸 | Swift 파일 5개, WKWebView + 로컬 푸시 5개 시나리오 |
| 게임 구조 | 챕터 5개, 업적 26개, 시즌 1개 |
| 기획 문서 | 설계 문서 20개, 경제 시뮬레이션 스크립트 |
인컴 방화벽: 보상이 수입을 건드리지 못하게
방치형 게임은 쉽게 "돈을 내면 더 빨리 번다"로 흘러갑니다. 이 게임에서는 처음부터 그 길을 막는 규칙을 정했습니다.
| 단계 | 내용 |
|---|---|
| 규칙 | 보상은 코스메틱, 소리, 인정(배지·카드)만 줄 수 있습니다. 탭당·초당 수입은 어떤 보상으로도 바뀌지 않습니다 |
| 강제 | 금지 토큰을 찾는 정적 검사와, 보상을 받기 전후의 탭당·초당 수입이 정확히 같은지 확인하는 런타임 검사를 함께 둡니다 |
| 결과 | 광고를 보면 코인을 주던 경로를 삭제했습니다. 설계 단계 비평 리뷰를 거쳐 업적 보석 보상과 수입 배수 노드를 설계에서 뺐습니다 |
방치형인데 아무것도 자라지 않으면 재미가 없습니다. 그래서 스위치마다 "길들이기" 숙련도를 두되, 숙련도는 렌더와 소리만 바꾸고 하루 상한을 둬서 수입과는 구조적으로 연결되지 않게 했습니다.
소리는 귀로 고른다
타건음은 이 게임의 정체성입니다. 처음에는 합성음, 흔한 클릭 샘플, 다른 소리 팩에서 뽑은 소리를 차례로 넣었는데 들어 보니 세 번 모두 원하던 소리가 아니었습니다.
- 원본 오디오에서 타건 지점을 브라우저 Web Audio로 직접 잘라내 후보 목록을 만들었습니다
- 후보를 비교 페이지에 나란히 놓고 직접 들어 보며 골랐습니다. 최종 소리는 공개 CC0 녹음 음원입니다
- "듣지 않고 고르지 않는다"는 규칙을 사운드 파이프라인 스킬에 적어 두었습니다
지금은 클릭·택타일 계열만 녹음 음원이고, 나머지 계열은 합성음으로 대신하고 있습니다.
저장과 iOS 셸
방치형 게임에서 진행이 날아가면 끝입니다. 저장 데이터에 스키마 버전을 붙이고, 읽을 때 정규화하고, 앱이 백그라운드로 갈 때 저장하도록 바꿨습니다. 오프라인 보상은 8시간으로 상한을 뒀습니다.
iOS는 웹 프로토타입을 WKWebView로 감싸고 로컬 푸시를 붙였습니다. 시뮬레이터에서 끝까지 돌려 보니, 웹 검사에서는 통과했던 첫 사용자 흐름 종료 처리의 회귀가 하나 나왔습니다. 실제 실행 환경에서 한 번 더 돌려 보는 이유를 확인한 순간이었습니다.
지금 상태
- 웹 프로토타입과 iOS 셸까지 완성, 실기기 테스트와 스토어 출시는 하지 않았습니다
- 결제, 광고 SDK, 분석 도구는 붙이지 않았습니다. 수익 모델은 문서로만 정해 두었습니다
- 실시간 현황(Live Activities)은 스펙 문서 단계입니다
배운 점
"나중에 밸런스로 조정하자"는 규칙은 지켜지지 않습니다. 인컴 방화벽을 코드 검사로 강제해 두니, 새 보상을 추가할 때마다 고민하지 않아도 원칙이 저절로 지켜졌습니다. 감각적인 결정은 반대로 자동화하면 안 됐습니다. 소리처럼 사람이 직접 들어야 하는 건 비교 페이지를 만들어 사람에게 고르게 하는 것이 가장 빨랐습니다.
