AI Agents

Claude로 모바일 보드게임 Quads를 만든 방법 — 2시간 해커톤에서 앱 스토어까지

Alejandro Rioja
Alejandro Rioja
8 분 읽기
TL;DR

Quads는 모바일 보드게임입니다 — 고전 추상 게임 Quarto를 깔끔하게 재해석한 것으로, 콜롬비아에서 친구와 한 2시간 해커톤에서 시작해 앱 스토어에 출시되었습니다. 이 글은 제가 Claude로 만드는 방식을 완전히 공개한 버전입니다: 병렬 에이전트 worktree, 진짜 (LLM이 아닌) 게임 AI, 오프라인 우선 설계, 그리고 제 시간을 잡아먹은 구체적인 함정들.

무료 뉴스레터

매주 수요일. 28,400명+ 구독자. 핵심만.

목차

2026년 7월 업데이트.

요약: Quads는 모바일 보드게임입니다 — 고전 추상 게임 Quarto를 깔끔하게 재해석한 것으로, 콜롬비아에서 친구와 한 2시간 해커톤에서 시작해 앱 스토어에 출시되었습니다. 이 글은 제가 Claude로 만드는 방식을 완전히 공개한 버전입니다: 병렬 에이전트 worktree, 진짜 (LLM이 아닌) 게임 AI, 오프라인 우선 설계, 그리고 제 시간을 잡아먹은 구체적인 함정들.

[운영자의 시각] 저는 컨설팅 브랜드와, 오스틴 광역권에 있는 제 피클볼 시설 Pickleland에 걸쳐 30개 이상의 프로덕션 에이전트를 운영합니다. 제가 만드는 것 대부분은 플레이북을 비공개로 유지하는 진지한 비즈니스 소프트웨어입니다. Quads는 그 반대입니다 — 처음부터 끝까지 보여드릴 수 있는 재미있는 사이드 프로젝트입니다. 제가 Claude와 어떻게 일하는지 아무것도 깎아내지 않고 정확히 보고 싶다면, 이 글이 바로 그것입니다. 게임은 playquads.com에서 찾을 수 있습니다.

콜롬비아에서 2시간 해커톤으로 시작했다

시작은 거의 민망할 만큼 즉흥적이었습니다. 저는 콜롬비아로 여행 중이었고, 친구와 저는 스스로에게 2시간 해커톤을 걸었습니다: 작은 걸 하나 골라 AI로 만들고, 얼마나 멀리 가는지 보자. 우리는 Quarto에 정착했습니다 — 배우기 쉽고 놀랍도록 깊은, 아름답고 작은 추상 전략 게임입니다. 두 시간 뒤 우리에게는 플레이 가능한 프로토타입이 생겼고, 그 아이디어는 노트북에 남겨두기엔 너무 좋았습니다.

시간제한을 건 도전으로 시작한 것이 iOS와 Android에 출시된 진짜 모바일 앱이 되었습니다. 그 궤적 — 농담 같은 프로토타입에서 스토어 등록까지 — 이야말로 제가 이 프로젝트가 글로 쓸 가치가 있다고 생각하는 이유입니다. “재미있는 아이디어”와 “낯선 사람이 다운로드할 수 있는 것” 사이의 거리는 무너져 내렸고, Quads는 그 방법에 대한 깔끔한 사례 연구입니다.

먼저, 이름에 대해 잠깐 짚고 넘어가겠습니다. 이 게임은 Quarto의 재구현인데, Quarto는 Gigamic이 소유한 상표 등록된 게임입니다. 그래서 아주 첫 번째 비코드 결정은 고객이 볼 수 있는 어느 곳에서도 그것을 Quarto라고 부르지 않는 것이었습니다. 이름은 Quarto(메커니즘)에서 몇 개의 임시 이름을 거쳐 Quads — 제가 마음대로 쓸 수 있는 이름 — 로 바뀌었습니다. 고전을 재구현하고 있다면, 이름과 사랑에 빠지기 전에 상표 문제부터 정리하세요.

Quads가 실제로 무엇인가

