Communitygithub.com

Waipjy/ClaudeGame

「Pour Decisions(落沙模擬 × Roguelike Deckbuilder)」의 규칙, 재료(vial), 촉매(catalyst), 점수 공식, 목표 점수 곡선, 상점 경제, 난이도 사다리, 튜토리얼을 설계하거나 수정할 때, 또는 밸런스 시뮬레이션을 돌리거나 새로운 카드/유물을 검토할 때 사용합니다.

ClaudeGame란 무엇인가요?

이 스킬은 복잡한 게임 디자인 문서를 구조화하고, 밸런스 조정을 위한 시뮬레이션 기반 의사 결정을 지원하며, 새로운 콘텐츠(재료, 촉매)를 체계적으로 검토할 수 있는 프레임워크를 제공합니다. 주로 게임 디자이너와 밸런서를 대상으로 하며, Claude Code, Cursor, Codex 등 AI 에이전트와 함께 사용되도록 설계되었습니다. 스킬은 결정론적 시뮬레이션, 점수 공식(chips × mult), 목표 곡선 생성, 상점 경제 분석, 난이도 계층 설계, FTUE(처음 사용자 경험) 가이드라인을 포함한 13개 섹션의 종합적인 디자인 레퍼런스를 제공합니다. 또한 새로운 재료나 촉매를 추가하기 전에 반드시 확인해야 할 10가지 체크리스트를 제공하여, 게임 내 밸런스 붕괴를 사전에 방지합니다. 이 스킬은 '참고(references)' 디렉토리 아래에 점수 수학, 밸런스 시뮬레이션 아키텍처, 콘텐츠 원형(archetype)에 대한 상세 문서를 연결하여, 디자이너가 데이터 기반으로 결정을 내릴 수 있도록 돕습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/Waipjy/ClaudeGame/tree/HEAD/.claude/skills/game-design

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

게임 디자인 — Pour Decisions(落沙模擬 × Roguelike Deckbuilder)

먼저 docs/design/00_concepts.md와 docs/research/02_competitor_patterns.md를 읽으세요. 이 스킬은 실행 가능한 규칙만 제공합니다. 수학 및 시뮬레이션 세부 사항은 references/에 있습니다:

  • references/scoring-math.md: chips × mult 공식, 덧셈/곱셈 중첩, 목표 곡선 템플릿, Balatro 실제 수치
  • references/balance-sim.md: Monte Carlo 밸런스 시뮬레이션 아키텍처, 봇 레벨, 지표, 강력 전략 탐지, 보고서 형식
  • references/content-archetypes.md: 본 게임의 시너지 원형(archetype) 초안, 희귀도 할당량, 촉매 예시

0. 다섯 가지 최고 원칙(충돌 시 이 기준으로 판단)

  1. 시뮬레이션은 완전히 결정론적( deterministic )이어야 함 : 동일한 seed, 동일한 재료 투하 위치 → 동일한 결과, 픽셀 단위로 일치해야 합니다. 결정론적이지 않으면 기술이 없으며, 밸런스 시뮬레이션, 리플레이, 미리보기도 불가능합니다.
  2. 모든 반응은 '보이고, 셀 수 있어야' 함 : 반응이 발생한 위치에 숫자가 표시되고, 유형별로 고정된 색상과 사운드 효과가 있어야 합니다. 플레이어가 패배했을 때 이유를 설명할 수 있어야 합니다(Roguebook: 플레이어가 자신이 어떻게 졌는지 이해하지 못하면 게임을 포기합니다).
  3. 깊이는 규칙의 수가 아닌 조합에서 옴 : 표면 규칙은 매우 적어야 하며(BotW 화학 엔진: 원소가 재료를 바꾸고, 원소가 원소를 바꾸며, 재료는 재료를 바꾸지 않음), 깊이는 100–200개의 오브젝트 상호작용에서 나옵니다.
  4. 모든 오브젝트는 고유한 용도가 있어야 하며, 단순히 강력해서는 안 됨(Slay the Spire GDC 2019): 전략을 왜곡할 정도로 강력하고 조합이 쉬운 효과는 제한해야 합니다. 강력하지만 조합이 어렵고 적극적으로 추적해야 하는 콤보는 존재할 수 있습니다—싱글 플레이어 게임에서는 플레이어가 가끔 '사기'를 치는 것을 허용합니다.
  5. 데이터가 방향을 정하고, 플레이 테스트가 감각을 결정함 : 자동 시뮬레이션으로 수치 문제를 잡고, 인간 플레이 테스트로 재미를 판단합니다(Noita: 기술 지표는 검증하기 쉽지만, '재미'는 플레이 테스트로만 확인할 수 있습니다).

