리뷰용 설계안구현 전 · 승인 대기

CRAZY DICE — "그럴듯한 1회차" 빌드 플랜 🎲

콘셉트는 그대로. 지금 게임의 틀 안에서, "진짜 게임"처럼 보이고 플레이되는 첫 회차(1회차) 빌드로 다듬는 작업.

작성 2026-06-16 · 후추봇 🦎 · 현 라이브 → crazy-dice.pages.dev · 형 개선점 5개 + 유사 장르/원작 리서치 종합

한눈에 — 이 플랜의 핵심 한 방

형의 개선점 ①무기 다양성 · ②시작 무기 부족 · ③D20 과다는 사실 서로 다른 세 문제가 아니라 한 가지 변경으로 동시에 풀린다:

D20 주사위 → 10면 "크레이지 슬롯"(D10, 0–9)으로 줄이고, 그 10면을 전부 서로 다른 아키타입의 무기로 채운다.

슬롯 면 20 → 10
시작 무기 5종 → 10종 전부
공격 아키타입 2갈래 → 10갈래
원작 충실도 ↑ (카이토는 9면 룰렛)

+ ④ 타이틀 정리 & 설명 메뉴 분리, ⑤ 리롤 Q키, + 유사 장르에서 가져올 "1회차 완성감" 폴리시.

전제피벗이 아니라 폴리시

형 말 그대로 — 게임 내용을 바꾸는 게 아니라, 지금 룰렛-액션 로그라이크의 정체성을 유지한 채 "그럴듯하게" 완성도를 끌어올린다. 큰 규모 리팩터 없이, src/main.ts 단일 파일 안에서 만들고-고치는 기존 방식으로 충분히 효율적. 각 변경은 typecheck→build→헤드리스 검증→배포 루틴을 그대로 탄다.

진단지금 상태 (코드 확인)

무기 공격 = 사실상 2갈래

전투 코드는 meleeSweep()(호 그리기)와 fireProj()(직선 투사체) 딱 두 함수로 수렴. 관통·폭발·부메랑·부채꼴은 그 위의 변주일 뿐.

main.ts:482 meleeSweep · 513 fireProj · 634 performAttack switch

시작 덱이 다양성을 안 보여줌

시작 덱(D20)엔 낫·둔기·권총·창·쌍단검·꽝·잭팟만 있음. 활·화염·부메랑·수류탄·사슬낫·레일건 6종은 레벨업에 잠겨 1회차 초반엔 안 나옴 → "공격이 단조롭다"의 진짜 원인.

main.ts:148 DECK (20면) · 135 ALL_WEAPONS

타이틀 = 텍스트 벽

타이틀에 덱 구성 4줄 + 메커니즘 3줄 + 무기13종 + 조작 한 줄이 전부 박혀 있음. 호스트 index.html 하단도 설명 문단 6개. "프로토타입" 인상.

main.ts:2618 renderTitle · public/index.html:96–145

리롤 = R

레벨업 리롤이 R 키. WASD 손에서 멀고, 재시작도 R이라 의미 겹침.

main.ts:2941 rerollOffer · 2037 '리롤 (R)'

통찰원작 리서치가 방향을 정해줌

카이토 "크레이지 슬롯" 팩트체크 (출처 확인): 룰렛은 1~9 (9개)이고 0–9가 아니었음. 무기를 고를 수 없고, 정식 등장 무기는 단 3종 — #2 대낫(필살기 "사신의 원무곡" = 360° 회전 광역참), #3 로드/봉(피토우전), #4 소음 카빈(윤주전). 1·5~9는 토가시가 그린 적이 없어 우리가 채우는 게 오히려 정통. 그리고 "죽을 각오를 해야만 나오는 히든 번호"가 있다고 명시(Ging) → 우리 잭팟/특수 슬롯의 원전 근거.

즉 "원작과 같은 종류"의 정답은 20면 주사위가 아니라 ~10면 룰렛이다. 형의 직감(20면은 무리수)이 원작과도 맞아떨어진다. 그리고 장르 리서치의 결론 — "무기의 구분감은 그림이 아니라 히트박스가 공간/시간에서 움직이는 방식에서 나온다" — 우리는 그 아키타입들을 이미 코드로 갖고 있다. 잠금만 풀고 큐레이션하면 된다.

설계 ①②③10면 룰렛 = 무기 다양성 · 시작 툴킷 · D10 (통합)

