DDZIP STUDIO

ONE-SHOT PROMPT · 한 번의 제작 요청

JELLY DASH — 원샷 프롬프트 실험

프롬프트 한 번으로,
3D 장애물 게임을 만들어볼까?

게임 규칙과 조작법을 하나의 프롬프트(제작 요청문)에 담아 Claude에 한 번에 전달했습니다. 이 ‘원샷’ 요청으로 어떤 게임이 만들어지는지 살펴본 학습 프로젝트입니다.결과물은 나와 컴퓨터 캐릭터(봇) 19명이 장애물을 넘고 왕관을 차지하는 3D 게임입니다. 실제 사람 20명이 접속하는 온라인 게임은 아닙니다.

누가·어디서 쓰나
장애물 게임을 플레이할 사람 · 인터넷과 키보드가 있는 PC 브라우저
원샷의 범위
제가 게임 규칙·조건을 한 번에 요청 · Claude가 주요 게임 코드 생성
기술과 용도
Three.js · JavaScript · Web Audio / 3D·로직·사운드

‘원샷’은 최초 게임 생성 방식을 뜻합니다. 이후 포트폴리오 연결과 전체화면·조작 안내는 별도로 작업했습니다.

실제 게임 플레이 화면 · 플레이어 1명 + 봇 19명
실제 게임 플레이 화면 · 플레이어 1명 + 봇 19명

PLAYABLE DEMO / PC ONLY

포트폴리오 안에서 바로 왕관에 도전하기.

START를 누른 뒤 게임 화면을 한 번 클릭하고 키보드로 조작하세요.

JELLY DASH PLAYABLE
키보드가 있는 PC에서 플레이할 수 있습니다. WASD 이동 · Space 점프 · Shift 다이브 · G 붙잡기
WASD 이동 SPACE 점프 SHIFT 다이브 G 상대 붙잡기
새 창에서 크게 플레이

THE EXPERIMENT

무엇을 맡겼고,
무엇이 나왔을까?

01

구체적인 사양을 한 번에 전달하기

실험 조건
조작, 3개 라운드, 봇 19명, 물리·사운드와 결과 화면을 하나의 사양으로 묶었습니다. 목표와 제약, 출력 형식과 검증 항목도 구분했습니다.
AI가 만든 결과
하나의 HTML 파일 안에 화면과 게임 규칙을 담았습니다. 그림과 소리는 코드로 만들고, 3D 화면을 그리는 도구인 Three.js는 인터넷의 외부 파일 서버(CDN)에서 불러옵니다.
이후 작업
최초 생성 이후에는 포트폴리오 안에서 실행할 수 있도록 연결하고, 전체화면과 모바일 조작 안내를 별도로 구성했습니다.

MAKING NOTES

제작 요청과 구현 범위

사용 도구

Claude가 주요 게임 코드를 생성했습니다. 저는 게임의 목표와 조건을 요청하고, 생성된 결과물을 포트폴리오에 연결했습니다.

전달한 조건

사양을 역할·목표·기술 제약·게임 규칙·출력 규칙으로 나눠 전달했습니다. 아래에서 실제 사용한 원문을 확인할 수 있습니다.

포트폴리오에서의 작업

페이지 안 실행, 전체화면 전환과 조작 안내를 구성했습니다. 초기 게임 생성과 이 후속 작업은 별개의 단계입니다.

ONE-SHOT PROMPT / ORIGINAL 게임을 만든 한 번의 요청, 원문 펼쳐보기

JELLY DASH · ONE-SHOT PROMPT

# 역할
너는 웹 게임 전문 개발자다. 아래 사양의 게임을 **한 번의 응답으로 완성된 형태**로 구현한다.

# 목표
Fall Guys 스타일의 3D 캐주얼 배틀로얄 파티게임 "JELLY DASH"를 만든다.
단일 HTML 파일(`jelly-dash.html`)로, 브라우저에서 더블클릭만 하면 바로 실행되어야 한다.

# 기술 제약 (엄수)
- **파일 1개.** HTML + CSS + JS 전부 인라인. 외부 이미지/오디오/폰트 파일 없음.
- 3D 렌더링은 Three.js **r160 이상, ESM import map + CDN(unpkg 또는 jsdelivr)** 사용.
- 물리엔진 라이브러리 금지. **직접 구현한 경량 물리**만 사용:
  - 중력, 속도 적분, 캡슐 vs AABB/구/평면 충돌, 반발계수, 마찰
  - 봇/플레이어 간 원기둥 충돌(밀치기)
- 사운드는 WebAudio API로 **코드에서 생성**(오실레이터/노이즈)한다. 점프, 착지, 충돌, 탈락, 승리음.
- 텍스처는 canvas로 절차적 생성(체크무늬, 스트라이프)만 사용.
- 60fps 목표. `requestAnimationFrame` + 고정 timestep(1/60) 물리 누적기.

# 게임 사양

## 캐릭터
- 젤리빈 형태(캡슐 몸통 + 구 머리 + 눈 2개). 색상은 HSL로 랜덤 팔레트.
- 조작: WASD/방향키 이동(카메라 상대), Space 점프, Shift 다이브(공중 몸던지기), 마우스로 카메라 회전(포인터락), 휠로 줌.
- 이동은 가속/감속 기반이라 **약간 미끄럽고 통통 튀는 느낌**이 나야 한다. 넘어지면 3초간 쓰러진 상태(래그돌 흉내: 몸통 회전 + 조작 불가) 후 자동 기상.
- 봇 19명 + 플레이어 1명 = 20명 시작. 봇은 목표 지점 추종 + 장애물 회피 + 랜덤 점프 AI. 봇마다 실력 편차(속도/반응속도) 부여.

