Claude Code로 TV용 카트 레이싱 게임 만든 사례
Turbo Kartz는 내가 Claude Code로 만든 1~4인용 카툰 카트 레이싱 게임이다. Claude Sonnet 5.5가 12개의 프롬프트로 게임을 만들었고, 이어서 Claude Opus 5.5가 사람들이 TV에서 실제로 즐길 수 있는 형태로 바꾸는 데 8개의 프롬프트를 더 썼다. 이 게임에는 4개의 트랙과 트릭이 가능한 점프 램프, 스마트 조향이 있는 EASY 모드, 그리고 내 Sony BRAVIA와 Mac 또는 Windows PC의 어떤 브라우저에서도 가능한 실제 게임패드 지원 분할 화면이 있다. 이 글에서는 모든 프롬프트, 누군가 직접 플레이해 봤을 때만 드러난 버그, 그리고 복사할 만한 코드까지 소개한다.
▶ 영상: https://youtu.be/-5MUGPm92m8
핵심 정보(빠른 답변)
| 사실 | 값 |
|---|---|
| 게임 | 브라우저에서 실행되는 three.js 카트 레이서, Turbo Kartz |
| 사용한 도구 | Claude Sonnet 5.5(게임, 12개 프롬프트), Claude Opus 5.5(TV 업그레이드, 8개 프롬프트), Claude Code |
| 플레이어 | 1명 대 봇 3명, 또는 분할 화면 2~4인 |
| 조작 | 게임패드(Xbox, PlayStation, Switch Pro), TV 리모컨, 키보드, 터치 |
| 트랙 | 4개: Sunny Meadow(837 m), Candy Canyon(1,056 m), Snowy Peaks(1,057 m), Beach Bay(1,115 m) |
| 모드 | EASY(스마트 조향), MANUAL, KIDS(자동 주행) |
| Android TV 앱 | 음악 포함 5.2 MB, Sony BRAVIA(Android 12, Google TV)에서 테스트함 |
| 음악과 사운드 | Lyria 3 Pro, 호출당 $0.08, 기록된 비용 $0.40 |
| 트랙 아트 | 게임 스크린샷을 기반으로 한 Codex 이미지 생성 |
| Sonnet 5.5 가격 | 100만 토큰당 $2 / $10(Opus 5.5: $4 / $20) |
요약
- 도로가 보이지 않았다. 도로를 아래를 향하게 만든 상태로 만들었더니 TV가 도로를 그리지 않았고, 트랙이 그냥 하나의 초록색 들판처럼 보였다. 한 줄을 회색으로 바꾸자 대부분의 "자꾸 벽에 부딪힌다"는 불만이 사라졌다.
- EASY 모드: 조향 없이 가속만 20초 동안 해도 벽 충돌이 0회였고, MANUAL에서는 7회였다.
- 도로 폭 60% 확대: 15 m에서 24 m로 넓혔고, 코너 반경은 17 m보다 더 좁은 곳이 없도록 했다.
- 어디서나 게임패드: TV에서는 Switch Pro Controller 2개를 사용했고, Chrome, Edge, Safari, Firefox에서는 표준 게임패드라면 무엇이든 지원했다.
- 점프: 한 바퀴에 램프가 2~3개 있고, 공중 체공 시간은 1.0~1.7초였다. 공중에서 아무 버튼이나 누르면 트릭 부스트가 발동한다.
- Sonnet 5.5는 Opus 5.5의 절반 가격이고, 8개 벤치마크 중 1개(Terminal-Bench 4.0)에서는 더 뛰어나다.