1. 핵심 루프와 턴 구조

턴(Round):손패(vials) 뽑기 → 1개 선택 + 재료 투하 위치/각도 선택 → 시뮬레이션이 안정화(settle)되거나 최대 tick에 도달할 때까지 실행
           → 이번 재료 투하 반응 점수 → 턴 점수에 누적 → 재료 투하 횟수 소진 → 목표 점수와 비교
턴 사이:상점(vial / catalyst / 업그레이드 / 비커 개조) → 다음 턴
한 게임(Run):8개의 '실험'(Ante) × 3턴(소/대/Boss) = 24턴
  • 안정화(settle)를 단위로 점수를 계산하며, 실시간 반응 속도에 의존하지 않습니다—AI 팀의 약점(조작감)을 피하고 결과를 예측 가능하게 만듭니다.
  • 안정화 상한: 시뮬레이션 tick 상한(예: 600 tick), 화면에서 최대 4–6초 동안 재생되며 ×2/×4로 빨리 감기 가능; 이후 강제 종료.
  • 비커 상태는 재료 투하 간에 유지됨(동일 턴 내), 턴 종료 시 비우는 것은 디자인 노브(knob)입니다: 유지 = 장기 계획 깊이, 비움 = 가독성. 프로토타입에서는 먼저 비우고, 이후 유지 버전을 테스트합니다.
  • Boss 턴 = 하나의 규칙 수정(예: "물이 얼음이 됨" "중력이 한 번 반전됨"), Balatro Boss Blind에 해당; 턴 시작 전에 반드시 공지해야 합니다.

2. 점수 디자인(chips × mult)

공식(표시 순서 = 계산 순서, 플레이어가 따라갈 수 있음):

이번 재료 투하 점수 = (Σ 반응 chips + 추가 chips) × (기본 mult + Σ +mult) × Π(×mult)
  • chips : 각 반응의 기본 점수(반응 유형과 반응량에 따라, 로그 또는 구간을 사용하여 '많이 부울수록 좋다'를 방지).
  • +mult : '변화'에서 옴—이번에 발생한 다른 반응 유형의 수, 연쇄 깊이(반응이 반응을 유발).
  • ×mult : 희귀 촉매 또는 특수 조건에서만 제공. ×mult는 가장 강력한 통화이므로 가장 인색하게 지급해야 함.
  • 종료 애니메이션은 순서대로 재생: 반응이 하나씩 chips 점프 → mult 누적 → ×mult가 하나씩 곱해짐(Balatro식 tally), 큰 숫자는 느리게, 진동 추가.

규칙:

  • 덧셈 vs 곱셈: n개의 +mult 오브젝트는 선형 성장; k개의 ×1.5 오브젝트는 1.5^k. 초기에는 덧셈 위주, 후기에는 곱셈으로 전환되는 것은 자연스러운 빌드 곡선입니다—common은 덧셈, rare는 곱셈을 제공하도록 합니다.
  • 덧셈의 한계 가치 체감(+4 mult는 base 20에서 +20%이지만 base 100에서는 +4%에 불과), 이는 '언제 곱셈으로 전환할까'를 플레이어 결정으로 만듭니다. 좋은 점이므로 유지합니다.
  • 점수 > 1e6부터 천 단위 약어 사용, > 1e11부터 과학적 표기법 사용; 내부는 double 사용, Endless는 log 공간 또는 BigNumber 사용.
  • 자세한 공식, 예시 숫자: references/scoring-math.md.

