보석으론 뭘 할 수 있는 거지? 그리고 유품은 일일이 팔기가 너무 귀찮아. 유품의 목적도 궁금해.
내가 Claude Code 에 보낸 메시지다. 보석도 유품도 내 게임에 있는 시스템이다. 그 게임의 테스트는 백 건 넘게 통과하고 있었고, 세이브 파일은 AES 로 암호화돼 있었고, 앱을 꺼 둔 동안 번 돈은 공식 한 번으로 정산됐다. 코드는 단단했다. 다만 그 게임이 뭘 하는 게임인지, 만든 사람인 내가 모르고 있었다.
「호구마트」는 내가 처음 만든 게임이다. 기획은 Claude 와 대화하며 다듬었고, 구현은 Claude Code 가 했다. 그리고 출시하지 않았다. 이 연재는 그 게임을 해부하는 기록이다. AI 가 무엇을 잘했는지, 내가 어디서 손을 놓았는지, 그 사이에서 코드는 어떤 모양이 됐는지.

던전 앞 잡화점
설정은 이렇다. 세상을 구하러 던전에 들어가는 용사들이 매일 가게 앞을 지나간다. 플레이어는 용사가 아니다. 그 앞에서 잡화점을 하는 사장이다. 기획 문서 첫 줄의 로그라인은 지금 봐도 마음에 든다.
용사들이 목숨 걸고 던전에 들어가는 동안, 나는 그 앞에서 물건을 판다. 비싸게. 아주 비싸게.
게임의 심장은 진열대마다 달린 가격 슬라이더다. 비싸게 받을수록 한 개당 이익은 늘지만 사는 손님은 줄어든다. 손님마다 지갑 사정도 다르다. 초보 용사는 짜고, 마법사는 후하고, 마왕군 첩자는 돈을 아끼지 않는다. 그리고 너무 비싸게 팔면 평판이 떨어져 손님 자체가 끊긴다. 튜토리얼은 이 게임을 이렇게 한 줄로 요약했다.

"이게 이 게임의 전부입니다." 나중에 다시 읽으니 이 문장이 꽤 무섭게 들렸다. 그 이야기는 조금 뒤에 한다.
"진행해줘"
만드는 방식은 단순했다. Claude 와 대화하며 컨셉을 잡고, 그 내용을 문서 여섯 개로 정리했다. 컨셉, 게임 디자인, 경제 공식, 데이터 구조, 코드 구조, 그리고 단계별 로드맵. 여기에 Claude Code 가 매번 읽는 규칙 파일 CLAUDE.md 를 더해 빈 저장소와 함께 넘겼다.
CLAUDE.md 에는 "절대 규칙"이 여섯 줄 있었다.
1. Simulation/ 하위 코드는 UnityEngine 을 참조하지 않는다.
2. 밸런스 수치를 코드에 하드코딩하지 않는다.
3. 세이브 스키마를 바꾸면 마이그레이션을 같이 작성한다.
4. 시간은 ITimeService 로만 읽는다.
5. 광고·결제는 인터페이스 뒤에 둔다.
6. float 대신 double 을 쓴다.
이 여섯 줄은 놀라울 만큼 잘 지켜졌다. 게임 로직은 Unity 없이 순수 C# 으로 돌아서 가상 30일 플레이를 1초 안에 테스트할 수 있었고, 시간을 가짜 시계로 바꿔 끼울 수 있어서 "앱을 8시간 꺼 뒀다가 켜면?" 같은 상황도 테스트로 고정됐다. 이 이야기는 4편과 6편에서 자세히 한다. 규칙으로 적을 수 있는 품질은 AI 가 끝까지 지켰다.
문제는 내 쪽이었다. 이번 연재를 준비하며 내가 Claude Code 에 보낸 메시지를 처음부터 끝까지 다시 읽었다. 에셋 링크와 설치 로그를 빼고 나니, 일을 앞으로 미는 말은 거의 다 이거였다.
진행
진행해줘
M2 진행해줘
유일한 취소 지점
로드맵에는 첫 단계가 끝나는 곳에 이런 문장이 있었다.
흰 사각형 상태로 30분 플레이했을 때 "슬라이더를 다시 만지고 싶은 순간"이 없다면, 가격 시스템 설계를 뜯어고치거나 아이디어를 접습니다. 여기가 유일한 취소 지점입니다.
좋은 문장이다. 그림 한 장 없이 숫자와 사각형만으로 재미가 있는지 먼저 보고, 없으면 거기서 접으라는 뜻이다. 첫 단계가 끝나자 Claude Code 도 정확히 그 지점을 짚었다.
지금 단계에서 확인할 건 딱 하나예요: 슬라이더 만지는 게 조금이라도 재미있는가?
판단을 나에게 넘긴 것이다. 그때 내가 보낸 답은 두 줄이었다.
진행은 잘되는 거 같은데 이해는 잘 안 돼
M2 진행해줘
30분을 플레이하지도 않았고, 슬라이더를 다시 만지고 싶었는지 답하지도 않았다. 게임 전체에서 가장 중요한 결정이 아무도 내리지 않은 채 지나갔다. 그다음 단계에서는 직원 네 종류, 도난, 환생, 명성 트리, 용사 원정, 유품, 손님 여섯 종의 특수 규칙이 한꺼번에 들어왔다. 전부 테스트를 통과했다.
정답이 하나인 슬라이더
나중에야 그 질문에 직접 답해 봤다. 펜을 들고 공식을 풀었다.
손님이 물건을 살 확률은 가격 배율 m 과 손님의 가격 저항 r 로 정해진다. 원가 대비 정가는 2.2배다.
구매 확률 p(m, r) = 1.25 − 0.45·m·r
기대 이익 E(m) = p(m, r) × (2.2·m − 1) × 원가
E 는 m 에 대한 2차식이다. 미분해서 0 으로 두면 최적 배율이 바로 나온다.
m* = (2.75 + 0.45·r) / (1.98·r)
원가가 약분돼서 사라진다. 상품이 싸든 비싸든, 티어가 1 이든 40 이든, 손님 저항 r 하나만 알면 정답이 나온다. 초보 용사면 1.22배, 베테랑이면 1.62배, 마법사면 2.54배. 게다가 2편에서 보겠지만 시뮬레이션은 손님을 한 명씩 판정하지 않고 평균 한 명으로 계산한다. 그 평균 손님의 정답은 한 판 내내 거의 움직이지 않는다.
정답이 식 하나로 풀리는 슬라이더는 퍼즐이 아니다. 한 번 맞춰 두면 다시 만질 이유가 없다. "슬라이더를 다시 만지고 싶은 순간"이 없는 건 플레이해 보지 않아도 공식에 이미 적혀 있었다. 나는 그 공식을 한 번도 풀어 보지 않았다.