내가 무엇을 요청했나? 20개의 프롬프트
오타를 고치고 길이를 위해 몇 개를 조금 다듬었다. 음악과 아트 프롬프트를 포함한 전체 목록은 프롬프트 페이지 에 있다.
1부, Claude Sonnet 5.5로 만든 게임:
- HyperFrames와 Three.js를 사용해 카툰 카트 레이싱 인트로, 게임 모션 그래픽 트레일러용 3D 애니메이션을 만들어라.
- 2.5D 카툰, 3D 느낌의 게임으로 만들어라.
- 핸들이 달린 손 부분은 개선이 필요하다.
- 완전히 플레이 가능한 스테이지 데모도 추가하라.
- 그래픽 면에서는 더 나아질 수 있다. 덩치 크고 색감이 풍부한 카툰 캐릭터가 필요하다.
- 이것을 Android용 게임으로 바꿀 수 있는 방법이 필요하다.
- 능력이 있는 자동차 선택 화면.
- 경기장 충돌과 도착 부분을 수정하라.
- Blaze 캐릭터는 눈이 하나뿐이다. 좀 무섭다.
- 게임을 D-pad 리모컨에 맞게 조정하고, 내 Sony Bravia TV에 APK로 보내라.
- TV 리모컨으로 아이들이 쉽게, 재미있게 플레이할 수 있게 만들어라.
- Bluetooth 컨트롤러 페어링과 분할 화면을 추가하라.
2부, Claude Opus 5.5로 더 재미있게 만들기:
- TV에서는 혼자만 플레이된다. 분할 화면을 수정하라: 플레이어를 선택하고 게임패드를 감지하라.
- 솔로 플레이용 이지 모드를 추가하라. 옆면에 부딪히기 너무 쉽다.
- 각 플레이어가 자신의 리모컨이나 게임패드로 캐릭터를 고르게 하고, 색도 다르게 하라.
- 게임패드 튜토리얼을 추가하라. 쉬운 버튼 구성: 트리거로 주행, X로 니트로 부스트.
- 자동차가 점프하고 램프를 넘어 날아갈 수 있게 하라.
- Lyria로 멋진 배경 음악과 효과음을 추가하라.
- 트랙을 더 추가하라. Codex를 사용해 이미지를 생성하라.
- 게임패드와 분할 화면을 지원하는 온라인 플레이가 가능하게 하고, Mac과 Windows에서도 동작하게 하라.
안에 들어 있는 두 도구를 아주 쉽게 말하면 이렇습니다. Three.js는 웹페이지에 3D 장면을 그려 주는 무료 JavaScript 라이브러리입니다. HyperFrames는 웹페이지를 프레임 단위로 영상처럼 기록하는 무료 도구이며, 트레일러와 출시 영상을 만들 때 사용했습니다.
처음 실제로 플레이했을 때 뭐가 잘못됐나요?
네 가지였고, 제 자체 테스트에서는 그중 어느 것도 드러나지 않았습니다.
| 무엇이 망가졌나 | 이유 | 해결 |
|---|---|---|
| 플레이어들이 계속 옆면에 부딪혔음 | 도로가 아래를 향한 평평한 리본이어서 GPU가 이를 컬링했기 때문입니다. 트랙이 풀처럼 보였습니다 | 모든 평평한 도로 리본을 양쪽에서 그리게 했습니다 |
| 분할 화면이 전혀 시작되지 않음 | 첫 번째 게임패드가 원격 조작과 같은 플레이어 1이 되었습니다 | 각 장치가 하나의 플레이어를 소유하게 하고, 메뉴 행에서 1~4인 플레이어를 선택하게 했습니다 |
| 2번째 컨트롤러가 작동을 멈춤 | 절전 상태였던 Switch Pro Controller가 새로운 device id와 함께 돌아오는데, 4개의 플레이어 슬롯이 모두 찼습니다 | 가장 낮은 빈 슬롯을 재사용하고, 컨트롤러가 연결 해제되면 잊어버리게 했습니다 |
| 게임패드로 라이드 선택이 불가능함 | 메뉴가 버튼만 듣고, 스틱이나 D-pad 움직임은 듣지 않았습니다 | 스틱과 D-pad를 튕기면 방향키 입력처럼 동작하게 했습니다 |
첫 번째가 제일 마음에 듭니다. 제 Mac에서는 모든 스크린샷이 멀쩡해 보였는데, 그곳 카메라는 도로를 가려 버리는 각도로는 절대 보지 않았기 때문입니다. TV에서는 그냥 거대한 초록 들판 하나였고, 당연히 모두가 벽으로 들이받았죠.
EASY 모드는 어떻게 조종을 대신해 주나요?
여전히 조종은 직접 합니다. 왼쪽이나 오른쪽으로 밀면 즉시 도로 위에서 좌우로 움직입니다. 손을 떼면 카트는 자신이 있는 차선의 도로를 따라가며, 가장자리에서 2.3 m보다 더 가까이로는 절대 향하지 않습니다. 여전히 닿는 벽은 속도를 10% 대신 4%만 깎습니다.
| 테스트: 20초 동안 가속만 하고 조종 없음 | EASY | MANUAL |
|---|---|---|
| 벽 접촉 횟수 | 0 | 7 |
| 도로 중심에서 가장 멀어진 거리 | 1.1 m | 10.5 m |