3. 목표 점수 곡선

  • Balatro 흰색 말뚝(ante 1–8): 300 / 800 / 2,000 / 5,000 / 11,000 / 20,000 / 35,000 / 50,000; 소/대/Boss = ×1 / ×1.5 / ×2. 각 ante 배율은 ×2.7에서 점차 ×1.4로 감소—플레이어 전투력은 초기에는 빠르게 성장하고 후기에는 둔화되기 때문.
  • 본 게임 접근법: 직관으로 곡선을 정하지 마세요. 밸런스 시뮬레이션의 '적절한 봇(greedy)'으로 1,000+ 게임을 실행하고, 각 ante의 점수 중앙값 M(a)를 구한 다음, 목표 T(a) = M(a) × k(a)로 설정합니다. k는 초기 0.5(관대)에서 후기 0.9(빡빡)로 점진적으로 증가합니다.
  • 목표: 흰색 말뚝에서 적절한 봇 승률 30–50%, 강한 봇 80–95%, 무작위 봇 < 5%. 인간의 첫 승리는 3–8 게임 사이.
  • Endless: ante 9 이후 초지수 성장(Balatro 약 x^(x²) 규모), 빌드가 결국 붕괴하도록 하여 '몇 라운드까지 버텼다'는 공유 포인트를 제공합니다.

4. 재료(vial)와 촉매(catalyst)디자인

  • 재료는 '카드'입니다: 각 병 = 하나의 재료 + 양(픽셀 수) + 가능한 수식어(온도, 순도, 마법 부여).
  • 촉매는 '조커/유물'입니다: 수동, 상시, 화학 또는 점수 규칙을 수정. 상한 슬롯(예: 5)을 두어 플레이어가 선택해야 합니다.
  • 오브젝트 역할 분류(모든 새 오브젝트는 하나의 주요 역할을 태그해야 함):
    • Enabler(시동기) : 특정 원형을 가능하게 함("기름이 불 속에서 추가 불꽃을 생성함")
    • Payoff(수익) : 원형이 성립된 후 점수를 제공함("연소 반응이 발생할 때마다 +3 mult")
    • Bridge(연결) : 두 원형을 연결함("증기도 연소 반응으로 간주")—빌드가 단일 경로가 되지 않도록 함
    • Economy(경제) : 돈, 할인, 추가 상점 슬롯
    • Scaling(성장) : 사용할수록 강해짐("턴 종료 시, ≥3가지 반응이 있으면 이 촉매는 영구적으로 +1 mult")
    • Utility/Consistency(안정) : 핸드 조작, 리롤, 미리보기, 비커 청소
  • build-defining vs filler : rare 슬롯은 주로 build-defining(규칙 수정, 플레이어가 '방향 전환'을 하게 함); common은 filler(숫자, 안정)를 배치하지만 각 filler는 여전히 '언제 선택할지' 명확한 용도가 있어야 합니다.
  • 희귀도(시작점, 이후 시뮬레이션으로 조정): Common 70% / Uncommon 25% / Rare 5%(Balatro 가중치); Legendary는 상점에 나오지 않고 특별 이벤트로만 획득.
  • Enabler를 버프하고, 완성된 엔진을 버프하지 마세요(Luck be a Landlord 1.1): 약한 원형은 먼저 '입문 부품'을 제공하여 플레이어가 초기에 투자할 용기를 갖게 하고, '비상구'—원형 실패 시 전환할 수 있는 오브젝트를 제공합니다.
  • 게임 시작 시 버프 부품을 강제로 제공하지 마세요. 시야가 좁아질 수 있습니다(tunnel vision).
  • 원형 및 희귀도 할당량 표: references/content-archetypes.md.

5. 상점 경제와 리롤