재미가 없다고 말하면 기능이 늘어난다
한참 뒤 에셋을 입히고 나서야 나는 솔직하게 말했다.
지금 상태로는 무슨 재미가 있는 건지 잘 모르겠어. 순서대로 작업해 줘.
Claude Code 의 진단은 "시스템은 다 돌아가는데 돈 버는 쾌감이 화면에 안 보이는 상태"였다. 그래서 물건이 팔릴 때 +22 G 가 튀어 오르고, 진열대가 통통 튀고, 골드 숫자가 굴러가는 연출이 들어갔다. 튜토리얼과 상품 아이콘도 붙었다. 내가 "순서대로"라고 했으니 로드맵 순서대로 한 것이고, 합리적인 답이었다.
그 뒤로도 비슷한 일이 반복됐다. 이해가 안 된다고 하면 팁 15종과 도움말 사전이 생겼다. 상점을 미리 만들어 볼 수 있지 않냐고 물으면 인앱 상점이 생겼다. 보석의 쓸모를 물으면 보석 사용처가 생겼다. 내 말은 매번 기능이 됐다. 재미가 없다는 말조차 재미를 다시 설계하자는 신호가 아니라 재미를 "보이게" 하는 작업 목록이 됐다.
AI 는 시킨 일을 잘했다. 심지어 멈추자고 먼저 말한 적도 있다. 수익화를 시작할 무렵 Claude Code 는 수익화는 재미를 확인한 뒤에도 늦지 않다며 지인 테스트를 먼저 해 볼지 물었다. 나는 그 질문에 답하지 않았다. 그 이야기는 3편에 쓴다.
이 연재에서 할 이야기
「호구마트」는 코드가 나빠서 망한 게임이 아니다. 오히려 코드는 지금 봐도 배울 게 있다. 망한 이유는 판단해야 할 자리에서 내가 "진행"이라고 말한 데 있다. 그래서 이 연재는 두 가지를 같이 다룬다. 하나는 AI 가 만든 코드 그 자체다. 엔진 없이 도는 시뮬레이션, 8시간을 공식 한 번으로 정산하는 오프라인 보상, 5,600장 아이콘 중 40장을 고르는 배정 코드. 다른 하나는 그 코드 사이사이에 남은 내 말들이다.
다음 편은 처음으로 돌아간다. Claude 와 함께 쓴 기획 문서 속 "던전 앞 잡화점"은 꽤 그럴듯했다. 그런데 그 세계관은 왜 끝내 숫자 속으로 들어가지 못했을까.