메뉴는 위아래로 이동하는 세 줄로 되어 있습니다. 라이드, 플레이어 수(1명 대 봇부터 최대 4명까지), 모드(EASY, MANUAL, KIDS), 트랙입니다. 모든 리모컨이나 게임패드는 각자 고유한 커서를 가지므로, 플레이어 2가 카트를 고른다고 해서 플레이어 1의 행이 바뀌지 않습니다.
점프는 어떻게 작동하나요?
램프는 각 트랙에서 곡률이 가장 낮은, 즉 가장 곧은 세 구간에 배치됩니다. 카트는 쐐기형 경사로를 올라가고, 정상의 가장자리를 오를 때의 속도에 약간의 추가 상승분이 더해진 상태로 벗어나며, 1.0~1.7초 뒤에 착지합니다. 공중에 있을 때 아무 버튼이나 누르면 트릭이 발동합니다. 360도 회전하고, 착지하면 1초 부스트를 받습니다. 첫 버전에서는 가장 가파른 램프에서 카트를 9.75m나 공중으로 날려 버렸기 때문에, 발사 속도에는 상한을 두었습니다.

어떤 트랙이 있나요?
네 개가 있으며, 각각 도로 형태, 색상, 램프가 다릅니다. Codex는 게임 스크린샷을 바탕으로 메뉴에 들어갈 각 트랙의 그림을 그렸습니다.
| 트랙 | 길이 | 가장 급한 코너 | 특징 |
|---|---|---|---|
| Sunny Meadow | 837 m | 반지름 26 m | 원래의 모습: 초록 언덕, 관람석 |
| Candy Canyon | 1,056 m | 반지름 24 m | 분홍 하늘, 사탕 도로, 초콜릿 호수 |
| Snowy Peaks | 1,057 m | 반지름 17 m (헤어핀) | 눈, 얼어붙은 호수 |
| Beach Bay | 1,115 m | 반지름 29 m | 석양, 모래, 청록색 바다 |
출시 전 각 트랙은 같은 테스트를 통과해야 했습니다. EASY 모드에서 가속만 누른 채 조향 없이 한 바퀴를 도는 것이며, 벽 충돌은 0회여야 했습니다. 처음엔 Candy Canyon과 Snowy Peaks가 이 테스트를 통과하지 못했습니다. 가장 급한 코너가 각각 13.6 m와 11.1 m로 24 m 도로 폭의 절반보다 더 가팔라서, 도로가 서로 겹쳐 접혀 버렸기 때문입니다. 그래서 폭을 넓혔습니다.



게임패드로 분할 화면은 어떻게 동작하나요?
A 버튼을 누른 모든 컨트롤러는 다음 플레이어로 합류하며, 최대 4명까지 가능하고 화면은 반쪽이나 4등분으로 나뉩니다. 각 플레이어는 자신만의 카메라, 색상, 위치, 파워 미터를 가지며, 화면의 자기 구역에는 플레이어 번호와 컨트롤러가 표시됩니다.

