게임 밸런싱 — 장르 프로파일 + 결정론적 시뮬레이터로 병목·인플레·난이도 절벽을 수치로 낸다. 트리거 "밸런스", "경제", "수치", "난이도".
Scanned 9/19/2026
Install to Claude Code
npx -y skills add snwlee/Nereus --skill balance --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Balance?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/snwlee-balance)More formats (shields.io, HTML) on the badges page.
---
name: balance
description: 게임 밸런싱 — 장르 프로파일 + 결정론적 시뮬레이터로 병목·인플레·난이도 절벽을 수치로 낸다. 트리거 "밸런스", "경제", "수치", "난이도".
---
# balance
nereus:common 규칙을 따른다. 담당 에이전트: economy-designer.
**엔진과 무관하다** — 로블록스든 Unity든 같은 절차다.
## 왜 시뮬레이터인가
밸런싱을 체크리스트로 하면 게이트가 사람 판단에 의존해 검증이 불가능해진다.
시뮬레이터는 결정론적이라 (1) 회귀 테스트가 성립하고 (2) 수식을 고쳤을 때 무엇이 달라졌는지 보이고
(3) finish 게이트가 "밸런스가 깨졌다"를 기계적으로 판정할 수 있다.
## 1. 장르 프로파일을 먼저 고른다
```js
import { loadProfile, listProfiles } from "../../lib/profiles.mjs";
const profile = loadProfile("sim-tycoon"); // 또는 "obby-platformer"
```
쓸 수 있는 장르는 `node plugins/nereus-game/lib/profiles.mjs` 로 확인한다.
알 수 없는 장르는 **던진다**. 기본값으로 떨어지지 않는다 — 다른 장르로 밸런싱하면 수치가
그럴듯한 채로 틀리고, 그건 수치가 없는 것보다 나쁘다.
장르가 정하는 것: 핵심 루프(`loop`), 봐야 할 지표(`metrics`), **주 실패 양상**(`balance.failureMode`),
절벽 임계(`balance.cliffRatio`).
## 2. 경제를 데이터로 옮긴다
밸런싱 대상을 `{ income, stages }` 로 정규화한다. 이 형태로 못 옮기면 아직 설계가 안 끝난 것이다.
```js
const economy = {
income: { base: 10, growth: 1.1 }, // 턴당 기본 수입과 증가 계수
stages: [{ name: "1단계", cost: 50 }, { name: "2단계", cost: 300 }],
};
```
도메인별로 `stages` 가 뜻하는 것이 다르다 — 타이쿤은 업그레이드 단계, 오비는 구간,
전투는 파워 티어, 진행은 레벨 구간이다. 비용 축만 같으면 된다.
## 3. 돌린다
```js
import { simulate } from "../../lib/balance-sim.mjs";
const r = simulate({ profile, economy, turns: 60, seed: 1 });
```
`seed` 를 고정한다. 같은 입력이면 같은 출력이어야 게이트로 쓸 수 있다.
## 4. 결과를 읽는다
| 지표 | 뜻 | 대응 |
|---|---|---|
| `bottlenecks` | 시뮬 종료까지 **못 깬 단계 이름** | 그 단계 비용을 내리거나, 그 앞에 수입원을 추가한다. 타이쿤의 1순위 |
| `inflation` | 턴당 수입 증가율 − 턴당 비용 증가율 | 양수가 지속되면 후반이 무의미해진다. 비용 곡선을 가파르게 하거나 자원 싱크를 넣는다 |
| `cliffs` | 앞 단계 대비 비용 배수가 `cliffRatio` 를 넘는 단계 인덱스 | 중간 단계를 끼워 넣는다. 오비의 1순위 — 이탈이 여기서 난다 |
| `clearedStages` / `totalStages` | 도달률 | 목표 턴 안에 몇 단계까지 가는가 |
`primaryFailure` 가 `bottleneck` 이면 병목을, `cliff` 면 절벽을 먼저 본다. 장르가 정한다.
## 5. 도메인별 추가 점검
시뮬레이터가 못 보는 축은 사람이 본다. (출처: CCGS `balance-check` 의 판단 기준)
- **전투** — 티어별 DPS·처치 시간, 지배 전략(하나만 쓰면 되는 것)이 있는가
- **경제** — 수도꼭지와 배수구가 짝을 이루는가. 싱크 없는 파우셋은 반드시 인플레를 만든다
- **진행** — 데드존(아무 보상 없이 긴 구간)과 파워 스파이크가 의도된 것인가
- **루트** — 희귀도 분포, 천장(pity) 유무, 인벤토리 압박
## 6. 게이트
수치를 낸 것으로 끝내지 않는다. 기준을 태스크의 완료 조건에 적는다 —
예: "`bottlenecks` 가 비어 있고 `cliffs` 가 2개 이하". 기준 없는 수치는 판정이 아니다.
## 하지 말 것
- 난수를 `Math.random` 으로 쓰지 않는다. 시드 기반만 쓴다.
- 알 수 없는 장르를 기본 프로파일로 대체하지 않는다.
- 시뮬 결과를 근거 없이 "괜찮아 보인다"로 넘기지 않는다. 임계를 먼저 정한다.
## 확률 아이템은 여기서 끝나지 않는다
경제 설계가 **유료 확률 아이템**(알·펫 뽑기, 상자, 스핀)을 만들면 `nereus-game:compliance` 로 넘긴다.
확률 공개는 **법적 요건**이라 밸런스 판단과 분리한다 — 밸런스는 우리가 정하고, 규정은 남이 정한다.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!