입문자를 위해: Quads는 16개의 고유한 말이 있는 4×4 보드에서 플레이합니다. 모든 말은 네 개의 이진 속성을 가집니다 — 큰지 작은지, 어두운지 밝은지, 사각인지 원형인지, 꽉 찼는지 비었는지 — 그리고 16개의 말은 가능한 모든 조합을 정확히 한 번씩 덮습니다. 어느 하나의 속성을 공유하는 네 개의 말로 한 줄을 완성하면 이깁니다.

이 게임을 탁월하게 만드는 반전: 당신은 놓을 말을 고르지 않습니다. 상대가 당신에게 건네줍니다. 그러면 당신도 상대에게 말을 건넵니다. 그래서 매 턴은 이중 구속입니다 — 당신은 건네받은 말을 승리를 만들지 않으면서 놓으려 애쓰는 동시에, 상대에게 게임을 넘겨주지 않는 말을 골라 건네야 합니다. 우아하면서도 정말로 어렵습니다.

앱은 네 가지 플레이 방식을 제공하며, 모두 완전히 오프라인입니다: 다섯 단계 난이도의 컴퓨터 대전, 한 기기에서 하는 패스 앤 플레이, 데일리 퍼즐, 그리고 비동기식 “친구에게 도전” 모드. 계정도, 서버도, 로그인도 없습니다. 그 오프라인 우선 결정이 많은 엔지니어링을 이끌었고, 1인 제작이 감당 가능했던 큰 이유이기도 합니다.

게임 로직: 비트 연산에서 떨어져 나오는 규칙 전체

이건 제가 가장 좋아하는 부분입니다. AI가 작성했든 아니든 만족스러운 종류의 것이기 때문입니다.

16개의 말 각각은 그저 0부터 15까지의 정수입니다. 네 개의 비트 각각이 하나의 속성입니다. 그게 전부입니다 — 말 세트 전체가 숫자 0–15입니다. 네 개의 비트가 정확히 16개의 조합을 주기 때문입니다.

그러면 승리 판정은 거의 사소해집니다. 네 개의 말로 이루어진 어떤 줄이든, 두 개의 누산기를 유지합니다: 모든 말에서 1인 비트들과, 모든 말에서 0인 비트들. 네 개 모두를 처리한 후 어느 누산기든 0이 아니라면, 그 말들은 최소한 하나의 속성에서 일치하는 것입니다 — 그게 승리입니다. 규칙 전체가 몇 개의 비트 AND 연산으로 압축됩니다.

로직이 정수에 대한 순수 함수 — 프레임워크도, UI도, 상태도 없는 — 이기 때문에, 직접 단위 테스트가 가능하고, 확장하기도 아주 쉽습니다. Quads는 심지어 아홉 개의 2×2 정사각형도 승리 형태로 인정하는 하우스 룰 변형까지 제공하는데, 이는 같은 비트 트릭 위에 두 줄만 추가하면 됩니다. 당신과 AI 파트너가 핵심 로직을 이렇게 깔끔하게 유지하면, 기능을 추가하는 일은 위험이 아니라 즐거움이 됩니다.

AI 상대는 LLM이 아니다 (그리고 그게 옳은 선택이다)

여기 제가 아끼는 교훈이 있습니다: 모든 “AI”가 거대 언어 모델이어야 하는 것은 아닙니다.

Quads의 상대는 순수한 고전 게임 AI이며, 마땅히 그래야 합니다. 매 턴 두 가지 결정을 내립니다 — 건네받은 말을 어디에 놓을지, 그리고 어떤 말을 되돌려 건넬지 — 그리고 난이도는 얼마나 깊이 생각하는지를 조절합니다:

  • 루키는 사실상 무작위로 플레이하며 당신에게 승리를 넘겨줄 것입니다.
  • 중간 단계는 휴리스틱을 더합니다: 즉시 이길 수 있는 수가 있으면 취하고, 상대가 이길 수 있는 말을 건네지 않도록 피하며, 미래의 위협을 가장 적게 무장시키는 말을 선호합니다.
  • 마스터와 그랜드마스터는 제한된 negamax 탐색 — 진짜 게임 트리 탐색 — 을 실행하지만, 한 수가 절대로 폰의 메인 스레드를 멈추게 할 수 없도록 엄격한 노드 예산을 둡니다. 완벽한 탐색이 불가능한 게임 초반에는 빠른 휴리스틱으로 되돌아가고, 트리가 충분히 작은 후반에는 실제로 탐색합니다.