## 라운드 구조 (총 3라운드, 생존자 수 감소)
1. **Round 1 — DOOR DASH (레이스)**: 20명 → 10명 통과.
   회전 바(스위핑 암), 좌우로 미는 피스톤, 굴러오는 큰 공, 좁은 통로. 결승선 도달 순서로 통과자 결정.
2. **Round 2 — HEX FALL (생존)**: 10명 → 5명.
   육각 타일 3층 바닥. 밟으면 0.8초 뒤 타일이 사라진다. 아래로 떨어지면 다음 층, 최하층에서 떨어지면 탈락. 제한시간 60초 생존.
3. **Round 3 — CROWN GRAB (결승)**: 5명 → 1명.
   상승하는 플랫폼 지형 꼭대기의 왕관을 먼저 잡는 사람이 우승. 왕관은 좌우로 흔들리며 회피 이동한다.

## 시스템
- 라운드 사이에 **결과 화면**(통과자/탈락자 명단, 3초 카운트다운 후 자동 진행).
- HUD: 현재 라운드명, 생존자 수, 타이머, 순위(레이스), 미니 안내 텍스트.
- 시작 화면: 게임 타이틀, 조작법, [START] 버튼.
- 종료 화면: 승리(왕관 연출 + 색종이 파티클) / 탈락(순위 표시), [다시 하기] 버튼.
- 리스폰: 맵 밖으로 떨어지면 해당 라운드 규칙에 따라 탈락 또는 체크포인트 복귀.
- 카메라: 부드러운 추적(lerp) + 벽 관통 방지(간단한 레이캐스트 거리 축소).

## 비주얼
- 밝고 파스텔한 톤. 하늘색 배경 그라디언트, 소프트 그림자(PCFSoft), 살짝의 안개.
- 캐릭터 착지/충돌 시 스쿼시&스트레치 스케일 애니메이션.
- 탈락 시 캐릭터가 위로 튀어오르며 사라지는 연출.

# 코드 품질 요구
- 하나의 파일 안에서 명확히 섹션 주석으로 구분: `CONFIG / AUDIO / UTILS / PHYSICS / CHARACTER / AI / LEVELS / GAME STATE / UI / MAIN LOOP`.
- 라운드는 `{ name, build(scene), update(dt), checkResult() }` 인터페이스를 가진 객체로 만들어 **추가/교체가 쉽게** 한다.
- 상단 `CONFIG` 객체에 튜닝 값(중력, 이동속도, 점프력, 봇 수, 라운드 시간 등)을 전부 모아둔다.
- 매직넘버 금지, 전역 오염 최소화, 라운드 전환 시 씬/이벤트 리스너 정리(메모리 누수 방지).

# 출력 규칙
1. 먼저 **10줄 이내**로 구현 방향을 요약한다.
2. 그다음 완성된 `jelly-dash.html` 전체 코드를 **하나의 코드블록**으로 출력한다. 생략(`// ...구현 생략`, `// TODO`) 절대 금지 — 모든 함수는 동작하는 실제 코드여야 한다.
3. 마지막에 아래 **자체 검증 체크리스트**를 항목별로 ✅/❌ 로 답한다. ❌가 있으면 그 부분 코드를 즉시 수정해서 다시 낸다.
   - [ ] import map 경로가 실제 존재하는 CDN 버전인가
   - [ ] 파일을 로컬에서 열었을 때 콘솔 에러 0개인가 (모듈/CORS 이슈 없음)
   - [ ] 3개 라운드 전부 시작→진행→결과까지 도달 가능한가
   - [ ] 봇이 끼임 없이 목표까지 이동하는가 (스턱 감지 후 리셋 로직 존재)
   - [ ] 탈락/통과 인원 수 계산이 항상 정확한가 (동점/전멸 예외 처리)
   - [ ] 라운드 전환 시 이전 씬 오브젝트와 리스너가 정리되는가
   - [ ] 포인터락 해제(ESC) 후 재진입이 되는가
   - [ ] 저사양에서도 동작하도록 파티클/그림자 상한이 있는가

# 금지
- 설명을 위한 부분 코드 나열 금지. 최종 전체 코드 1회만.
- "이후 확장하세요" 류의 미완성 안내 금지.

EVIDENCE & LIMITS

플레이 방법과 확인된 한계

실행 환경

키보드가 있는 PC를 기준으로 합니다. 작은 화면에서는 자동 실행하지 않고 조작 안내를 먼저 보여줍니다.

검증 범위

포트폴리오의 실행 연결과 전체화면 전환을 검수합니다. 게임의 모든 라운드 완주, 모든 예외 상황과 장시간 안정성까지 확인했다는 의미는 아닙니다.

남아 있는 제약

3D 화면 도구를 외부 서버에서 불러오므로 인터넷 연결이 필요합니다. 요청문에 적은 초당 60프레임(60FPS)은 화면을 부드럽게 보여주기 위한 목표이지, 모든 기기에서 측정한 성과가 아닙니다.

FROM IDEA TO SOMETHING REAL

봇 19명과 함께,
왕관을 향해 달려보세요.