docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
---
|
||||
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 |
|
||||
Reference in New Issue
Block a user