D20 덱을 10면 슬롯(0–9)으로 바꾸고, 각 면을 겹치지 않는 아키타입의 무기 1종으로 채운다. 면마다 1개씩(중복 없음) → 카이토식 "10 중 1" 룰렛이라 매 굴림이 진짜로 다르고, 시작부터 풀 툴킷이 손에 들어온다. 기존 전투 코드를 거의 그대로 재사용하므로 리스크가 낮다.

추천 10면 로스터

#무기아키타입 (느낌)비고
0잭팟특수 · 초고속 난사원작 히든번호 기존
1권총 / 카빈원거리 단일 연사카이토 #4 기존
2대낫광역 호 스윕카이토 #2 기존
3둔기 / 로드강타 + 충격파 노바카이토 #3 기존
4레일건즉시 관통 라인기존(레벨업→시작)
5수류탄포물선 광역 폭발기존(레벨업→시작)
6화염방사근접 부채꼴 지속기존(레벨업→시작)
7부메랑던지고 회귀기존(레벨업→시작)
8사슬낫 / 플레일전방위 회전기존(레벨업→시작)
9꽝 (맨손)무기없음 · 패링/약탈코어 필러 기존

→ 아키타입 10갈래가 전부 다름: 단일연사 · 광역스윕 · 노바 · 관통라인 · 포물선AoE · 부채꼴 · 회귀 · 회전 · 특수난사 · 방어/약탈. 꽝과 잭팟은 코어 필러라 유지(꽝=패링·적무기 약탈 / 잭팟=원작 히든번호 오마주).

시작 룰렛에서 빠지는 창·쌍단검·활은 버리지 않고 레벨업 "면 교체" 풀로 남긴다(기존 성장 시스템 그대로). 레벨업은 이제 "기본 무기 해금"이 아니라 면 강화(Lv2) · 면 교체 · 덱 룰로 룰렛을 조각하는 역할에 집중.

온보딩(리서치 강력 추천): 무기가 매번 강제로 바뀌는 게임에선 개별 무기를 가르칠 수 없다 → 각 무기 장착 순간 "이름 + 한 단어 아키타입 태그"를 크게 플래시. 예: 레일건 — 관통, 수류탄 — 폭발. 이게 강제-랜덤 툴킷의 거의 유일하고 충분한 튜토리얼. (현재 이름만 띄움 → 태그 한 줄 추가)

손댈 곳: DECK(148) 10면 재구성 · finishRoll(809) · 정보화면 그리드 INFO_COLS 5×4→5×2(195, 2079, 2082) · 타이틀/도움말/README/design.md의 "D20·20면" 표기 전부 D10·10면으로.

설계 ④타이틀 정리 + "게임 설명(HOW TO PLAY)" 메뉴 분리

새 타이틀 (살아있게)

  • 큰 로고 + 회전하는 슬롯(D10) + 한 줄 태그라인만
  • 버튼 3개: 서바이벌 · 아레나 · 게임 설명
  • 덱 구성/메커니즘/무기13종/조작 설명 전부 제거
  • 호버/선택 피드백(확대·색·틱 사운드) — "진짜 게임" 신호

새 HOW TO PLAY 화면

  • 아이콘/섹션형, 5초 안에 스캔 가능 (벽글 금지)
  • 조작(WASD·마우스·클릭·회피·패링·Q 리롤·Tab 덱)
  • 핵심 한 줄: "넌 무기를 못 고른다 — 주사위가 고른다"
  • 10면 미리보기 + 패링/약탈/레벨업 짧게

구현은 기존 정보 오버레이(renderInfoScreen, INFO 패널, roundRect) 인프라를 재사용해 renderHelp() + 타이틀의 titleHelpBtn로 추가. 호스트 index.html 하단 설명 벽도 한 줄("조작은 게임 내 HOW TO PLAY")로 슬림화 — 게임답게 보이는 마무리.

손댈 곳: renderTitle(2618) 슬림화 + 버튼 추가 · 신규 renderHelp() · 버튼 rect(367 근처) · 입력 분기(2793,2833) · public/index.html 정리

설계 ⑤리롤 키 R → Q

레벨업 리롤을 Q로. WASD 왼손에서 바로 닿고, 재시작(R)과 의미가 안 겹침. 저위험 변경.

손댈 곳: keydown k==='r''q'(2941) · 버튼 라벨 '리롤 (R)'→'(Q)'(2037) · index.html 조작표(106) · 도움말 텍스트. 재시작 R(2942)은 유지.

