--- id: wiki-2026-0508-power-creep title: Power Creep category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Power Creep, 파워 크립, 밸런스 인플레이션] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [game-design, balance, live-ops, monetization] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: design framework: live-ops --- # Power Creep ## 매 한 줄 > **"매 새 content는 매 old content보다 강해야 매 sells"**. Power creep은 매 live-service game에서 매 신규 unit/card/weapon이 매 기존보다 점진적으로 강해지는 매 balance drift 현상. 매 monetization pressure와 매 player engagement 사이 매 tension에서 발생. ## 매 핵심 ### 매 발생 mechanism - **매 economic incentive**: 매 신규 hero pull 유도 위해 매 stronger stats 부여. - **매 numeric inflation**: 매 HP/DMG 절댓값이 매 patch마다 매 5–15% 상승. - **매 ability complexity**: 매 신규 unit이 매 더 많은 keyword (cleave + lifesteal + immunity). - **매 retroactive obsolescence**: 매 old roster가 매 PvE/PvP에서 매 unviable. ### 매 증상 vs 매 healthy iteration - **Creep**: 매 new > old (strict dominance) → roster 축소. - **Sidegrade**: 매 new ≠ old (matchup-dependent) → roster 확장. - **매 Rotation**: 매 old를 매 explicitly retire (Hearthstone Standard). ### 매 응용 1. Hearthstone Standard rotation (yearly Set retire). 2. Genshin Impact 5-star sidegrade (element-niche). 3. League of Legends VGU + item rework. ## 💻 패턴 ### Numeric drift detection ```python # Patch-over-patch stat inflation tracker import pandas as pd def detect_creep(units_df: pd.DataFrame, baseline_patch: str) -> pd.DataFrame: base = units_df[units_df.patch == baseline_patch].set_index("name") latest = units_df.groupby("name").last() delta = (latest[["hp", "dmg"]] - base[["hp", "dmg"]]) / base[["hp", "dmg"]] return delta[(delta.hp > 0.1) | (delta.dmg > 0.1)].sort_values("dmg", ascending=False) ``` ### Sidegrade design constraint ```python # Enforce no strict dominance in unit pool def is_sidegrade(new_unit, pool): for old in pool: dominated = all(getattr(new_unit, s) >= getattr(old, s) for s in ["hp", "dmg", "speed"]) strictly = any(getattr(new_unit, s) > getattr(old, s) for s in ["hp", "dmg", "speed"]) if dominated and strictly: return False return True ``` ### Rotation calendar ```yaml # rotation.yaml — Standard format sets: - name: Core rotates: never - name: Eternal_2024 rotates: 2026-Q3 - name: Voyage_2025 rotates: 2027-Q3 ``` ### Catch-up mechanic ```python # Older units gain free re-tuning each major patch def catchup_buff(unit, age_patches): if age_patches >= 4 and unit.pickrate < 0.02: unit.dmg = round(unit.dmg * 1.08) ``` ### ELO-weighted balance ```python # Buff units underperforming at high ELO only def needs_buff(stats): return stats.high_elo_winrate < 0.47 and stats.low_elo_winrate > 0.50 ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Live PvP game | Sidegrade + rotation | | Gacha PvE | Controlled creep + catch-up banners | | Collectible TCG | Annual Standard rotation | | Single-player RPG | Creep OK (no competitive frame) | **기본값**: Sidegrade design + 매 rotation/catch-up safety net. ## 🔗 Graph - 부모: [[Game-Balance]] · [[Live-Ops]] - 변형: [[Sidegrade-Design]] · [[Rotation-Format]] · [[Catch-Up-Mechanic]] - 응용: [[Hearthstone]] · [[Genshin-Impact]] · [[League-of-Legends]] - Adjacent: [[Monetization]] · [[Retention-Curve]] · [[Meta-Game]] ## 🤖 LLM 활용 **언제**: balance patch note 분석, stat-drift detection, 매 design review. **언제 X**: 매 single-player narrative game (creep is acceptable). ## ❌ 안티패턴 - **매 Mudflation 무시**: 매 절댓값 inflation을 매 무한 허용. - **매 Pay-to-skip-only-creep**: 매 신규 unit을 매 paywall 뒤에서만 강하게. - **매 No retire path**: 매 old roster를 매 영구 obsolete 상태로 방치. - **매 매 patch마다 power 5%↑**: 매 compound inflation으로 매 design space 고갈. ## 🧪 검증 / 중복 - Verified (Schreiber & Romero "Game Balance" 2021, Riot dev blogs 2024–2025). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — power creep mechanism + sidegrade/rotation patterns |