시작 수치(Balatro 기준, 이후 시뮬레이션으로 조정):

  • 턴당 수입: 클리어 고정 $3–5 + 남은 재료 투하 횟수 × $1 + 이자($5 보유 시 $1, 최대 $5, 미확인이 Balatro 정확한 값). 이자는 '저축 vs 소비' 긴장을 만들므로 유지.
  • 가격대: Common $2–5, Uncommon $5–8, Rare $8–10; 판매 가격 = 구매 가격 ÷ 2 무조건 내림, 최소 $1.
  • 리롤: 시작 가격 $5, 매번 +$1, 새 상점 진입 시 초기화.(Balatro 규칙)
  • 상점 슬롯: 2개 오브젝트 + 1–2개의 '재료 팩'(3개 중 1개 선택) + 1개의 업그레이드(voucher 유형, $10, 영구 규칙 변경).
  • 경제 건강 검사(시뮬레이션 출력):
    • 적절한 봇이 각 상점에서 평균 1–2개 구매 가능; 연속 3개 상점에서 아무것도 살 수 없음 = 경제 너무 빡빡함.
    • 경제형 오브젝트의 승률 기여도는 수익형 오브젝트보다 높아서는 안 됨—그렇지 않으면 '돈부터 벌자'가 유일한 해결책이 됨.
    • 리롤 횟수 분포: 중앙값 1–2회; 봇의 최적 전략이 매장당 리롤 ≥5회라면 리롤이 너무 싸거나 슬롯이 너무 나쁜 것.

6. 게임 길이와 템포(목표 30–60분)

  • 예산: 24턴 × (3–4회 재료 투하 × 15–25초 + 상점 30–60초) ≈ 35–50분. 측정 후 재료 투하 횟수를 조정하고, 안정화 속도는 조정하지 않습니다.
  • 3턴(ante 하나)마다 '새로운 것'이 하나 있어야 함: Boss 규칙, 상점 새 희귀도 해금, 새 재료 등장.
  • 처음 3턴은 6분 이내에 완료해야 함: 초보자가 '재미있는지' 판단하는 시간은 매우 짧습니다(Peglin 데모 중간 플레이 시간 67분은 데모 전체 참고 값).
  • 실패는 빨리: 실패한 게임은 ante 2–4에서 끝나야 하며 ante 7이 아니어야 합니다. '40분 플레이 후에야 빌드가 안 좋다는 것을 알게 되는 것'을 방지.

7. 난이도 사다리(Stakes / Ascension)

  • 8–10단계, 누적 방식, 각 단계마다 규칙 하나만 추가(Slay the Spire Ascension 20, Balatro 8개 Stake 모두 누적).
  • 본 게임 후보(쉬움에서 어려움 순): 목표 ×1.2 → 남은 재료 투하 시 돈 지급 안 함 → 상점 슬롯 하나 감소 → 비커 시작 시 오염 픽셀 있음 → 재료 양 -10% → 희귀 촉매 확률 절반 → Boss 규칙 두 개 → 목표 성장 곡선을 Purple 등급으로 변경.
  • 난이도 사다리는 데이터 도구이기도 함: 다양한 계층의 승률은 더 세밀한 밸런스 정보를 제공합니다(Slay the Spire GDC).
  • 각 계층 해금은 '이전 계층에서 한 번 승리' 조건; 메뉴에 표시하여 플레이어에게 장기 목표를 제공.

8. 메타 진행(Meta-progression, pay-to-win 금지)

  • 영구 진행은 수평적 해금 위주: 새 재료, 새 촉매, 새 비커 모양, 새 시작 덱, 도감. 영구 수치 보너스는 금지(예: "모든 불 +5%").
  • 해금 순서는 튜토리얼 역할: 처음에는 2–3개의 원형만 열고, 몇 게임 플레이 후 더 복잡한 원형을 엽니다(Roguebook: 진행으로 복잡한 메커니즘을 연기).
  • 모든 게임(패배 포함)에서 무언가를 해금하거나 진행해야 함(Ball x Pit '플레이어 시간 존중': 거의 모든 게임에서 새 청사진).
  • 올드비/스트리머를 위한 '전체 해금' 옵션 제공(Balatro도 추가), 대가로 해당 저장 파일은 업적 미인정.
  • 유료 DLC는 콘텐츠(새 재료 팩)만 가능, 힘(파워)은 불가.