여기서 훔쳐 갈 만한 두 가지. 첫째, 언어 모델은 여기서 더 나쁠 것입니다 — 50줄짜리 negamax보다 더 느리고, 더 비싸고, 비결정적이며, 이기기 쉽습니다. 도구를 문제에 맞추세요. 둘째, 노드 예산이야말로 진짜 엔지니어링입니다: 모바일 기기에서 “정확하지만 가끔 4초 동안 멈춘다”는 실패한 기능입니다. 한 수가 항상 빠르도록 — 가끔 최적이 아니더라도 — 탐색을 제한하는 것이 장난감과 제품의 차이입니다. 언제 LLM을 꺼내 들어야 하는지 아는 것은 제가 모든 자동화에 적용하는 것과 동일한 판단입니다 — 그것이 AI 빌드가 그럴 가치가 있는지 어떻게 판단하는가의 핵심입니다.

내가 실제로 Claude를 운용하는 방법: worktree 안의 병렬 에이전트

이제 제가 더 큰 제품에서는 비공개로 유지하지만 여기서는 완전히 보여드릴 수 있는 부분입니다.

저는 한 번에 하나의 Claude 세션으로 만들지 않습니다. 저는 여러 개를 병렬로 실행하며, 각각을 자기만의 브랜치 위 자기만의 git worktree에서 돌립니다. 한 에이전트는 국제화를 추가하고, 다른 하나는 데일리 퍼즐 시스템을 만들고, 또 다른 하나는 색맹 모드를 하고, 또 하나는 사운드를 연결합니다 — 각각이 자기만의 작업 사본에 격리되어 서로를 덮어쓸 수 없고, 초록불이 되면 각각 다시 병합됩니다. Quads의 git 히스토리는 Merge branch 'worktree-agent-…' 커밋의 벽이며, 그 워크플로가 밖에서 보이는 모습이 정확히 그렇습니다.

worktree가 중요한 이유는 간단합니다: 같은 작업 디렉터리를 편집하는 병렬 에이전트는 즉시 서로를 짓밟습니다. 각각에게 격리된 체크아웃을 주면 진정으로 네 개의 기능을 동시에 진행하다가, 다른 여느 브랜치처럼 병합할 수 있습니다. 그것은 제 작업 방식에서 지렛대가 가장 큰 단 하나의 변화입니다 — 저는 하나의 대화, 하나의 기능에서 작은 함대로 옮겨갔습니다.

그 에이전트들이 돌아가는 프롬프트 뒤의 규율을 원한다면, 그것은 프로덕션에서 실패하지 않는 AI 에이전트 시스템 프롬프트를 작성하는 법에서 설명한 것과 동일합니다: 지렛대는 영리한 표현이 아니라 명확하고 최신인 사양에 있습니다.

나에게 한 시간을 잡아먹은 함정 (그래서 당신에게는 잡아먹지 않도록)

모든 프로젝트는 멍청하고 값비싼 교훈 하나를 가르쳐 줍니다. Quads에서는 이것이었습니다: 미리보기 도구가 당신이 생각하는 브랜치를 항상 보여주는 것은 아니다.

여러 worktree에서 여러 에이전트를 실행하고 그들의 작업을 미리 볼 때, 미리보기는 현재 세션이 있는 디렉터리와 다른 디렉터리에서 실행될 수 있습니다 — 그래서 앱을 스크린샷 찍고, 변경 사항이 하나도 보이지 않아, 애초에 사라진 적도 없는 “사라진” UI를 디버깅하기 시작합니다. 기능은 멀쩡했습니다. 미리보기가 잘못된 체크아웃을 가리키고 있었을 뿐입니다. 무슨 일이 벌어지는지 알아내기 전까지 저는 실제 시간을 잃었고, 미래의 저 자신(그리고 제가 저장소를 넘겨줄 어떤 에이전트든)이 유령 버그를 디버깅하기 전에 미리보기 대상을 확인하도록 프로젝트 자체의 노트에 이것을 적어두었습니다.

