Claude Code로만 만든 카피바라 게임으로 2만 5천 달러 상금을 탔습니다. 제작 과정 공유합니다.
I won $25k with a capybara game entirely made with Claude Code, here's how I made it
핵심 요약
Claude Code를 활용해 2주 만에 개발한 카피바라 게임으로 Vibejam 2026에서 우승한 개발자의 상세한 제작기.
개발 방식 — Claude Code를 활용한 '바이브 코딩'으로 기획과 테스트에 집중함.
기술 스택 — Three.js 엔진과 Tripo3d, Suno 등 AI 도구를 적극 활용함.
제작 과정 — AI로 생성한 맵의 한계를 극복하기 위해 직접 에디터 툴을 제작함.
성과 — 2주간의 개발 끝에 멀티플레이어 기능을 갖춘 게임으로 대회 우승을 차지함.
다들 안녕! 몇 달 전에 내가 2주 동안 만들어서 Vibejam 2026에 출품했던 "카피바라 음식 배달" 게임 결과물을 올린 게시물 기억하지? 이번 대회에서 내가 우승했거든. 해보고 싶은 사람은 여기서 플레이해 봐!
이번 글에서는 게임 개발 과정이랑 게임을 만들기 위해 뭘 썼는지 자세히 풀어보려고 해. 글이 좀 기니까 이미지 더 보고 싶은 사람은 내가 미디엄에 올린 이 글도 참고해. 거기 전체 내용 다 있음.
간단한 소개
9년 차 iOS 소프트웨어 엔지니어인 내가 난생처음으로 게임을 만들어 봤어. 카피바라 음식 배달 게임은 스쿠터를 탄 카피바라를 조종해서 음식을 시간 맞춰 배달하는 싱글/멀티플레이어 게임이야.
바이브 코딩(vibe coding)이란?
이 게임은 100% 바이브 코딩으로 만들었어. 사실 코드를 짜는 시간보다 브레인스토밍하고, 계획 짜고, 게임 플레이하는 시간이 훨씬 길었지. Claude Code 세션을 2~3개씩 동시에 돌리면서, 코드 꼬이지 않게 파트별로 나눠서 작업했어. 새로운 기능 만들 땐 항상 깨끗한 새 세션을 썼고, 이미 만들어진 코드의 맥락이 중요한 버그 수정 같은 건 기존 세션을 계속 유지하면서 작업했지.
뭘 썼고 돈은 얼마나 들었나?
Claude Code (Opus 4.7): Max 20x 플랜, 5x에서 20x로 올리느라 100달러 충전함.
텍스처 & 일러스트: GPT 이미지 2 (20달러인데 무료 체험으로 씀)랑 Grok (X 프리미엄 8달러).
콘셉트부터 3D까지
카피바라랑 스쿠터라는 아이디어는 있었는데 디테일이 좀 흐릿해서 Grok/GPT랑 브레인스토밍을 좀 했어. 스타일, 모양, 캐릭터 디자인 변형을 잔뜩 뽑아달라고 한 다음에 마음에 들 때까지 계속 수정했지. 스쿠터 탄 카피바라를 직접 그려보기도 했는데(결과는 처참했음).
그다음엔 3D로 넘길 디자인을 준비해야 해. LLM한테 최소 3개 각도(앞, 뒤, 좌우 측면)를 그려달라고 해. 각도가 많을수록 AI가 멋대로 상상하지 않고 3D를 훨씬 잘 뽑아내거든. 내 채팅 기록 중 하나는 여기서 볼 수 있어.
Tripo3D를 써서 이미지를 3D로 변환했어. 사진 드래그해서 넣고 텍스처 품질이랑 폴리곤 수 조절하면 끝이야. 게임에 들어가는 모든 에셋을 이런 식으로 만들었어.
플레이어 조작
기본부터 시작했지. 드리프트가 되는 차량 조작, 충돌 처리, 바이크를 따라가는 카메라가 필요했어. 샌드박스 맵을 만들어서 이리저리 몰아보고, 충돌 테스트하고, 디버그 패널로 조작감을 튜닝했지. 드리프트할 때 뒤에 생기는 선 색깔이 변하면서 부스트 게이지를 보여주게 했고, 고속 주행 효과랑 카메라 흔들림도 좀 넣었어.
아이템 물리 효과
핵심 미션은 음식을 떨어뜨리지 않고 제시간에 A에서 B로 배달하는 거임. 처음 버전은 바구니에 담긴 물건들이 좌우로 미끄러지게 만들었는데, 영 마음에 안 들더라고. 그래서 물건들을 위로 차곡차곡 쌓아 올리는 방식을 써봤지. 좌우로 움직이면 물건들이 아치형으로 휘어지는데, 특정 임계치를 넘어가면 와르르 쏟아지게끔 설계했음. 이걸 너무 현실적인 물리 엔진으로 구현하기보다는, 임계치를 넘으면 일정 확률로 떨어지게끔 조정했더니 훨씬 재밌고 독특한 느낌이 나더라.
폰 시뮬레이터: 1부
여기서 음식을 수령하라는 미션을 받게 됨.
Claude한테 iOS 느낌 나는 애니메이션이랑 비주얼을 가진 폰 시뮬레이터를 짜달라고 했더니, CSS로 한 방에 끝내버리더라. 첫 버전부터 애니메이션이 꽤 인상적이었음. 나중에 폰 UI를 좀 더 현실적이면서도 웃기게 다듬었는데, 거울 셀카 찍는 카피바라 잠금 화면에서 밀어서 잠금 해제하기, iOS 스타일 알림 배지, 작동하는 볼륨 버튼, 그리고 실제 앱을 '카피바라화'한 버전들을 넣었지. 예를 들어, CapyMaps는 지도 앱처럼 작동하고, Capify는 게임 내에서 실제로 음악이 재생되는 뮤직 앱임.
게임에 나오는 카피바라 플레이리스트는
YouTube
에 있고, u/peluucs 님이 직접 만들어주셨음!
불편한 편의점 (Inconvenience Store)
미니 마트는 음식 배달에 난이도를 더해주는 요소임. 그냥 자전거 뒤에 과일이 툭 튀어나오는 게 아니라, 플레이어가 직접 편의점에 들어가서 주문받은 과일을 찾아다니게 만들고 싶었거든. 여기에 몇 가지 양념을 더했지:
랜덤하게 나타나는 쇼핑 카트 찾기
주문 목록에 있는 과일 하나하나 찾아내기
바닥은 미끄럽고, 벽에 부딪히면 튕겨 나감
바나나 껍질 (지금은 삭제됨)
과일을 많이 담을수록 보너스는 커지지만, 떨어뜨리기 쉬워서 점수 깎임
이 모든 걸 60초 안에 (나중엔 45초로 줄임)
편의점이 발전하는 과정이 제일 재밌었음. 카메라 시점도 뜯어고치고, 조명이랑 애니메이션도 넣고, 기본으로 제공되는 선반이랑 아이템들을 실제 3D 소품으로 싹 다 바꿨거든. 적절한 효과음까지 곁들이니까 결과물이 진짜 끝내주더라.
맵 (1차 시도)
처음엔 LLM으로 맵을 통째로 생성해 보려고 했음. Grok으로 일러스트를 그리고, Tripo3d로 3D 변환을 시도했지. 근데 도시 디테일을 세세하게 조절하기가 너무 힘들고, 확대하면 퀄리티가 다 깨지더라고. 게다가 맵 전체가 하나의 덩어리로 만들어져서 게임 최적화도 안 되고, 나중에 분명히 문제 생길 게 뻔했음.
그럼 완전히 커스텀 된, 수제 맵을 만들려면 어떻게 해야 할까?
에디터 툴
직접 맵을 만들려면 에디터가 필요했음. 원하는 곳에 아이템을 배치하고, 브러시로 지형이랑 산을 '색칠'하고, 도로를 절차적으로 생성할 수 있는 그런 거. 이 게임의 독특함은 상당 부분 이 맵에서 나옴.
에디터에서 가능한 기능들:
오브젝트 배치, 삭제, 이동, 회전, 크기 조절
지형 높낮이 조절, 다듬기, 평탄화 브러시
잔디, 흙, 물 등 비주얼을 입히는 브러시
교차로, 가로등, 보도가 포함된 도로 시스템
카메라 및 게임 내 시네마틱 (2주 차에 추가)
에디터를 열기 위해 ?editor 엔드포인트를 추가했음. 나중에는 에디터를 메인 코드에서 분리했는데, 그래야 Claude가 게임을 업데이트할 때 에디터가 새로고침 되면서 내가 작업한 내용이 싹 날아가는 참사를 막을 수 있었거든 (몇 번 당해봤음).
수작업으로 맵 만들기
AI한테 내가 원하는 대로 맵을 뽑아달라고 하는 게 너무 빡세서, 그냥 에디터로 직접 만들었다. 이게 유일하게 "빡세게" 수작업한 부분임. 원래는 "유럽풍" 도시를 생각했는데, 결과물 보면 알겠지만 정반대로 가버렸다. 원래 구상은 맵에서 제일 높은 산 꼭대기에 편의점을 박아두고, 하늘에서 마법 같은 빛이 쏟아지게 해서 어디서든 보이게 만든 다음, 그 주변으로 도시를 세우는 거였음. 수많은 수정과 몇 시간의 삽질 끝에 진짜 플레이 가능한 도시가 완성됐다.
낮과 밤 주기 + 비
이건 덤으로 넣은 거다. 나중에 해도 됐는데, Claude가 놀고 있길래 그냥 구현해달라고 시켰음.
멀티플레이어
멀티플레이어는 잼(jam) 치고는 생각보다 간단했다. 하나의 글로벌 도시/로비가 Cloudflare의 실시간 WebSocket으로 방을 호스팅하는 방식임. 플레이어가 들어오면 위치랑 아이템 스택 정보가 다른 사람들한테 쫙 뿌려진다.
대역폭은 플레이어 수의 제곱에 비례해서 늘어남. 라이더 한 명당 초당 10번씩 브로드캐스팅하고, 서버는 그 메시지를 나머지 모든 플레이어한테 다시 쏴주는 구조거든. 5명까진 괜찮은데, 50명이 되면 초당 10번씩 50개 클라이언트에 50개 메시지를 뿌려야 하니까 좀 빡세지.
메시지 보내기, 경적 울리기, 심지어 근처 플레이어가 듣고 있는 음악까지 들을 수 있다.
첫 주 개발 결과
첫 주 끝날 때쯤엔 대충 이 정도 완성함:
주인공 캐릭터, 아이템 쌓기 물리 엔진, 충돌 판정
편의점 90% 완성
간단한 앱이 깔린 폰
미션 루프 구현 (주문 받기 + 미니게임 + 배달)
날씨 및 낮/밤 주기
맵 개발 시작
지형 제작 에디터 툴
멀티플레이어 로직
간단한 효과음 + 최종 음악 일부
개발 2주 차
재질 다듬기
핵심 메커니즘이 잡혔으니 이제 게임에 걸맞은 비주얼을 입힐 차례였다. PS1 스타일로 가기로 함. 저해상도 이미지, 제한된 색상, 낮은 해상도 같은 거 말이야. PS1이 워낙 사양이 낮았던 콘솔이라, 적절한 텍스처랑 색 심도, 매핑, 필터링만 잘 써도 그 느낌이 확 산다.
마침 ChatGPT Images-2가 나와서 그걸로 실사 텍스처 뽑고, 무료 사이트에서 리사이징해서 게임에 적용했다.
PS1 스타일 나무 만들려고 Claude한테 평면 PNG 나뭇잎을 X자 모양(평면 2개를 겹친 형태)으로 배치해달라고 했다.
“평면 두 개를 만들어서 하나를 다른 것 위에 올리고, 위에서 봤을 때 “X”자가 되도록 하나를 90도 돌려줘.”
모든 재질(아스팔트, 잔디, 흙, 나무, 모래, 물, 농지) 텍스처도 다 새로 뽑았고, Claude가 내가 대충 칠해놨던 "초록색" 브러시를 진짜 텍스처로 싹 바꿔줬다. 오른쪽 보면 텍스처랑 맵 다듬어서 완성한 결과물이 보일 거임.
도로 제작 툴
도로 제작 툴로 지형에 점을 찍으면 알아서 부드러운 곡선을 그려준다. 아스팔트나 흙을 깔고, 도로가 평평하게 앉도록 지형을 깎아내면서 가장자리는 자연스럽게 블렌딩까지 해줌. 이 도로는 폰에 있는 CapyMaps 앱에도 그대로 떠서 목적지까지 최단 경로를 보여준다. 절차적으로 생성되는 보도블록, 가로등, 차선, 가드레일, 울타리, 배너 같은 것도 추가했음.
맵 작업
제일 재밌는데 제일 시간 많이 잡아먹는 작업이었다. 구세주 그리스도상, 금문교, 할리우드 사인 같은 것도 넣어봤음. 그냥 내가 보기에 멋있겠다 싶은 건 다 섞어놓은 도시임.
맵은 아래 보이는 것처럼 발전했어. 안개 효과를 개선해서 스케일감이 훨씬 살아났고, 하늘에는 노이즈 텍스처를 입혀서 구름 느낌을 냈지. 금융 지구랑 주거 지역도 전보다 훨씬 깔끔해졌어. 내가 제일 좋아하는 부분은 도시랑은 분위기가 완전히 다른 '시골' 구역이야. 흙길이랑 농장, 고속도로 옆에 옹기종기 모인 집들이 포인트지. 다른 각도에서 보면 구세주 그리스도상이 풍경 속에 어떻게 자리 잡고 있는지도 볼 수 있어. 처음엔 호수를 만들까 했는데, 그냥 도시 옆에 해변을 두는 쪽으로 바꿨어.
컷신 에디터
게임은 시작하자마자 컷신이 나오면서 바로 플레이로 이어져. 덕분에 플레이어한테 상황 설명도 되고, 진짜 게임 같은 느낌이 확 살거든.
먼저 시네마틱 에디터 UI 전체 모습부터 보여줄게. 그러고 나서 몇 가지 재밌는 디테일들을 설명해 줄게. 이 에디터는 실제 영상 편집기처럼 타임라인에서 컷신 진행 상황을 한눈에 볼 수 있게 만들었어. 클립을 넣거나 빼기도 쉽고, 드래그 앤 드롭으로 위치를 옮기거나 시간 건너뛰기, 음악, 전환 효과, 오버레이 같은 걸 넣기도 편해. 겉보기엔 좀 지저분해 보여도, 일단 게임을 완성하는 게 더 중요했으니까.
모든 장면은 게임 내에서 녹화해서 실시간으로 재생하는 방식이야. 그래서 다른 플레이어들이 접속해 있으면 그 사람들도 인트로에 같이 나와.
녹화
일단 도시 곳곳을 돌아다니는 카피바라를 녹화했어. '녹화(Record)' 툴을 쓰면 맵 어디에든 자전거를 배치할 수 있고, 내가 직접 운전하면서 이동 경로를 그대로 따올 수 있거든.
카메라 배치
경로를 다 잡았으면, 이제 멋진 샷이 나오게 도시 곳곳에 카메라를 배치했어. 이 과정에서 각 구역의 디테일도 더 채워 넣었지.
카메라마다 애니메이션, FOV(시야각), 전환 효과 같은 고유 속성을 설정할 수 있고, 카메라별로 시간대도 바꿀 수 있어. 그다음엔 타임라인의 특정 블록에 카메라를 연결하기만 하면 끝이야.
메뉴
시네마틱 카메라는 '메뉴에서 사용(Use in menu)' 체크박스만 누르면 게임 메뉴 화면에서도 그대로 재사용할 수 있어.
현지화
현재 게임은 영어, 브라질 포르투갈어, 스페인어, 한국어, 중국어(만다린), 독일어, 힌디어를 지원해. 내가 아는 언어들은 Claude가 꽤 잘 뽑아줬고, 약간만 손보면 됐어. 나머지 언어들은 나중에 다른 에이전트를 써서 검수해 볼 생각이야.
게임 출시
마지막 단계는 Vibejam 웹사이트에 올릴 썸네일 제작이었어. 몇 가지 레퍼런스를 줬더니 ChatGPT가 로우 폴리 스타일은 잘 살렸는데, 배경 조명이랑 샛길, 뒤쪽에 있는 구세주 그리스도상 산은 좀 엉망으로 만들더라고.
뭘 배웠나?
작년이랑 비교해 보면 AI 코딩이 확실히 한 단계 올라선 게 느껴져. 몇 가지 느낀 점을 정리하자면:
빠른 도파민, 저비용 MVP: 오후 반나절이면 플레이 가능한 메커니즘 하나를 뚝딱 만들 수 있어.
코딩에서 의사결정으로의 전환: 코딩하는 시간은 줄고, 대신 타이핑하고, 계획하고, 테스트하고, 감각을 다듬는 시간이 늘어났어. 지금 진짜 병목 구간은 여기야. 다들 좋은 프롬프트를 짜는 걸 어려워하는데, 결국 자기 생각을 텍스트로 얼마나 명확하게 옮기느냐가 관건이지.
도구의 복합적 활용: 가장 큰 효율을 낸 건 게임 코드 자체가 아니었어. 게임을 더 빨리 만들 수 있게 해주는 에디터들을 Claude한테 짜달라고 한 게 신의 한 수였지. 모든 디테일이 필요할 때마다 즉석에서 만들어졌거든.
이 게임을 스팀에 낼 건가?
아니. 이건 잼(jam)용으로 딱 좋은 게임이고, 거기서 끝내는 게 맞아. 스팀에 내려면 몇 시간씩 즐길 수 있는 콘텐츠나 성취감 같은 걸 더 넣어서 훨씬 완성도를 높여야 하거든. 지금은 딱 5~10분 즐기기에 적당해.
다음은?
이번 프로젝트 진짜 재밌게 했고, AI 덕분에 MVP 만들고 아이디어 검증하는 속도가 완전 치트키 수준이었음. 제대로만 쓰면 이거 진짜 사기적인 도구임. 이제 게임 개발 개념 좀 더 깊게 파볼 생각이고, LLM 계속 써서 아이디어를 예전보다 훨씬 빠르게 구현해 볼 예정임. 나중에 스팀에서 내 게임을 보게 될지도 모르지.
사용자들은 AI를 활용해 짧은 기간 내에 고퀄리티 게임을 완성하고 큰 상금을 거머쥔 작성자의 성과에 놀라움을 표하며, 상세한 개발 과정 공유에 대해 긍정적인 반응을 보이고 있습니다.
40
정말 유익한 정보가 가득한 멋진 글이네요. 게임 우승 축하드려요, 진짜 재밌어요. 🤩
10
와, 진짜 대단한 여정이다.
사람들은 'vibe coding'이 쉬운 줄 알지만, 이렇게 'vibe coding'에 들어간 모든 과정을 상세하게 적은 글은 처음 봐. 무엇보다 작성자의 창의성과 끈기가 모든 걸 압도하네.
진심으로 축하함. 가즈아!
이런 글이 더 많이 올라와야 함.
6
맞아요, 이 글에 담긴 디테일 수준이 장난 아니네요. 게임도 진짜 재밌고요.
0
맞아요, 이 글에 담긴 디테일 수준이 장난 아니네요. 게임도 진짜 재밌고요.
13
“코딩에서 결정하는 것으로 시간이 이동한다”는 말에 정말 공감되네요. 전통적인 프로그래밍 언어와 씨름하며 수년을 보낸 사람으로서, AI는 완전히 판도를 바꿨습니다. 아이디어와 작동하는 제품 사이의 간극은 이제 코드가 아니라, 얼마나 좋은 맥락을 제공할 수 있느냐에 달려 있죠. 저는 이걸 코딩보다 '맥락 엔지니어링'이라고 생각하기 시작했습니다. 디테일이 정확도를 결정하니까요. 이건 코딩을 넘어 책이나 기사 등에도 적용될 것 같네요...