TV에서는 Android 앱이 각 게임패드에 플레이어 슬롯을 할당하고, 버튼과 스틱 입력을 게임으로 전달합니다. Android TV용으로 웹 게임을 감쌀 때 복사할 만한 부분은 바로 이것입니다:
/** Player slot for a gamepad (or a real keyboard), -1 for the TV remote. Lowest free slot, so a
* controller that sleeps and reconnects with a new device id does not use up the 4 slots. */
private int padSlot(InputEvent e) {
int src = e.getSource();
boolean pad = (src & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD
|| (src & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK;
if (!pad) return -1;
int id = e.getDeviceId();
int i = padSlots.indexOfKey(id);
if (i >= 0) return padSlots.valueAt(i);
for (int slot = 0; slot < 4; slot++) {
if (padSlots.indexOfValue(slot) < 0) { padSlots.put(id, slot); return slot; }
}
return -1;
}
@Override public void onInputDeviceRemoved(int id) { // InputManager.InputDeviceListener
int i = padSlots.indexOfKey(id);
if (i >= 0) {
int slot = padSlots.valueAt(i);
padSlots.delete(id);
web.evaluateJavascript("window.__padGone && window.__padGone(" + slot + ")", null);
}
}브라우저에서는 같은 게임이 표준 Gamepad API를 읽습니다. 중요한 점은 두 가지입니다. 브라우저는 컨트롤러를 첫 버튼 입력이 있어야만 표시하므로, 메뉴에는 "각 컨트롤러에서 A를 눌러 참가하세요"라고 적습니다. 그리고 표준 레이아웃에서는 D-pad가 축이 아니라 12번부터 15번까지의 버튼으로 들어오므로, 그렇지 않으면 메뉴를 한 번 누를 때마다 두 번씩 이동합니다.

음악과 아트는 어디에서 오나요?
음악은 Google의 음악 모델인 Lyria 3 Pro이며, 호출당 $0.08입니다. 150 BPM 레이스 루프와 118 BPM 메뉴 루프를 만들었고, 각각 끊김 없는 루프로 잘라냈습니다. 점프, 착지, 부스트 사운드도 만들었지만, 짧은 효과음보다는 음악에 더 강해서 각 효과음을 가장 큰 0.5초만 남기도록 잘라야 했습니다. 프롬프트는 프롬프트 페이지 에 있습니다.
트랙 그림과 출발 그리드 포스터는 Codex 이미지 생성으로 만들었으며, 실제 게임의 스크린샷을 제공해 캐릭터가 동일하게 유지되도록 했습니다.
Sonnet 5.5 vs Opus 5.5: 더 저렴한 모델이 이기나요?
한때는 이 게임에 가장 가까운 벤치마크에서 그랬습니다. Sonnet 5.5는 터미널에서의 코딩을 평가하는 Terminal-Bench 4.0에서 70.6%를 기록했고, Opus 5.5는 66.4%였습니다. 하지만 나머지 7개에서는 Opus가 앞섭니다.
| 벤치마크(Anthropic, 2026년 9월 28일) | Sonnet 5.5 | Opus 5.5 | 차이 |
|---|---|---|---|
| Terminal-Bench 4.0 | 70.6% | 66.4% | +4.2 |
| FrontierCode 1.1 (Main, Max) | 46.2% | 54.4% | -8.2 |
| CursorBench 4.0 | 55.5% | 57.8% | -2.3 |
| GDPval-AA v2.1 | 1844 | 1846 | -2 |
| AA-Briefcase v1.1 | 1811 | 1822 | -11 |
| Humanity's Last Exam (with tools) | 64.5% | 67.7% | -3.2 |
| OSWorld 2.1 (partial) | 80.1% | 81.8% | -1.7 |
| Chartography (no tools) | 61.6% | 64.4% | -2.8 |
| 100만 토큰당 가격 | Sonnet 5.5 | Opus 5.5 |
|---|---|---|
| 입력 | $2 | $4 |
| 출력 | $10 | $20 |
| 캐시 읽기 | $0.20 | $0.20 |
| 캐시 쓰기 | $2.50 | $5 |
주의 사항
- 두 개의 모델. Sonnet 5.5가 게임을 만들었고, TV 업그레이드, EASY 모드, 점프, 트랙, 웹 게임패드는 Opus 5.5가 만들었습니다. 제목은 빌드에 관한 것이고, 이 글은 둘 모두에 관한 것입니다.
- TV의 프레임률. BRAVIA에서 처음 측정했을 때 레이스 중 15 fps였습니다. 전체 화면 효과 두 개가 약 10 fps를 잡아먹었고, 지금은 TV에서 꺼져 있으며 프레임률이 떨어질 때 해상도도 조정됩니다. 아직 TV에서 최종 빌드를 다시 측정하지는 않았습니다.
- 브라우저 게임패드는 시뮬레이션되었습니다. Chrome과 Safari 테스트에서는 실제 Gamepad API를 통해 두 개의 가짜 표준 게임패드를 사용했습니다. 실제 컨트롤러는 TV 앱에서 테스트했습니다.
- 벤치마크는 공급자 보고 값입니다. 저는 그것들을 다시 실행하지 않았습니다.
- 빌드 비용 없음. 토큰을 기록하지 않았기 때문에 코드에 대한 달러 금액은 없습니다.
내 생각
이 프로젝트 전체에서 가장 좋은 프롬프트는 제 것이 아니었습니다. 처음으로 실제로 해본 플레이 테스트였습니다. "혼자서도 잘 된다", "벽에 계속 부딪힌다". 제가 기대한 것을 테스트하고 있었기 때문에, 보이지 않는 도로를 찾도록 제 테스트를 아무리 해도 찾지 못했습니다. 일찍 배포하고, 다른 사람에게 컨트롤러를 쥐여 주고, 그들의 불평을 한 글자도 빼지 말고 그대로 프롬프트 박스에 붙여 넣으세요.
출처
- Claude Sonnet 5.5, Anthropic, 2026년 9월 28일: https://www.anthropic.com/claude-sonnet-5-5 (벤치마크와 가격 수치; 공급자 보고 값)
- Lyria 3 Pro 가격은 호출당 $0.08: Google AI Studio, 2026년 9월 29일 확인
- three.js: https://threejs.org
- HyperFrames: https://hyperframes.heygen.com
- 벽 충돌, 트랙 측정, 점프 시간, 게임패드 테스트, TV 프레임 속도: 2026년 10월 1일과 2일에 직접 측정
Anass Kartit의 독립 튜토리얼, kartit.net. 게임은 Claude Sonnet 5.5와 Claude Opus 5.5로 제작했습니다. Anthropic이나 Sony와는 관련이 없습니다. 영상은 HyperFrames로 만들었습니다.
업데이트: 휴대폰으로 플레이하기
내 블로그에 글이 올라간 뒤, Claude Opus 5.5가 한 번의 세션에서 세 가지를 추가했습니다:
- 휴대폰이 컨트롤러입니다. 노트북이나 TV에서 게임을 열고 QR 코드를 스캔하면 최대 4대의 휴대폰이 작은 Cloudflare 릴레이를 통해 접속합니다(제 테스트에서 왕복 시간 중앙값 36 ms).
- iPhone 및 Android 터치 컨트롤: 엄지를 밀어 조작하는 조향 패드와, 드리프트·터보·파워를 위한 엄지 아크가 있습니다.
- 앱으로 설치: Android에서는 Install을 제공하고, iPhone에서는 Share 다음 Add to Home Screen을 선택합니다. 전체 화면으로 열리며 오프라인에서도 작동합니다.
FAQ
Turbo Kartz는 무엇인가요?
Turbo Kartz는 제가 2026년 9월과 10월에 Claude Code로 만든 1~4인용 카트 레이싱 게임입니다. Claude Sonnet 5.5가 게임을 만들었고, Claude Opus 5.5가 TV 및 분할 화면 업그레이드를 했습니다. 4명의 캐릭터와 각자의 파워, 4개의 트랙, 트릭이 가능한 점프 램프, 그리고 게임패드가 있는 분할 화면을 갖추고 있습니다. 브라우저에서 실행되며, 제 Sony BRAVIA에서는 Android TV 앱으로도 동작합니다.
브라우저에서 게임패드로 플레이할 수 있나요?
네. Mac 또는 Windows PC에 USB나 Bluetooth 게임패드(Xbox, PlayStation, Switch Pro)를 최대 4개까지 연결하고, 각각 A를 누르면 참가할 수 있습니다. 화면은 2분할 또는 4분할로 나뉩니다. Chrome과 Safari 엔진에서 두 개의 가상 표준 게임패드로 테스트했으며, 두 플레이어가 참가해 시속 177km와 173km로 경주했습니다.
TV에서 실제 컨트롤러로도 작동하나요?
네. 두 개의 Nintendo Switch Pro Controller를 Bluetooth로 제 Sony BRAVIA(Android 12, Google TV)에 페어링해 2인 분할 화면으로 플레이할 수 있습니다. 한 가지 특이점은 Android에서 A로 표시된 버튼이 BUTTON_B로 들어오고 D-pad가 방향키로 들어온다는 점이므로, 게임은 어떤 얼굴 버튼이든 가속으로 받습니다.
프롬프트는 몇 번이나 필요했나요?
게임은 Claude Sonnet 5.5로 12개의 프롬프트를 사용했고, 이어서 TV 업그레이드, EASY 모드, 점프, 음악, 추가 트랙을 위해 Claude Opus 5.5로 8개를 더 사용했습니다. 이 20개 모두가 이 글과 프롬프트 페이지에 나와 있습니다.
EASY 모드는 무엇인가요?
스마트 조향입니다. 가속을 누른 채 왼쪽이나 오른쪽으로 밀어 방향을 바꾸고, 손을 떼면 카트가 자신이 있는 차선의 도로를 따라갑니다. 가장자리에서 2.3m보다 더 가까워지지 않습니다. 조향 없이 20초 동안 가속을 유지했을 때 EASY 모드에서는 벽 충돌이 0회였고, MANUAL 모드에서는 7회였습니다.
음악 비용은 얼마였나요?
Lyria 3 Pro가 메뉴와 레이스 음악, 점프·착지·부스트 사운드를 호출당 $0.08에 만들었습니다: 기록된 호출 5번, 총 $0.40입니다. 오디오 없이 돌아온 호출이 2번 더 있었고, Google은 그것들도 청구하므로 실제 총액은 $0.56일 가능성이 큽니다.
Claude Sonnet 5.5가 Claude Opus 5.5를 이기나요?
Anthropic이 공개한 8개 벤치마크 중 하나인 Terminal-Bench 4.0에서는 Sonnet 5.5가 70.6%, Opus 5.5가 66.4%였습니다(Opus는 Xhigh effort로 실행). 나머지 7개에서는 Opus 5.5가 앞섭니다.
Claude Sonnet 5.5의 가격은 얼마인가요?
입력 토큰 100만 개당 $2, 출력 토큰 100만 개당 $10입니다. Opus 5.5($4 및 $20)의 절반입니다. 모델 id는 claude-sonnet-5-5이고, 2026년 9월 28일 출시되었습니다.
원문은 kartit.net 에 처음 게시되었습니다. 무료로 플레이하기: kartit.net/games/turbo-kartz .
출처
- 원문: https://dev.to/akartit/claude-sonnet-55-built-a-kart-racer-for-my-tv-20-prompts-4-players-real-gamepads-1gaf (2026-10-04 · akartit)