9. 혼돈 시뮬레이션을 기술처럼 보이게 만들기

  1. 결정론 : 고정 timestep, 정수 또는 고정 소수점, 고정 업데이트 순서(아래에서 위로; 좌우 스캔 방향은 tick 홀짝으로 결정, RNG 사용 안 함), 모든 무작위성은 run seed에서 파생된 PRNG에서 가져옴. 동일 입력에 대해 두 번 실행하여 hash 비교, CI 테스트에 포함.
  2. 미리보기 : 재료 투하 전에 낙하 궤적과 '어떤 재료와 접촉할지' 아이콘 표시; 결정론적이므로 배경 복사본에서 처음 N tick을 시뮬레이션하여 '예측 반응 아이콘'을 만들 수 있음. 전체 점수 미리보기는 촉매/아이템('시험관 거울')을 위한 리소스로 남겨두고, 공짜로 제공하지 않음.
  3. 반응 용어집은 고정되어 있고 적어야 함 : 각 반응마다 하나의 색상 + 아이콘 + 피치; 동일한 반응은 하나의 팝업 숫자로 집계("연소 ×37 → +185"), 픽셀마다 숫자가 튀지 않도록 함.
  4. 인과 관계 선 : 연쇄 반응은 가는 선이나 섬광으로 '누가 누구를 유발했는지' 연결하고, 연쇄 깊이는 큰 글씨로 표시(×2, ×3…), 이는 편집 하이라이트이기도 함.
  5. 변동성 제어 : 재료 투하 위치 차이는 점수에 유의미한 영향을 미쳐야 하지만, 동일 위치의 결과는 안정적이어야 함. '기술 격차' 측정 = 최적 위치 봇 점수 ÷ 무작위 위치 봇 점수, 목표 ≥ 2; < 1.3은 위치 선정이 의미 없음을 의미.
  6. 플레이어가 볼 수 있는 것만 시뮬레이션 : Noita는 이끼 성장, 느린 용해와 같은 미세한 효과가 아무도 주목하지 않는다는 것을 발견; 점수나 화면을 변경하는 반응에 리소스를 투자.
  7. 시뮬레이션이 게임 플레이를 방해할 때는 게임 플레이 우선(Noita): 치트 사용 가능(예: 반응이 재료 투하 후 X tick 내에서만 점수 계산, 입자 수 상한).

10. FTUE / 튜토리얼(시스템형 게임)

  • 첫 번째 게임은 고정 seed와 고정 핸드 사용: 첫 재료 투하 = 모래(재료 투하 배우기), 두 번째 = 물(반응 배우기: 모래+물→진흙), 세 번째 = 불이 기름을 만남(연쇄와 mult 배우기). 각 투하는 한 가지만 가르칩니다.
  • 비커로 가르치고, 텍스트로 가르치지 마세요: 텍스트 양이 적으면 10+ 언어 번역 비용과 AI 텍스트 노출 부담도 줄어듭니다.
  • '반응 도감'(codex): 처음 발생한 반응을 자동으로 기록하고 잠시 하이라이트, 플레이어가 스스로 발견 = 재미(Roguebook: 시너지 발견은 핵심 재미).
  • 각 vial/촉매 툴팁에는 'X와 반응함' 아이콘 목록이 표시되고, 텍스트에 의존하지 않음.
  • 촉매와 상점은 두 번째 턴부터 개방; Boss는 ante 1 끝부터 개방.
  • 첫 번째 게임은 이길 수 있지만, 진행이 첫 게임 승리에 의존하지 않음.

11. 플레이 테스트 방법과 지표

  • 방법: 블라인드 테스트(설명 없음) → 처음 15분 think-aloud → 이후 조용히 관찰 → 종료 후 3가지 질문: "어떻게 졌나요?" "가장 짜릿했던 순간은?" "어디가 이해되지 않았나요?". 녹화.
  • HSU 플레이 테스트: 매번 1–2개의 가설만 검증하고, 사전에 docs/design/playtests/YYYY-MM-DD.md에 작성.
  • 필수 수집 지표(원격 측정은 로컬 JSON에 기록, 플레이 테스트 버전에서 활성화):
    • 첫 반응 시간, 첫 ×mult 이해 시간(곱셈을 적극적으로 추적하는지 확인)
    • 게임당 사망 ante 분포, 게임 길이, 턴당 시간
    • 자발적으로 두 번째 게임을 시작한 비율(가장 중요한 단일 지표)
    • '왜 졌는지' 답변 정확도(가독성 지표, 목표 ≥ 70%)
    • 오브젝트 툴팁 본 횟수 vs 구매 횟수(이해 못 함 vs 원하지 않음)
  • 이벤트 형식: run_start / pour{vial,x,angle,reactions[],score} / shop{offered[],bought[],rerolls} / run_end{ante,cause,build[]}.
  • '슈퍼 플레이 테스터' 편향 주의: 가장 친숙한 사람의 데이터는 일반 플레이어를 대표하지 않음(Slay the Spire GDC).

