AI 전투 밸런스 시뮬레이터 (TODO F) #12

Merged
gahusb merged 2 commits from feature/balance-simulator into main 2026-06-09 01:52:08 +09:00
Owner

요약

카드/적 데이터(data/*.json)를 입력으로 전투를 몬테카를로로 N회 자동 시뮬레이션해
승률·평균 턴·OP 카드 리포트를 출력하는 오프라인 Node CLI를 추가한다. (TODO 항목 F)

변경 사항

  • tools/sim-balance.mjs — 시뮬레이터 본체
    • 전투 엔진을 JS로 재현(gen-slaydeck Lua 미러): 에너지 3·드로우 5·방어 우선 차감·결정적 적 의도 사이클·승패·턴 상한(100)
    • 플레이어 휴리스틱 정책: 치사 가능 시 공격 몰빵 → 적 공격 의도면 방어 후 공격 → 적 방어 의도면 공격 우선 (에너지 효율순)
    • 시드 PRNG(mulberry32)로 재현성 확보, OP 탐지(같은 종류 내 효율이 중앙값 1.5배↑ 플래그)
    • CLI: node tools/sim-balance.mjs [N] [--seed S] (기본 N=2000, seed=1)
  • tools/sim-balance.test.mjsnode:test 단위 테스트 10종(applyDamage·정책·엔진·집계)
  • 설계/계획 문서 docs/superpowers/specs|plans/2026-06-09-balance-simulator*.md

데이터 공유 / 동기화

  • 카드·적 수치는 D에서 만든 data/cards.json·data/enemies.json를 그대로 읽음(단일 소스).
  • 전투 규칙 로직은 Lua(런타임)와 JS(시뮬)에 중복 재현되어 있어, 규칙 변경 시 양쪽 동기화 필요(파일 상단 주석 명시).

검증

  • node --test tools/sim-balance.test.mjs → 10/10 통과
  • node tools/sim-balance.mjs 2000 → 리포트 정상 출력
  • 결정성: 동일 시드 2회 실행 출력 동일(diff 없음)
  • 데이터 반영: 적 HP 45→300 변경 시 평균 턴 5.6→39.6으로 변동
  • 밸런스 신호: 현 슬라임은 승률 100%(의도 데미지가 낮아 HP를 키워도 위협이 안 됨) → 메이플 IP로 카드/적을 디벨롭할 때 이 도구로 밸런싱

범위 밖

  • 상태이상·드로우 등 새 효과, 다중 적, 로그라이크 메타(E), 메이커 런타임 연동.

🤖 Generated with Claude Code

## 요약 카드/적 데이터(`data/*.json`)를 입력으로 전투를 몬테카를로로 N회 자동 시뮬레이션해 승률·평균 턴·OP 카드 리포트를 출력하는 오프라인 Node CLI를 추가한다. (TODO 항목 F) ## 변경 사항 - `tools/sim-balance.mjs` — 시뮬레이터 본체 - 전투 엔진을 JS로 재현(gen-slaydeck Lua 미러): 에너지 3·드로우 5·방어 우선 차감·결정적 적 의도 사이클·승패·턴 상한(100) - 플레이어 휴리스틱 정책: 치사 가능 시 공격 몰빵 → 적 공격 의도면 방어 후 공격 → 적 방어 의도면 공격 우선 (에너지 효율순) - 시드 PRNG(mulberry32)로 재현성 확보, OP 탐지(같은 종류 내 효율이 중앙값 1.5배↑ 플래그) - CLI: `node tools/sim-balance.mjs [N] [--seed S]` (기본 N=2000, seed=1) - `tools/sim-balance.test.mjs` — `node:test` 단위 테스트 10종(applyDamage·정책·엔진·집계) - 설계/계획 문서 `docs/superpowers/specs|plans/2026-06-09-balance-simulator*.md` ## 데이터 공유 / 동기화 - 카드·적 수치는 D에서 만든 `data/cards.json`·`data/enemies.json`를 그대로 읽음(단일 소스). - 전투 규칙 로직은 Lua(런타임)와 JS(시뮬)에 **중복 재현**되어 있어, 규칙 변경 시 양쪽 동기화 필요(파일 상단 주석 명시). ## 검증 - `node --test tools/sim-balance.test.mjs` → 10/10 통과 - `node tools/sim-balance.mjs 2000` → 리포트 정상 출력 - 결정성: 동일 시드 2회 실행 출력 동일(diff 없음) - 데이터 반영: 적 HP 45→300 변경 시 평균 턴 5.6→39.6으로 변동 - **밸런스 신호**: 현 슬라임은 승률 100%(의도 데미지가 낮아 HP를 키워도 위협이 안 됨) → 메이플 IP로 카드/적을 디벨롭할 때 이 도구로 밸런싱 ## 범위 밖 - 상태이상·드로우 등 새 효과, 다중 적, 로그라이크 메타(E), 메이커 런타임 연동. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gahusb added 2 commits 2026-06-09 01:44:01 +09:00
data/*.json을 입력으로 전투를 몬테카를로 N회 시뮬 → 승률·턴·OP 카드 리포트.

- 전투 엔진 JS 재현(gen-slaydeck Lua 미러): 에너지3·드로우5·방어우선차감·결정적 의도·승패·턴상한
- 플레이어 휴리스틱 정책: 치사 우선 → 적 공격의도 시 방어 → 공격 우선, 에너지 효율순
- 시드 PRNG(mulberry32)로 재현성, OP 탐지(kind별 효율 중앙값 1.5배↑ 플래그)
- CLI: node tools/sim-balance.mjs [N] [--seed S]
- node:test 단위 테스트 10종(applyDamage·정책·엔진·집계)
- 검증: 현 데이터 승률 100%(슬라임 약함 신호), 적 HP 45→300 시 평균턴 5.6→39.6(데이터 반영)
- 전투 규칙은 Lua와 중복이라 동기화 주석 명시

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gahusb merged commit 3be5e85c94 into main 2026-06-09 01:52:08 +09:00
gahusb deleted branch feature/balance-simulator 2026-06-09 01:52:11 +09:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gahusb/maplecontest#12