미니게임

물수제비

길게 눌러 힘을 모으고 놓아서 돌을 물 위로 튕긴다 — 튈 때마다 파문이 겹쳐 퍼진다.

프롬프트를 복사해 claude.ai 에 붙여 넣으면 바로 실행됩니다 · Opus 5.5 · Effort High 기준

물수제비 실행 화면

조작 길게 눌러 힘 모으기 → 놓아서 던지기 · 키보드는 Space

전체 화면으로

무대를 누르면 키보드로도 조작할 수 있습니다

권장 모델
Claude Opus 5.5 · Effort High
화면비
화면 맞춤 (넓은 화면 16:9 · 폰 3:4)
조작
길게 눌러 힘 모으기 → 놓아서 던지기 · 키보드는 Space
결과물
HTML 파일 하나 · 따로 설치할 것 없음

프롬프트

Claude 가 읽는 제작 지시문입니다. 맨 위 [바꿀 곳]의 값을 바꿔 붙여 넣어도 됩니다.

길게 눌러 힘을 모으고 놓아서 돌을 물 위로 튕기는 브라우저 미니게임 「물수제비」를 HTML 파일 하나로 만들어 줘.

핵심 아이디어: 먹으로 그린 듯한 저녁 호수 위로 납작한 돌이 튕겨 나간다. 돌이 물을 칠 때마다 그 자리에서 타원 파문이 세 겹씩 퍼지고, 튕김 간격이 점점 좁아지면서 앞서 생긴 파문과 새 파문이 겹쳐 물 위에 고리 무늬가 쌓인다. 힘 게이지의 「알맞은 힘」 칸에서 놓으면 돌이 13~14번 튀고, 벗어나면 10번 이하로 끝난다. 돌 5개를 던져 점수를 더한다.

[바꿀 곳]
- 판마다 던지는 돌 수: 5
- 돌 하나의 대기 제한(누르지 않고 기다리는 시간 + 누르고 있는 시간 합): 7초
- 힘 게이지 한 왕복(0→1→0) 시간, 돌 순서대로: 2.0, 1.8, 1.6, 1.4, 1.2초
- 알맞은 힘 칸: 가운데 0.85, 반폭은 돌 순서대로 0.10, 0.08, 0.06, 0.045, 0.035
- 점수: 튕김 1번에 10점, 날아간 거리 1m 에 1점
- 색(바탕은 모두 채도 낮은 색):
  - 하늘 한지색 #EDE7DA, 해 원판 #F1DDC4
  - 먼 산 세 겹(먼 것부터) #C4C0B4, #A39F94, #7E7B73
  - 물 위쪽(수평선) #C6CAC2, 물 아래쪽 #7D8986
  - 파문 밝은 고리 #F5F2EA, 파문 어두운 고리 #4F5B58
  - 돌 #3E3C38, 돌 테두리 빛 #8C877C, 물가 자갈 #2F2E2B
  - 강조색 둘뿐: 힘 채움 주홍 #C8553D, 알맞은 힘 칸 황 #D9A441
  - 글자 #2B2A27, 흐린 글자 #6F6B63

