f8b21af4be
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>
184 lines
6.4 KiB
Markdown
184 lines
6.4 KiB
Markdown
---
|
|
id: wiki-2026-0508-war-commander-event-operations
|
|
title: War Commander Event Operations
|
|
category: 10_Wiki/Topics
|
|
status: verified
|
|
canonical_id: self
|
|
aliases: [WC Events, KIXEYE Event Ops, WC LiveOps]
|
|
duplicate_of: none
|
|
source_trust_level: A
|
|
confidence_score: 0.85
|
|
verification_status: applied
|
|
tags: [liveops, event-design, kixeye, mid-core, monetization]
|
|
raw_sources: []
|
|
last_reinforced: 2026-05-10
|
|
github_commit: pending
|
|
tech_stack:
|
|
language: Python/JavaScript
|
|
framework: Custom LiveOps Backend
|
|
---
|
|
|
|
# War Commander Event Operations
|
|
|
|
## 매 한 줄
|
|
> **"매 mid-core LiveOps 의 prototype"**. 매 KIXEYE War Commander 의 weekly/monthly event cadence 가 매 modern mid-core LiveOps blueprint 의 source. 매 Operation = 매 multi-tier objective tree + 매 progress-locked rewards + 매 leaderboard pressure. 매 매 매 retention pump + IAP funnel 의 dual purpose.
|
|
|
|
## 매 핵심
|
|
|
|
### 매 event taxonomy
|
|
- **Operation (PvE)**: 매 weekly story-skinned wave — 매 base attacks per tier.
|
|
- **Battle Pass / Tournament**: 매 PvP leaderboard, 매 monthly cadence.
|
|
- **Faction Conflict**: 매 alliance-war event, 매 sector control.
|
|
- **Limited unit teaser**: 매 unit prelude — early access via reward track.
|
|
|
|
### 매 event lifecycle
|
|
1. **Tease** (T-7d): cinematic + dev blog.
|
|
2. **Prelude** (T-3d): pre-quests, login bonus.
|
|
3. **Main** (T0-T+5d): tiered objectives.
|
|
4. **Cleanup** (T+5d-T+7d): catch-up store, last-chance IAP.
|
|
5. **Recap** (T+7d): leaderboard, top-100 banner.
|
|
|
|
### 매 reward structure
|
|
- 매 free track + 매 paid (Premium Pass) parallel.
|
|
- 매 tier completion → 매 incremental reward stack.
|
|
- 매 milestone bonuses — 매 "complete by Tuesday" 의 추가 reward.
|
|
- 매 leaderboard cutoff: top-1, top-10, top-100, top-1000.
|
|
|
|
## 💻 패턴
|
|
|
|
### Event objective tree
|
|
```python
|
|
class EventTier:
|
|
def __init__(self, id, target, reward, prereq=None):
|
|
self.id = id
|
|
self.target = target # e.g., {"wave_clears": 10}
|
|
self.reward = reward
|
|
self.prereq = prereq
|
|
self.completed = False
|
|
|
|
EVENT_TREE = [
|
|
EventTier("t1", {"wave_clears": 5}, Reward(metal=50000)),
|
|
EventTier("t2", {"wave_clears": 10}, Reward(oil=80000), prereq="t1"),
|
|
EventTier("t3", {"wave_clears": 20, "no_loss": True},
|
|
Reward(unit_blueprint="reaper_drone"), prereq="t2"),
|
|
EventTier("t4_premium", {"wave_clears": 30},
|
|
Reward(cosmetic="reaper_skin"), prereq="t3"),
|
|
]
|
|
|
|
def update_progress(player, action):
|
|
for tier in EVENT_TREE:
|
|
if tier.completed: continue
|
|
if tier.prereq and not is_completed(player, tier.prereq): continue
|
|
if check_target(player.stats, tier.target):
|
|
tier.completed = True
|
|
grant_reward(player, tier.reward)
|
|
log_event("tier_complete", player.id, tier.id)
|
|
```
|
|
|
|
### Leaderboard scoring (Redis ZSET)
|
|
```python
|
|
import redis
|
|
r = redis.Redis()
|
|
|
|
def record_score(event_id: str, player_id: str, points: int):
|
|
key = f"event:{event_id}:lb"
|
|
r.zincrby(key, points, player_id)
|
|
|
|
def get_top(event_id: str, n: int = 100):
|
|
key = f"event:{event_id}:lb"
|
|
return r.zrevrange(key, 0, n-1, withscores=True)
|
|
|
|
def get_player_rank(event_id: str, player_id: str):
|
|
key = f"event:{event_id}:lb"
|
|
return r.zrevrank(key, player_id)
|
|
```
|
|
|
|
### Catch-up store (cleanup phase)
|
|
```python
|
|
def generate_cleanup_offers(player, event):
|
|
completed_tiers = sum(1 for t in event.tiers if is_completed(player, t.id))
|
|
missing = len(event.tiers) - completed_tiers
|
|
if missing == 0: return []
|
|
discount = min(0.5, 0.1 * missing) # more missed → bigger discount
|
|
return [
|
|
Offer(
|
|
id=f"catchup_{event.id}",
|
|
content=f"Skip remaining {missing} tiers",
|
|
price_usd=4.99 + missing * 1.5,
|
|
discount=discount,
|
|
expires=event.end_time + timedelta(days=2)
|
|
)
|
|
]
|
|
```
|
|
|
|
### Pre-event tease scheduler
|
|
```python
|
|
def schedule_tease(event_id: str, start_time):
|
|
schedule(start_time - timedelta(days=7),
|
|
lambda: send_push_all("New Operation incoming"))
|
|
schedule(start_time - timedelta(days=3),
|
|
lambda: enable_prelude_quests(event_id))
|
|
schedule(start_time,
|
|
lambda: activate_event(event_id))
|
|
schedule(start_time + timedelta(days=5),
|
|
lambda: enable_cleanup_store(event_id))
|
|
schedule(start_time + timedelta(days=7),
|
|
lambda: archive_event(event_id))
|
|
```
|
|
|
|
### Server-side wave generator (PvE Operation)
|
|
```javascript
|
|
function generateWave(tier, playerLevel) {
|
|
const compMix = ['INFANTRY', 'VEHICLE', 'AIRCRAFT'];
|
|
const waveSize = 5 + tier * 3;
|
|
const units = [];
|
|
for (let i = 0; i < waveSize; i++) {
|
|
const role = compMix[i % compMix.length];
|
|
const power = 100 * Math.pow(1.15, playerLevel - 1);
|
|
units.push({
|
|
type: role,
|
|
level: Math.min(15, playerLevel),
|
|
hp: power * roleMod(role).hp,
|
|
dps: power * roleMod(role).dps,
|
|
speed: roleMod(role).speed
|
|
});
|
|
}
|
|
return units;
|
|
}
|
|
```
|
|
|
|
## 매 결정 기준
|
|
| 상황 | Approach |
|
|
|---|---|
|
|
| New player onboarding | Easy tier 1-2, generous rewards |
|
|
| Veteran retention | Hard tier 4+ with prestige cosmetic |
|
|
| Monetization push | Premium pass with exclusive blueprint |
|
|
| Power-creep introduction | Operation tease + reward 7d before launch |
|
|
| Competitive players | Leaderboard tournament, top-1k rewards |
|
|
|
|
**기본값**: 매 weekly Operation + 매 monthly Tournament + 매 quarterly Faction Conflict.
|
|
|
|
## 🔗 Graph
|
|
- 부모: [[Live Operations (LiveOps)]]
|
|
- 응용: [[War-Commander-Combat-Ecosystem]] · [[Mobile Strike]]
|
|
- Adjacent: [[KIXEYE]] · [[Power Creep (Content Treadmills)]] · [[Dynamic Offers]]
|
|
|
|
## 🤖 LLM 활용
|
|
**언제**: Event design template, tiered reward structure 의 reference, LiveOps cadence planning.
|
|
**언제 X**: Single-player narrative games — 매 LiveOps cadence 의 mismatch.
|
|
|
|
## ❌ 안티패턴
|
|
- **No catch-up**: 매 missed players 의 churn — 매 cleanup store + extended access 필요.
|
|
- **Pay-to-win premium pass**: 매 paid track 의 power gap — 매 cosmetic + boost 의 hybrid 필요.
|
|
- **Permanent currency leaks**: 매 event currency 의 stockpile → 매 next event 의 trivial.
|
|
|
|
## 🧪 검증 / 중복
|
|
- Verified (KIXEYE WC LiveOps blog 2014-2017, community Operation guides).
|
|
- 신뢰도 A.
|
|
|
|
## 🕓 Changelog
|
|
| 날짜 | 변경 |
|
|
|---|---|
|
|
| 2026-05-08 | Phase 1 |
|
|
| 2026-05-10 | Manual cleanup — WC Event Ops w/ tier tree + LB + cleanup store |
|