관련된 함정: 그 미리보기를 정의하는 설정 파일은 병렬 세션 전반에 공유되므로, 두 에이전트가 동시에 그것을 편집하면 서로의 항목을 조용히 덮어쓸 수 있습니다. 함대를 운영할 거라면, 공유 설정을 경합 자원으로 취급하세요 — 그것은 딱 한 번 당신을 물 것이고, 교훈을 적어두면 그다음부터는 절대 물지 않습니다.

그 습관 — 힘들게 얻은 모든 함정을 다음 세션이 읽을 지속적인 파일에 담아두는 것 — 은 어떤 규모에서든 AI로 만드는 일의 조용한 근간입니다. 맥락은 세션 사이에 증발합니다. 적어둔 교훈은 그렇지 않습니다.

내가 자랑스러워하는 오프라인 우선 기법들

Quads에는 백엔드가 없기 때문에, 몇 가지 문제는 영리한 서버리스 답이 필요했습니다:

  • 데일리 퍼즐은 로컬의 연중 며칠째인지로부터 결정론적으로 선택되어, 전 세계 모든 플레이어가 서버 조율 없이 동일한 퍼즐을 받습니다. (보너스 교훈: 저는 그 날짜 계산에서 서머타임으로 인한 하나 차이 오류를 출시했다가 곧바로 고쳤습니다. 날짜는 언제나 보이는 것보다 어렵습니다.)
  • **“친구에게 도전”**은 퍼즐을 짧은 텍스트 코드 — QC1-01-03-3 같은 것 — 로 인코딩하며, 오타가 유효하지만 잘못된 도전을 만들어낼 수 없도록 체크섬으로 보호합니다. 친구는 자기 앱 사본에 그것을 입력하고 정확히 같은 국면을 완전히 오프라인으로 플레이합니다. 계정도, 매치메이킹도, 서버도 없습니다.
  • 리치 링크 미리보기는 제가 아주 약간의 서버 코드를 실제로 사용한 유일한 곳입니다. 도전 링크를 공유하면, 하나의 Cloudflare Pages Function이 코드별 Open Graph 태그를 렌더링해 링크가 iMessage나 WhatsApp에서 멋지게 펼쳐지도록 합니다. 소셜 크롤러는 JavaScript를 실행하지 않으므로, 클라이언트에서 렌더링한 미리보기는 모든 링크에 대해 동일하게 보일 것입니다 — 하나의 작은 함수가 진짜 백엔드 없이 그것을 해결합니다.

이것들 중 어느 것도 일단 보고 나면 어렵지 않지만, 각각은 게으른 답이 “서버와 데이터베이스를 띄운다”이고 더 나은 답이 “영리한 오프라인 방식을 한다”인 지점입니다. 백엔드를 완전히 피한 것이 한 사람이 이것을 출시하고 유지보수할 수 있었던 이유입니다.

해커톤에서 스토어 등록까지

마지막 구간 — “2시간 프로젝트”에 대해 아무도 말해주지 않는 부분 — 은 “내 폰에서 작동한다”와 “낯선 사람이 다운로드할 수 있다” 사이의 모든 것입니다. 한 번의 작업으로 여덟 개 언어에 걸친 국제화. 상표 등록된 이름을 절대 쓰지 않는 스토어 문구. 스토어 심사에서 반려당하지 않게 해주는 앱 스토어 빌드 도구, 버전 관리, 그리고 플랫폼별 권한 정리. 이것은 화려하지 않고, 많은 사이드 프로젝트가 조용히 죽는 곳입니다.