[크기]
S = 화면 짧은 변(CSS 픽셀). W·H = 창 너비·높이.
- 수평선 y = 0.36H. 그 위는 하늘과 산, 아래는 모두 물이다(물이 화면의 64%).
- 돌이 물에 닿는 선(접촉선) y = 0.70H.
- 가로 축척 pxPerM = min(W/40, S×0.045). 1920×1080 에서 48px/m(화면 가로 40m), 390×844 세로 폰에서 9.75px/m(가로 40m).
- 높이 축척 zPx = S×0.06 px/m(높이는 가로보다 과장해 튕김 포물선이 잘 보이게). 1080 높이에서 1m = 65px.
- 던지는 자리: 세계 x=0 m 이 화면 x = 0.18W, 돌 높이 1.0m.
- 돌: 납작한 타원, 가로 반지름 0.022S, 세로 반지름 0.009S(1080 에서 24×10px). 물 위 그림자 타원은 같은 가로 크기, 높이가 높을수록 옅게(알파 0.35→0.08).
- 파문 고리 하나의 최대 가로 반지름 maxR = 0.22S(1080 에서 238px), 세로 반지름 = 가로 × 0.30(물을 비스듬히 내려다본 납작한 타원). 선 굵기 0.004S(최소 1.5px).
- 힘 게이지: 던지는 돌을 둘러싼 호, 반지름 0.07S, 두께 0.012S. 아래쪽 60°가 비어 있는 300° 호이고, 힘 0 은 왼쪽 아래 끝, 힘 1 은 오른쪽 아래 끝이다. 알맞은 칸은 그 호 위에 황색 띠로 미리 칠해 둔다.
- 점수 숫자 높이 0.07S, 안내 글자 0.032S, 결과 글자 0.045S.
- 소리 단추: 오른쪽 위, 지름 0.06S(최소 36px), 가장자리에서 0.03S 띄움.

