Files
2nd/10_Wiki/Topics/AI_and_ML/숨겨진 스탯(Hidden Stats).md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

6.7 KiB
Raw Blame History

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-숨겨진-스탯-hidden-stats 숨겨진 스탯 (Hidden Stats) 10_Wiki/Topics verified self
Hidden Stats
Concealed Attributes
Internal Modifiers
Crit-Roll Stats
none A 0.85 applied
game-design
rpg
mechanics
balance
transparency
2026-05-10 pending
language framework
typescript game-systems

숨겨진 스탯 (Hidden Stats)

매 한 줄

"매 보이지 않는 number 가 매 visible 결과 의 형성". 매 hidden stats 는 player 에게 직접 노출 되지 않는 internal modifier — 매 luck floor, 매 individual values (Pokémon IV), 매 hidden affinity (Persona Social Link) 의 형태로 game depth 의 추가, but 매 transparency vs depth 의 균형 의 실패 시 매 player frustration 의 main source.

매 핵심

매 정의

  • Hidden stat: 매 game state 에 존재 but UI 에 직접 표시 되지 않는 numeric attribute.
  • Visible stat: ATK, HP, Speed 등 매 player 에 명시.
  • Derived display: damage = f(ATK, DEF, hidden_crit, RNG) — 매 player 가 결과 만 봄.

매 사용 사례 (전형)

  • Pokémon: IV (031), EV, Nature 의 hidden multiplier.
  • Diablo / PoE: monster pack-size variance, magic-find hidden roll.
  • XCOM: "scamming" 방지 의 RNG seed 의 hidden lock.
  • Persona / Fire Emblem: Social Link / Support 의 internal threshold.
  • Souls 시리즈: poise, hyperarmor frame-window 의 unlisted.
  • Dwarf Fortress: 매 모든 stat 의 hidden 의 default — 매 reputation 의 parametric.

매 design rationale

  1. Depth without overload: UI 의 cluttering 회피.
  2. Replayability: roll variance → 매 2번째 playthrough 의 다른 경험.
  3. Mystery as gameplay: discovery 의 reward.
  4. Anti-min-max: optimization 의 ceiling 의 unclear.

매 dark side

  1. Perceived unfairness: "매 같은 stat 인데 왜 졌지?".
  2. Wiki dependency: 매 datamining 의 force.
  3. Tutorial 의 confusion: "매 왜 이번에는 효과 가 다르지?".

매 응용 (system 설계)

  1. Pity timer (gacha) — hidden累積 카운터.
  2. Difficulty rubber-banding — 매 hidden adaptive difficulty.
  3. Drop rate boost — first-clear bonus.
  4. Combo/streak modifier — recent-action window.

💻 패턴

Pattern 1 — IV system (Pokémon-like)

interface CreatureStats {
  baseHP: number; baseATK: number; baseDEF: number;
  iv: { hp: number; atk: number; def: number };  // 031, hidden
  ev: { hp: number; atk: number; def: number };  // 0252, hidden until trained
  nature: Nature;                                 // multiplier ±10%
}

function effectiveHP(c: CreatureStats, level: number): number {
  return Math.floor(((2 * c.baseHP + c.iv.hp + Math.floor(c.ev.hp / 4)) * level) / 100) + level + 10;
}

// Player sees only effectiveHP — IVs leaked via "Hyper Trainer" or judge-NPC.

Pattern 2 — Pity timer (gacha)

class PitySystem {
  private pulls = 0;          // hidden
  private softPity = 75;
  private hardPity = 90;

  pull(baseRate = 0.006): boolean {
    this.pulls++;
    let rate = baseRate;
    if (this.pulls >= this.softPity) rate += 0.06 * (this.pulls - this.softPity);
    if (this.pulls >= this.hardPity) rate = 1;
    if (Math.random() < rate) { this.pulls = 0; return true; }
    return false;
  }
}
interface Bond {
  rank: number;            // visible 110
  exp:  number;            // hidden 0999, threshold per rank
  affinity: number;        // hidden multiplier 0.5..1.5
}

function gainBond(b: Bond, action: ActionTag): void {
  const base = TABLE[action] ?? 1;          // hidden table
  b.exp += Math.floor(base * b.affinity);
  if (b.exp >= NEXT_RANK[b.rank]) { b.rank++; b.exp = 0; }
}

Pattern 4 — Crit-roll with hidden floor

function damageRoll(atk: number, def: number, hiddenLuck = 0): number {
  const base = Math.max(1, atk - def);
  const variance = 0.85 + Math.random() * 0.30;     // 0.85..1.15
  const luckyRoll = Math.random() < (0.05 + hiddenLuck);
  return Math.floor(base * variance * (luckyRoll ? 2 : 1));
}

Pattern 5 — Adaptive difficulty (DDA)

class HiddenDDA {
  private playerSkill = 0.5;  // 0..1, hidden
  recordOutcome(playerWon: boolean) {
    this.playerSkill = this.playerSkill * 0.9 + (playerWon ? 1 : 0) * 0.1;
  }
  enemyHpScale(): number { return 0.7 + 0.6 * this.playerSkill; }
}

Pattern 6 — Loot magic-find

function rollItem(baseTable: ItemDrop[], hiddenMF = 0): ItemDrop | null {
  const roll = Math.random() * (1 + hiddenMF);
  let acc = 0;
  for (const item of baseTable) { acc += item.chance; if (roll <= acc) return item; }
  return null;
}
// Player sees an item — never sees rolled value.

Pattern 7 — Telemetry (debugging hidden stats)

function logHidden(event: string, payload: Record<string, unknown>) {
  if (DEBUG_HIDDEN) console.table(payload);   // dev-only build flag
  analytics.send(event, payload);              // server-side, never to client UI
}

매 결정 기준

상황 Hidden? Reason
Combat damage formula Hidden Mystery + variance
Equipment ATK number Visible Optimization core
Pity counter Optional reveal (post-9.0) 매 player goodwill
Difficulty modifier Hidden Anti-gaming
RNG seed Hidden (often) Anti-scumming

기본값: 매 visible if player decision-relevant; 매 hidden if narrative-immersion or replay variance.

🔗 Graph

🤖 LLM 활용

언제: 매 hidden-stat schema 의 design review, 매 telemetry event 의 schema generation. 언제 X: 매 player-facing wiki 의 spoiler — 매 designer intent 의 위반.

안티패턴

  • Hidden + no telemetry: 매 balance 의 검증 불가능.
  • Total hidden: 매 player agency 의 박탈. 매 2-3 visible "anchors" 의 필요.
  • Late reveal as patch: 매 hidden 의 UI 노출 의 sudden 변경 — 매 trust 의 destruction.
  • Hidden + RNG-stack: 매 chains 의 perceived unfair (e.g. hidden crit × hidden dodge × hidden block).

🧪 검증 / 중복

  • Verified (Bulbapedia IV docs; Genshin Impact pity datamine; Persona 5 Royal social link tables).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — IV/Pity/DDA pattern set