12. 밸런스 시뮬레이션(요약; 세부 사항은 references/balance-sim.md 참조)

  • 밸런스 시뮬레이션은 sim/(Python 또는 headless C# 동일한 규칙 테이블)에서 실행, 규칙 데이터(재료, 반응, 촉매)는 동일한 JSON/CSV를 사용, Unity와 sim이 공유하여 두 곳이 어긋나는 것을 방지.
  • 봇 레벨: Random / Greedy(각 단계에서 예상 점수가 가장 높은 선택) / Lookahead(MCTS 또는 beam search로 재료 투하+구매 선택).
  • 수치 변경 시마다 최소 1,000 게임 × 각 봇 실행; 보고서는 docs/design/balance/YYYY-MM-DD_<주제>.md에 저장.
  • 강력 전략 경보:
    • 단일 오브젝트 '획득 시 승률 − 기준 승률' > +10 포인트
    • 단일 원형이 승리 게임의 > 40% 차지 (목표: 상위 5개 원형이 각각 10–30% 사이)
    • 특정 오브젝트가 greedy 봇에서 등장 시 획득률 < 3% → 죽은 카드
    • 강한 봇의 흰색 말뚝 승률 > 98% → 전체 너무 쉬움
  • 시뮬레이션이 이상한 전략을 발견 = 신호, 먼저 버그인지 확인(Google 연구: 에이전트의 이상한 행동은 종종 실제 조정 매개변수 오류를 드러냄).
  • 수정 시 우선 숫자(비용, 희귀도, 보너스 값)를 조정하고, 다음으로 조건을 변경하고, 마지막에 재작업(LocalThunk: 대부분의 수정은 숫자 변경).

13. 새 vial / 촉매 검토 체크리스트

새로운 오브젝트를 제출하기 전에 각 항목을 확인하고, 오브젝트의 데이터 시트 비고에 기록:

  • 한 문장으로 용도와 '언제 선택할지' 설명 가능
  • 주요 역할(Enabler/Payoff/Bridge/Economy/Scaling/Utility)과 소속 원형을 태그함
  • 효과를 ≤ 15개 영어 단어 또는 1줄 아이콘으로 표현 가능; 새 키워드가 필요 없거나, 새 키워드가 ≥ 3개의 오브젝트가 공유
  • 효과는 '볼 수 있음': 트리거 시 화면 피드백(글자 팝업/섬광/사운드 효과)
  • 결정론적: seed 처리되지 않은 무작위성 도입 없음; frame rate에 의존하지 않음
  • 점수 계층 정확: common은 ×mult 제공 금지; ×mult 제공은 rare+ 또는 달성하기 어려운 조건 필요
  • 기존 최강 3개 오브젝트 조합과 시뮬레이션 실행, > 10× 점수 폭주 없음(또는 폭주가 의도적이고 달성하기 어려운 경우)
  • 기존 오브젝트를 무용지물로 만들지 않음(cannibalize)—동일 원형의 다른 오브젝트 획득률 전후 변화 확인
  • 약세 상황에 탈출구 있음: 이 오브젝트를 선택했지만 원형이 완성되지 않은 경우, 최소한 filler 역할을 하거나 팔 수 있음
  • 가격과 희귀도가 동일 역할 오브젝트와 일치
  • 텍스트가 현지화 테이블(key)에 포함됨, 독일어/러시아어 팽창 +35% 후에도 공간에 맞음
  • 성능: 트리거 시 최악의 경우 픽셀 양에서도 목표 FPS 유지
  • 1,000 게임 시뮬레이션 실행: 획득률 5–40%, 승률 차이 ±10pp 이내(의도적인 build-defining rare가 아닌 경우)

출처

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