설계 +유사 장르에서 더 가져올 것 (1회차 완성감)

리서치가 꼽은, "초기 빌드에 흔히 빠져 있고 효율 대비 효과가 큰" 항목들. 대부분 가시성/예측 가능성(임팩트가 아니라)에 관한 것.

🎯 핵심 (1회차에 권장)

  • 무기-스왑 연출 강화 — 슬롯 스핀 + 짧은 프리즈 + 색 플래시 + 아키타입 카드. 이 게임의 시그니처 순간.
  • 진짜 승리 화면 — 통계 리캡(시간·처치·굴린 무기). "끝나는 프로토타입"을 "클리어한 게임"으로.
  • 적 공격 텔레그래프를 서바이벌에도 (아레나엔 이미 있음) + 적 피격 화이트 플래시. 죽음이 "억울"하지 않고 "공정"하게.

✨ 여유되면

  • 히트스톱/셰이크를 무기 무게에 스케일 — 레일건=크게, 화염=거의 없음. 기존 시스템 재활용 = 공짜 구분감.
  • 내 공격 선딜/후딜 실루엣 + 머즐 플래시/리코일
  • 픽업 플레이어로 빨려옴 + 상승 피치 · UI 이징 · SFX 피치 랜덤(연사 기계음 방지)

설계 ◆1회차 "완결 구조"

서바이벌은 현재 무한(엔딩 없음)이라 "1회차를 깼다"는 감각이 안 난다. 아레나는 이미 방3 + 보스 + CLEAR 구조가 있음. 리서치 권장 = 보이는 구조(방 X/N) → 텔레그래프된 보스 1 → 진짜 승리화면.

형 결정 — 1회차 캠페인을 뭐로?

추천: 아레나를 정식 1회차 캠페인으로 승격(이미 구조 있음 → 저위험: 방 수/보스/승리 리캡만 다듬기). 서바이벌은 "무한 스코어 모드"로 유지.
대안: 서바이벌에 피날레(시간/웨이브 목표 → 보스 → 승리) 추가.

로드맵페이즈 (만들고-고치기, 단계마다 배포)

PHASE 1 — 핵심 재편

D20→D10 10면 룰렛 + 큐레이션 로스터 + 모든 "20면/D20" 표기 정리 + 정보화면 10면 그리드 + 장착 시 아키타입 태그. (점 ①②③ + 온보딩)

PHASE 2 — 프레젠테이션

타이틀 리디자인 + HOW TO PLAY 메뉴 + 리롤 Q + index.html 슬림화. (점 ④⑤)

PHASE 3 — 1회차 손맛 · 완성감

무기-스왑 연출 + 승리 리캡 화면 + 텔레그래프/히트플래시 + 주스 캘리브레이션. (유사 장르 추가점 + 완결 구조)

각 페이즈 끝에 typecheck → esbuild build → 헤드리스(playwright) 검증 → npm run deploy → 커밋/푸시. 기존 루틴 그대로.


✅ 형 결정 포인트 (이거만 정해주면 바로 구현 시작)

1. 슬롯 면 수

추천: D10 (0–9, 10면) — 형 "10종" 직감 + 실제 주사위(D10 존재) + 카이토 9면에 근접. 대안: 카이토 정통 9면 / 다른 수.

2. 10면 로스터

추천: 위 표의 10종(전부 기존 코드 재사용 = 빠르고 안전). 창·쌍단검·활은 레벨업 면교체로 잔존.
+ 완전 새 아키타입(오비탈 자동공전 · 호밍 · 지속 빔 · 대시 찌르기)을 1~2개 넣을까? (넣으면 신규 코드 → 약간 더 작업)

3. 1회차 캠페인

추천: 아레나 승격 vs 서바이벌 피날레 추가. (위 ◆ 참고)

4. 보너스 — 카이토 "절체절명 슬롯"

HP 위급할 때만 뜨는 히든 면(원작 충실 + 극적). 넣을지 / 잭팟으로 충분한지.

5. 페이즈 범위

Phase 1·2·3 전부 진행? 아니면 1·2만 먼저 보고 3은 플레이 후 결정?


부록 — 리서치 출처

카이토 크레이지 슬롯 (원작 충실성):

무기 아키타입 · 1회차 게임필 (유사 장르):

← Jace's Pages 허브로