--- id: wiki-2026-0508-월드-오브-워크래프트-world-of-warcraft title: 월드 오브 워크래프트(World of Warcraft) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [WoW, World of Warcraft, Blizzard MMO] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [mmo, game-design, blizzard, case-study, retention] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: lua framework: wow-addon-api --- # 월드 오브 워크래프트 (World of Warcraft) ## 매 한 줄 > **"매 21년 운영 = endgame loop의 끊임없는 reinvention"**. 2004 출시 후 2026 현재까지 11개 expansion (가장 최근: The War Within → Midnight 예정), MAU 가 격감과 부활의 cycle 을 반복하면서도 살아남은 이유는 raid · M+ dungeon · arena · classic re-release 의 4-pronged endgame, 그리고 LFG / cross-realm / WoW Token 같은 retention infra 에 있다. ## 매 핵심 ### 매 endgame pillars - **Raid**: 8-man (Heroic) / 20-man (Mythic) 보스 progression — tier set, mythic-only mounts. - **Mythic+ Dungeon**: scalable 5-man, weekly chest, leaderboard (raider.io ecosystem). - **PvP Arena & Battleground**: rated ladder, gear vendor. - **Open-world**: world quest, delve (solo), profession. ### 매 retention infrastructure - **LFG/LFR (2010-2011)** — queue-based grouping, 평등주의. - **WoW Token (2015)** — gold ↔ subscription 전환, RMT 합법화. - **Cross-realm zone (2012)** — 인구 부족 서버 통합. - **Classic / Hardcore (2019/2023)** — nostalgia-driven 재출시. ### 매 응용 1. MMO 디자인 reference — endgame multi-loop. 2. Live ops — patch/expansion cadence (~2y). 3. 플레이어 정체 회복 — reset-style season (Dragonflight S1+). ## 💻 패턴 ### Item level scaling formula (단순화) ```lua -- 보상 ilvl 계산: M+ key level → loot ilvl local function MythicPlusLootIlvl(keyLevel) local base = 480 -- season 1 baseline local cap = 522 -- weekly vault cap if keyLevel < 2 then return base end if keyLevel >= 10 then return cap end return base + (keyLevel - 2) * 5 end ``` ### Combat log parser (DPS meter 기본) ```lua local f = CreateFrame("Frame") f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") f:SetScript("OnEvent", function() local _, sub, _, _, src, _, _, _, dst, _, _, a1, a2, a3 = CombatLogGetCurrentEventInfo() if sub == "SPELL_DAMAGE" or sub == "SWING_DAMAGE" then local amount = (sub == "SWING_DAMAGE") and a1 or a4 DPS[src] = (DPS[src] or 0) + (amount or 0) end end) ``` ### Mythic+ key generator (server) ```python import random, dataclasses DUNGEONS = ["Atal'Dazar","Halls of Infusion","Throne of Tides", ...] AFFIXES = {2:"Tyrannical/Fortified",4:"Sanguine",7:"Spiteful",10:"Xal'atath"} @dataclasses.dataclass class MythicKey: dungeon: str; level: int; affixes: list[str] def downgrade_or_award(prev: MythicKey, completed_in_time: bool, depleted: bool): if completed_in_time: return MythicKey(prev.dungeon, prev.level + (1 if completed_in_time else 0), AFFIXES_FOR(prev.level+1)) return MythicKey(random.choice(DUNGEONS), max(2, prev.level - 1), AFFIXES_FOR(prev.level-1)) ``` ### Tier set bonus (set bonus state machine) ```lua local SET_BONUS_2P = "Increase damage of Frostbolt by 10%" local SET_BONUS_4P = "Frostbolt has 20% chance to reset Frozen Orb cooldown" local function CountTierPieces() local n = 0 for slot=1,16 do if IsTierItem(GetInventoryItemID("player", slot)) then n=n+1 end end return n end ``` ### Weekly vault (3 sources) ```python # Player picks 1 reward from up to 9 options across 3 categories def weekly_vault(player): return { "mplus": top_n(player.mplus_runs, n=3, key=lambda r: r.key_level), "raid": top_n(player.raid_kills, n=3, key=lambda k: k.difficulty), "pvp": top_n(player.pvp_honor, n=3, key=lambda p: p.tier), } ``` ### Cross-realm zone matcher ```python def assign_phase(player, zone_id): bucket = hash((zone_id, player.region, player.faction)) % 50 population = phase_populations.get((zone_id, bucket), 0) if population >= 80: # soft cap bucket = (bucket + 1) % 50 return (zone_id, bucket) ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | 신규 player onboarding | Chromie Time + level squish (60 cap → fast-track). | | Endgame casual | Delve (solo) + LFR. | | Endgame mid | Heroic raid + M+5-12. | | Hardcore | Mythic raid + M+15+ + Arena 2400+. | | 정체 player | Classic / Hardcore / SoD 로 retention 회복. | **기본값**: 2년 expansion cycle · 4 raid tier per expansion · seasonal reset (M+ affix rotation). ## 🔗 Graph - 부모: [[Live-Ops]] ## 🤖 LLM 활용 **언제**: MMO endgame design 분석, raid encounter mechanic 설명, 클래스 spec rotation 코드 (luas). **언제 X**: 매 patch-specific math (tier set coefficient) — 변동성 너무 큼, simC / Bloodmallet 데이터 직접 조회 권장. ## ❌ 안티패턴 - **Borrowed power 의 횡포 (BfA azerite)**: 매 expansion 마다 reset → 누적감 박탈. - **Time-gated 일일 quest**: 출석 체크 강요 → burnout. - **Dual-spec 비용**: 매 swap 비용 = 실험 차단. (현재 free spec 으로 fix 됨) - **Pay-to-win RMT**: WoW Token 으로 회색지대 (gold → BoE gear). ## 🧪 검증 / 중복 - Verified (Blizzard patch notes 2004-2026, raider.io API, wowhead). - 신뢰도 A — 21년 누적 디자인 자료. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — WoW MMO design case study |