Claude와 함께 그것을 하는 것이 체크리스트를 짧게 만들어주지는 않았지만, 각 항목을 충분히 저렴하게 만들어 제가 실제로 끝낼 수 있게 해주었습니다. 그것이 Quads의 진짜 이야기입니다: AI가 보드게임을 작성했다는 것이 아니라 — 많은 사람이 하나쯤 프로토타입을 만들 수 있습니다 — 마지막 한 마일의 비용을 충분히 낮춰서 해커톤 농담이 출시된 제품이 되게 했다는 것입니다.

붙잡고만 있던 작은 아이디어가 있다면, 그게 제 전부의 권유입니다. 2시간짜리 버전을 시작하세요. 결승선이 얼마나 가까이 옮겨왔는지 놀라실 겁니다. 그리고 이 동일한 작업 방식이 규모에서 얼마나 위로 올라가는지 보고 싶다면, 저는 그것을 완전한 멀티 테넌트 SaaS까지 끌고 갔습니다 — Claude로 클럽 관리 플랫폼 Courtlines를 만든 방법.

Quads를 playquads.com에서 플레이하세요.

자주 묻는 질문

Quads가 무엇인가요?

Quads는 iOS와 Android용 모바일 보드게임입니다 — 고전 추상 전략 게임 Quarto를 깔끔하게 재구현한 것입니다. 16개의 고유한 말이 있는 4×4 보드에서 플레이하며, 반전은 당신이 놓아야 할 말을 상대가 고른다는 점입니다. 무료로 플레이할 수 있고 솔로, 패스 앤 플레이, 데일리 퍼즐, 비동기 도전 모드가 있습니다. playquads.com에서 찾으세요.

Claude가 게임 전체를 작성했나요?

Claude가 코드 대부분을 작성했습니다. 제가 소유한 디자인과 결정을 바탕으로 말이죠. 저는 여러 Claude 세션을 병렬로 실행했고, 각각을 자기만의 git worktree에서 돌려 서로 다른 기능을 만든 뒤 합쳤습니다. 게임 로직, AI 상대, 국제화, 사운드, 퍼즐 시스템은 대부분 이런 방식으로 만들어졌고 제가 검토했습니다.

게임 내 AI 상대는 LLM으로 구동되나요?

아니요 — 그리고 의도적으로 그렇습니다. 상대는 고전 게임 AI를 사용합니다: 낮은 난이도에서는 휴리스틱을, 최상위 단계에서는 제한된 negamax 탐색을 쓰며, 한 수가 절대 기기를 멈추게 하지 않도록 엄격한 노드 예산을 둡니다. 언어 모델은 이 작업에 더 느리고, 더 비싸고, 더 약할 것입니다. 문제에 맞는 종류의 AI를 고르는 것이 항상 가장 큰 모델을 꺼내 드는 것보다 더 중요합니다.

Quads를 만드는 데 얼마나 걸렸나요?

첫 플레이 가능한 프로토타입은 콜롬비아 여행 중 친구와 한 2시간 해커톤에서 나왔습니다. 그 프로토타입을 국제화, 진짜 AI 상대, 오프라인 도전, 스토어 규정 준수를 갖춰 두 앱 스토어 모두에 출시 가능한 다듬어진 앱으로 바꾸는 데는 상당히 더 오래 걸렸지만, 각 개별 단계가 AI로 충분히 저렴해서 프로젝트가 실제로 결승선에 도달했습니다.

Claude로 Quads를 만들면서 얻은 가장 큰 교훈은 무엇인가요?

두 가지입니다. 첫째, 여러 기능을 서로 짓밟지 않고 병렬로 만들 수 있도록 에이전트를 격리된 git worktree에서 실행하세요. 둘째, 다음 세션이 읽을 지속적인 파일에 모든 함정을 적어두세요 — 맥락은 세션 사이에 증발하지만, 적어둔 교훈은 복리로 쌓입니다. 이 작업 방식의 더 큰 그림은 Claude로 Courtlines를 만든 방법을 보세요.

계속 읽기

관련 게시물

계속 읽기

AI 플레이북을 받아보세요

매주 수요일. 28,400명+ 구독자. 핵심만.

↵ 전체 결과 보기 esc esc 닫기