[장면]
화면 전체가 먹으로 칠한 저녁 호수다. 가운데 작은 그림이 아니라, 하늘·산·물이 창 끝까지 채운다.
- 하늘: #EDE7DA 바탕에 한지 섬유 — 창 크기가 바뀔 때마다 화면 밖 캔버스에 길이 0.02S~0.08S 의 가는 곡선 300개를 알파 0.04~0.07 의 #8C877C 로 한 번 그려 두고 매 프레임 붙인다. 해 원판(반지름 0.08S, #F1DDC4)은 수평선 바로 위 화면 가로 70% 자리.
- 먼 산 세 겹: 시드 난수로 만든 부드러운 능선. 각 겹은 아래로 갈수록 투명해지는 세로 그라디언트로 칠해 먹이 번진 듯 수평선에 녹아든다. 카메라가 움직이면 먼 겹은 0.05배, 가운데 0.1배, 가까운 겹 0.18배로 따라간다(시차).
- 물: 수평선 #C6CAC2 에서 아래 #7D8986 로 세로 그라디언트. 산 그림자가 수평선 바로 아래에 위아래로 뒤집혀 알파 0.18 로 비친다. 가로로 긴 흐린 물결 줄 12개(길이 0.1S~0.3S, 알파 0.06)가 천천히 옆으로 흐른다.
- 물가: 세계 x<0 쪽 화면 아래 왼쪽에 자갈 비탈(#2F2E2B 의 크고 작은 타원 40개, 농담을 달리 해 먹 점처럼). 세계 좌표에 붙어 있어 카메라가 따라가면 왼쪽으로 사라진다.
- 돌: 납작한 타원이 날면서 돈다 — 세로 반지름을 sin(회전각)으로 0.4~1배 사이에서 바꿔 납작한 돌이 도는 느낌을 낸다. 위쪽 가장자리에 #8C877C 의 가는 빛 테.
- 튕김: 돌이 접촉선에 닿는 그 프레임에 (1) 그 자리에 파문 한 벌을 만든다 — 고리 3개가 0, 0.15, 0.30초 차이로 태어나 각자 수명 3.2초 동안 커진다. 반지름 r = maxR × (1 − (1 − u)²), u = 나이/3.2. 알파 = 세기 × (1 − u)^1.5, 세기 = clamp(그때 가로 속도/15, 0.35, 1). (2) 물방울 5개(반지름 0.004S, 위로 튀었다가 0.4초 안에 떨어져 사라짐). (3) 화면은 흔들지 않는다.
- 파문 겹침(가볍게): 물 위 간섭을 픽셀 계산이나 파동 시뮬레이션으로 만들지 않는다. 고리마다 타원 선 두 줄만 긋는다 — 먼저 모든 어두운 고리(반지름 ×0.94, #4F5B58, 알파 ×0.5, 보통 합성), 그다음 모든 밝은 고리(#F5F2EA, 알파 ×0.45, globalCompositeOperation 'lighter'). 밝은 고리끼리 엇갈리는 자리가 저절로 더 밝아져 간섭 무늬처럼 보인다. 알맞은 힘으로 던진 돌의 파문은 첫 고리만 황 #D9A441 을 알파 ×0.5 로 섞는다. 살아 있는 고리는 최대 72개, 넘치면 가장 오래된 것부터 지운다.
- 가라앉음: 돌이 마지막에 가라앉는 자리에 고리 4개짜리 파문 한 벌(세기 1)과 그 위에 결과 글자 「14번 · 56m」가 0.045S 크기로 떠올라 1.2초 머문다. 바로 아래 0.032S 로 이유 한 줄: 알맞은 힘이면 「알맞은 힘!」, 칸보다 약하면 「힘이 모자랐다」, 강하면 「힘이 넘쳤다」.
- 카메라: 세계 x 를 화면으로 옮길 때 화면 x = 0.18W + (x − camX) × pxPerM. 돌이 날 때 목표 camX = max(0, 돌 x − 0.44W/pxPerM) — 돌이 화면 가로 62% 근처에 머문다. camX 는 매 갱신 1 − exp(−6·dt) 비율로 목표를 따라간다. 돌이 가라앉고 1.2초 뒤 0.8초 동안 easeInOutCubic 으로 camX=0 으로 돌아간다. 파문은 세계 좌표에 남아 있어 카메라가 돌아갈 때 지나간 자리의 고리가 다시 보인다.
- 머리 화면 표시(HUD): 위 가운데 점수(0.07S, #2B2A27). 왼쪽 위에 남은 돌 5개를 작은 타원 아이콘으로(쓴 돌은 알파 0.25). 최고 점수는 점수 아래 0.032S 흐린 글자 「최고 412」. 그 밖의 글자·라벨은 없다.

시그니처 순간: 페이지가 열리고 0.6초에 구경 모드의 첫 돌이 알맞은 힘으로 날아가 1.17초에 화면 가로 약 43% 물 위를 처음 친다. 그 뒤 튕김 간격이 12m → 9m → 6.6m → 4.9m 로 좁아지며 4.5초에는 화면 가로 15~85% 의 물 위에 파문 5벌 이상(고리 12개 이상)이 겹쳐 밝은 교차 무늬를 만들고, 가장 큰 고리는 가로 반지름 0.2S 안팎이다.

[조작]
- 키보드: Space(또는 Enter·ArrowUp)를 누르고 있으면 힘을 모으고, 떼면 던진다. M 은 소리 켜고 끄기. Space 의 페이지 스크롤은 막는다.
- 터치·마우스: 화면 아무 곳(소리 단추 제외)을 누르고 있으면 힘을 모으고, 떼면 던진다. 누른 채 손가락이 움직여도(끌기) 계속 누르는 것으로 친다. pointerdown 을 누름, pointerup·pointercancel 을 뗌으로 본다. 폰 세로 화면에서 엄지 하나로 된다.
- 힘 게이지: 누르는 순간 0 에서 시작해 한 왕복 시간의 절반 동안 1 까지 오르고, 다시 0 으로 내려오기를 되풀이한다(세모파). 힘의 바닥은 0.05.
- 키를 누르고 있을 때 반복해서 오는 keydown(e.repeat)은 새 누름으로 치지 않는다.
- 같은 프레임에 눌렀다 뗀 짧은 입력도 놓치지 않는다 — 누름을 기록해 두고, 그 프레임에 뗌이 오면 힘 0.05 로 바로 던진다.
- 시작·다시 시작에 쓴 그 누름은 힘 모으기에 쓰지 않는다(그 누름이 떼질 때까지 무시). 다만 돌을 기다리는 때가 시작될 때 이미 새로 누르고 있는 입력이 있으면 그 순간부터 힘을 모은다(너그러움).
- 돌이 날거나 가라앉는 동안의 누름은 무시하되, 다음 돌을 기다리는 때까지 이어서 누르고 있으면 위 규칙대로 그때부터 힘을 모은다.
- 입력과 화면 반응은 같은 프레임: 누르는 그 프레임에 게이지 호가 나타나고, 떼는 그 프레임에 돌이 손을 떠난다.

[규칙]
- 한 판 = 돌 5개. 돌마다 흐름: 기다림(aim) → 힘 모음(charge) → 날기(fly) → 가라앉음(sink, 1.2초) → 돌아옴(return, 0.8초) → 다음 돌.
- 던질 때 가로 속도 vx = 6 + 힘 × 14 (m/s), 세로 속도 vz = 1.0 m/s, 높이 1.0m, 중력 9.8 m/s². 공기 저항 없음.
- 돌이 높이 0 이하로 내려오며(vz<0) 물에 닿으면: 그때 vx < 2.5 m/s 면 가라앉는다. 아니면 튕김 1번 — 점수 +10 을 바로 더하고, vx 에 잔존율(알맞은 힘 0.86, 아니면 0.80)을 곱한 뒤 vz = 0.25 × vx 로 다시 뜬다. 높이는 0 으로 맞춘다.
- 알맞은 힘 = 놓은 순간의 힘이 「가운데 ± 반폭」 안.
- 가라앉을 때 날아간 거리(m, 버림)를 점수에 더한다.
- 기대값(검산한 값 — 이대로 나와야 한다):
  - 알맞은 힘 0.85: vx 17.9 → 튕김 14번, 비행 약 5.5초, 거리 약 55.8m, 이 돌 점수 140 + 55 = 195.
  - 알맞은 칸 끝 0.75 → 13번, 0.95 → 14번.
  - 칸 밖 힘 1.0: vx 20 → 10번. 힘 0.5 → 8번. 힘 0.05 → 5번.
  - 첫 접촉까지 0.565초, 그 뒤 튕김 한 번의 체공 = 2 × 0.25 × vx / 9.8 ≈ 0.051 × vx 초, 거리 ≈ 0.051 × vx² m.
- 난이도: 돌이 뒤로 갈수록 게이지가 빨라지고(2.0 → 1.2초) 알맞은 칸이 좁아진다(반폭 0.10 → 0.035). 첫 두 돌(대략 처음 20초)은 칸이 넓고 느려서 처음 해도 거의 맞힌다. 실패는 없고, 놓치면 튕김이 적을 뿐이며 그 이유가 결과 글자로 보인다.
- 대기 제한: 돌 하나에 기다림+힘 모음이 합쳐 7초를 넘으면 — 힘을 모으는 중이면 그 힘으로 자동으로 던지고, 아니면 그 돌은 「놓침」(0점)으로 0.5초 글자를 띄우고 다음 돌로 넘어간다. 남은 시간은 게이지 아래 가는 줄(#6F6B63, 알파 0.4)로 줄어들며 보인다.
- 판 끝: 5번째 돌이 가라앉고 1.2초 결과 글자가 머문 뒤(이동안 state 는 'play') 'over'. 입력이 하나도 없으면 돌마다 7.5초 → 37.5초에 'over'(40초 안).
- 보통 플레이 한 판: 돌 하나에 약 9~10초, 한 판 45~55초.
- 'over' 화면: 물 장면은 그대로 두고 그 위 가운데에 반투명 한지색 판(#EDE7DA, 알파 0.85, 너비 min(0.8W, 0.9S))에 총점(0.09S), 최고 점수, 돌 5개의 「튕김·거리」 한 줄씩, 맨 아래 「눌러서 다시」. 뜨는 그 프레임부터 키·탭을 받아 새 판을 연다.

[구경 모드]
- 열리자마자 'demo'. 컴퓨터가 돌 5개를 던지고, 끝나면 시드를 하나 늘려 다시 던지기를 끝없이 되풀이한다.
- 첫 화면이 비어 있지 않게: 시작하는 순간 물 위에 이미 파문 4벌이 있다 — 세계 x = 14, 20, 25, 29m 에 나이 2.2, 1.6, 1.0, 0.5초. 그리고 첫 돌은 이미 힘을 모으는 중(힘 0.25 에서 오르는 중)이라 0.6초에 힘 0.85 로 놓인다. 이 첫 돌은 반드시 알맞은 힘이다 — 시그니처 순간이 첫 5초 안에 나온다.
- 그 뒤 돌마다 컴퓨터는 기다림에서 0.5~1.0초 쉬었다가 누르고, 목표 힘 = 0.85 + 시드 난수 ±0.12 에 닿는 첫 순간 놓는다(첫 돌은 열에 여덟, 마지막 돌은 열에 셋 꼴로 알맞은 힘 — 판 전체로 대략 절반). 사람과 똑같은 규칙·물리로 날린다.
- 화면 위 가운데(0.2H)에 「눌러서 시작」(0.05S)과 그 아래 「길게 눌러 힘 · 놓아서 던지기」(0.032S). 글자는 1.6초 주기로 알파 0.55~1 사이를 천천히 숨 쉰다. 구경 모드의 점수는 보여 주지 않는다.
- 첫 키나 탭이면 그 즉시 새 판 'play'(카메라 0, 파문은 남겨 둔 채 첫 돌 기다림).

[소리]
- WebAudio 로 합성한 소리만. 첫 입력에서 AudioContext 를 만들거나 resume 하고, 그 전에는 소리를 내지 않는다. 마스터 음량 0.5.
- 힘 모음: 사인파 낮은 음(140Hz → 힘 1 에서 260Hz), 음량 0.03. 알맞은 칸에 들어설 때 짧은 딸깍(삼각파 1200Hz, 30ms).
- 던짐: 흰 소음을 대역 통과(800 → 2400Hz 로 0.2초 쓸기)로 거른 휙 소리.
- 튕김: 짧은 「톡」 — 사인파 0.08초, 음높이는 오음 음계(궁상각치우: 1, 9/8, 81/64, 3/2, 27/16 배) 를 튕김 번호대로 올라간다(기준 392Hz, 다섯 번마다 한 옥타브 위). 음량은 그때 세기 × 0.25. 거기에 흰 소음 0.05초를 얇게 섞는다.
- 가라앉음: 「퐁」 — 사인파 300 → 90Hz 를 0.25초 동안 내림.
- 오른쪽 위 소리 단추(동그라미 안에 스피커 모양을 선으로 그림, 꺼지면 사선)와 M 키로 끄고 켠다. 단추를 누른 것은 게임 입력으로 치지 않는다.

[구현]
- HTML 파일 하나로 만든다. 바깥 파일·글꼴·라이브러리·네트워크 요청을 쓰지 않는다(미리보기 칸에서 막힌다).
- 첫 <script> 맨 앞에 CONFIG 객체를 두고 [바꿀 곳]의 값과 이 글에 나온 숫자(속도·크기·색·시간)를 이름 붙여 모은다.
- 게임 진행은 requestAnimationFrame 의 타임스탬프로 고정 시간 간격(1/120초) 갱신을 돌린다. 한 프레임에 밀린 시간은 0.1초까지만 따라잡는다. setTimeout·setInterval·CSS 애니메이션으로 움직이지 않는다.
- 난수는 시드 고정 난수(mulberry32 등)만 쓰고, 판마다 시드를 하나씩 늘린다. Math.random 은 쓰지 않는다.
- 캔버스는 늘 창 전체 크기다. 창 크기가 바뀌면 다시 맞추고, 게임판 비율이 정해진 게임은 판을 가운데 두되 남는 곳에도 배경을 그린다(빈 띠를 두지 않는다). 스크롤이 생기지 않게 한다. devicePixelRatio 는 2 까지만 선명도에 반영한다.
- 키보드와 터치를 둘 다 받는다. 키 입력은 window 의 keydown·keyup 으로 받아, 화면을 먼저 누르지 않아도 첫 키가 먹게 한다. 짧게 눌렀다 뗀 키도 놓치지 않게 keydown 때 처리하거나 기록해 둔다. 터치는 페이지 스크롤·확대가 일어나지 않게 막는다(touch-action: none).
- 점수·상태를 window.__game = { state, score } 에 두고 매 프레임 갱신한다. state 는 'demo'(구경 모드)·'play'·'over' 셋 중 하나, score 는 숫자다.
- 열리자마자 'demo' — 컴퓨터가 스스로 플레이하는 구경 모드와 「눌러서 시작」 안내. 첫 키 입력이나 탭이면 새 판 'play'. 판이 끝나면 'over' 화면, 거기서 키 입력이나 탭이면 새 판. 'over' 화면은 뜨자마자 키 입력·탭을 받는다(입력을 막는 대기 시간을 두지 않는다). 끝나는 연출이 있으면 그동안은 state 를 'play' 로 두고, 연출이 끝나 입력을 받을 수 있게 된 때 'over' 로 바꾼다.
- 플레이 중 아무 입력이 없으면 늦어도 40초 안에 판이 끝난다.
- 브라우저 저장소(localStorage·sessionStorage·IndexedDB·쿠키)를 쓰지 않는다 — 미리보기 칸에서 막혀 오류가 난다. 최고 점수는 메모리에만 둔다.
- 소리는 WebAudio 로 합성한 소리만, 첫 입력 뒤에만 낸다. 화면 구석에 소리 끄기 단추(M 키도)를 둔다.
- 탭이 숨으면 멈추고 돌아오면 이어서 한다.
- 글자는 시스템 글꼴만 쓴다: 'Pretendard', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans KR', sans-serif.
- 모든 함수·상수를 먼저 정의하고, 시작(초기화와 첫 requestAnimationFrame)은 스크립트 맨 끝에서 한 번만 부른다.
- 콘솔에 오류가 나지 않게 한다. 스스로 대조하는 표는 console.table, 어긋남은 console.warn 으로만 낸다.

이 작품만의 구현:
- 상태 둘을 나눈다: 바깥 state('demo'·'play'·'over')와 돌 하나의 단계(aim·charge·fly·sink·return). 구경 모드와 플레이는 같은 update·물리 함수를 쓰고, 입력원만 다르다(사람 입력 대 컴퓨터 입력).
- 물리는 고정 간격 갱신 안에서만: x += vx·dt, z += vz·dt, vz −= 9.8·dt. 접촉 판정은 z ≤ 0 이고 vz < 0 일 때 한 번. 같은 접촉을 두 번 세지 않게 튕긴 뒤 z = 0, vz > 0 이 되게 한다.
- 시작할 때 검산 함수 simulateThrow(power, sweet) 를 같은 물리로(dt 1/120) 돌려 console.table 로 대조한다. 기대값과 어긋나면 console.warn:
  - simulateThrow(0.85, true): 튕김 13~15, 비행 4.8~6.2초, 거리 50~62m
  - simulateThrow(1.0, false): 튕김 9~11
  - simulateThrow(0.05, false): 튕김 4~6
  - 알맞은 칸 안 최소 튕김(0.75) > 칸 밖 최대 튕김(1.0) — 13 > 10
  - 입력 없는 한 판 길이 = 돌 수 × (7 + 0.5) ≤ 40초
  - 고리 최대 개수 72
- 파문 그리기는 가볍게: 고리 하나 = ctx.ellipse 두 번(어두운 줄·밝은 줄). 화면 밖(가로 반지름만큼 넘어선) 고리는 건너뛴다. 그림자 블러·필터를 쓰지 않는다.
- 하늘·한지 섬유·산 능선은 창 크기가 바뀔 때만 화면 밖 캔버스에 다시 그리고, 매 프레임은 그것을 붙인다(산은 시차만큼 옮겨 붙이고, 가로로 두 장 이어 붙여 끊기지 않게).
- 'demo'·'over' 에서의 시작은 keydown·pointerdown 이벤트 처리기 안에서 바로 한다(다음 갱신을 기다리지 않는다). 'over' 로 바뀌는 순간에는 그때 눌려 있던 누름만 「소비됨」으로 표시해 그 누름이 새 판을 열지 않게 하고, 그 뒤에 오는 새 keydown·pointerdown(e.repeat 제외)은 그 즉시 새 판을 연다.
- visibilitychange 로 숨으면 갱신을 멈추고, 돌아올 때 밀린 시간을 버린 뒤(타임스탬프를 다시 잡는다) 이어 간다. 힘 모으던 중이면 그 누름은 뗀 것으로 치지 않고 그대로 둔다.
- 결과 HTML 은 60KB 안팎을 넘지 않게 간결하게 쓴다.

[하지 말 것]
- 물 전체를 픽셀 단위 파동 방정식·WebGL 셰이더로 계산하지 않는다 — 느리고 코드가 길어져 깨지기 쉽다. 겹침은 고리 선의 'lighter' 합성만으로 낸다.
- 사람·손·팔 그림, 플랫 캐릭터, 스틱맨, 새 떼, 물고기를 그리지 않는다 — 물과 돌과 파문에 눈이 가야 한다.
- 장식 입자(반짝이·불꽃·떠다니는 먼지)를 뿌리지 않는다. 튕김마다 물방울 5개가 전부다 — 입자가 많으면 파문이 묻힌다.
- 발광(shadowBlur·glow)·렌즈 플레어·비네팅을 넣지 않는다 — 먹 그림의 담백함이 깨진다.
- 넓은 바탕에 남청색·짙은 파랑·고채도 색을 쓰지 않는다. 물도 회녹색 먹빛이다. 강조색은 주홍·황 둘뿐.
- 태극 문양·한복 그림·궁궐 같은 상투적 장식을 넣지 않는다 — 한국적인 맛은 한지 섬유와 먹 농담, 오음 음계로만 낸다.
- 화면 모서리에 제목·버전·설명 라벨을 붙이지 않는다. HUD 는 점수·최고 점수·남은 돌·소리 단추뿐이다.
- 이름 있는 상업 게임의 이름·캐릭터·그림을 쓰지 않는다.
- 'over' 에서 입력을 막는 대기 시간을 두지 않는다 — 뜨자마자 다시 시작할 수 있어야 한다.
- 화면을 흔들거나 슬로모션을 넣지 않는다 — 튕김 박자가 흐트러진다.
- 「~해도 된다」식 예외로 빠지지 않는다. 기대값이 맞지 않으면 숫자를 몰래 바꾸지 말고 console.warn 으로 알린다.

사용 방법

필요한 것: claude.ai 계정 — 무료 계정에서도 Claude Opus 5.5 를 고를 수 있습니다

  1. claude.ai 에서 새 대화를 엽니다.
  2. 모델 메뉴에서 Claude Opus 5.5 를 고르고, 같은 메뉴의 Effort(답변 깊이)를 High 로 둡니다.
  3. 복사한 프롬프트를 붙여 넣고 전송합니다. 결과로 나온 HTML 파일을 브라우저로 열면 바로 해 볼 수 있습니다.

추가 요청 예시

결과가 나온 뒤 같은 대화에서 이어서 요청하면 해당 부분만 수정됩니다.

  • 돌이 몇 번 튀었는지 화면 가운데에 크게 세어 줘
  • 저녁 호수를 눈 내리는 겨울 호수로 바꿔 줘
  • 판이 끝나면 가장 많이 튄 기록을 따로 보여 줘

미니게임

같은 분류의 다른 작품

미니게임 전체 보기

모든 게임·3D 보기 AI 레시피 전체 RSS 로 새 글 받기