---
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
- 부모: [[LiveOps]]

## 🤖 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 |
