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>
170 lines
5.9 KiB
Markdown
170 lines
5.9 KiB
Markdown
---
|
||
id: wiki-2026-0508-liveops
|
||
title: LiveOps
|
||
category: 10_Wiki/Topics
|
||
status: verified
|
||
canonical_id: self
|
||
aliases: [LiveOps, Live Operations, Live Service, GaaS]
|
||
duplicate_of: none
|
||
source_trust_level: A
|
||
confidence_score: 0.9
|
||
verification_status: applied
|
||
tags: [game-development, liveops, mobile-games, gaas, monetization, retention]
|
||
raw_sources: []
|
||
last_reinforced: 2026-05-10
|
||
github_commit: pending
|
||
tech_stack:
|
||
language: Unity/Unreal/Backend
|
||
framework: PlayFab/Firebase/Custom
|
||
---
|
||
|
||
# LiveOps
|
||
|
||
## 매 한 줄
|
||
> **"매 game 매 ship 의 끝 아닌, 매 시작"**. LiveOps (Live Operations) 매 launched game 매 live service 매 ongoing content, events, balance, monetization 의 continuous operation. 2026 매 mobile F2P, MMO, gacha, battle-pass 매 default; 매 console/PC 매 Fortnite, Helldivers 2 등이 매 mainstream 화. Data-driven, A/B-tested, calendar-planned.
|
||
|
||
## 매 핵심
|
||
|
||
### 매 LiveOps pillars
|
||
- **Content cadence**: 매 weekly events, 매 monthly seasons, 매 quarterly major.
|
||
- **Balance patches**: 매 telemetry-driven 매 buff/nerf.
|
||
- **Monetization**: 매 battle pass, 매 limited bundles, 매 events.
|
||
- **Retention loops**: 매 daily login, 매 streak, 매 timed events.
|
||
- **Community**: 매 Discord, 매 Reddit, 매 patch notes, 매 dev streams.
|
||
|
||
### 매 Telemetry → action loop
|
||
1. Collect (events, sessions, IAP, churn).
|
||
2. Analyze (cohort retention, ARPDAU, funnel).
|
||
3. Hypothesize (feature/event/balance change).
|
||
4. A/B test (segmented rollout).
|
||
5. Roll out (or roll back).
|
||
|
||
### 매 응용
|
||
1. **Mobile F2P**: 매 Clash Royale, Genshin, Royal Match — 매 textbook.
|
||
2. **Live-service shooter**: 매 Fortnite, Apex, Helldivers 2.
|
||
3. **MMO**: 매 FFXIV, WoW — 매 patch + expansion cycle.
|
||
4. **Gacha**: 매 Genshin, 매 Star Rail — 매 banner schedule 매 core.
|
||
|
||
## 💻 패턴
|
||
|
||
### Remote config (server-driven balance)
|
||
```csharp
|
||
// Unity + PlayFab
|
||
async Task ApplyRemoteBalance() {
|
||
var cfg = await PlayFab.GetTitleData(new[] { "balance.json" });
|
||
var balance = JsonConvert.DeserializeObject<Balance>(cfg["balance.json"]);
|
||
GameTuning.SwordDamage = balance.SwordDamage;
|
||
GameTuning.GoldDropRate = balance.GoldDropRate;
|
||
GameTuning.BossHpScalar = balance.BossHpScalar;
|
||
}
|
||
// No client patch needed — designer ships balance via dashboard.
|
||
```
|
||
|
||
### Event scheduling (calendar-driven)
|
||
```json
|
||
{
|
||
"events": [
|
||
{ "id": "summer_2026", "start": "2026-06-15T00:00Z", "end": "2026-07-15T00:00Z",
|
||
"modifiers": { "xp_mult": 2.0, "drop_table": "summer_pool" },
|
||
"store": "summer_bundle" },
|
||
{ "id": "halloween_2026", "start": "2026-10-20T00:00Z", "end": "2026-11-05T00:00Z",
|
||
"modifiers": { "skin_pack": "spooky" } }
|
||
]
|
||
}
|
||
```
|
||
|
||
### A/B test (server-segmented)
|
||
```python
|
||
def assign_variant(user_id: str, exp: str) -> str:
|
||
h = hashlib.sha256(f"{exp}:{user_id}".encode()).digest()
|
||
return "B" if h[0] % 2 else "A"
|
||
|
||
def starter_pack_price(user_id):
|
||
v = assign_variant(user_id, "starter_price_v3")
|
||
return 4.99 if v == "A" else 7.99 # measure conversion × revenue
|
||
```
|
||
|
||
### Battle pass logic
|
||
```typescript
|
||
interface BattlePass {
|
||
seasonId: string;
|
||
startUtc: string; endUtc: string;
|
||
freeTrack: Reward[]; // 50 tiers
|
||
premiumTrack: Reward[];
|
||
xpPerTier: number;
|
||
premiumPrice: { usd: 9.99 };
|
||
}
|
||
|
||
function tierFromXp(xp: number, bp: BattlePass): number {
|
||
return Math.min(50, Math.floor(xp / bp.xpPerTier));
|
||
}
|
||
```
|
||
|
||
### Cohort retention SQL
|
||
```sql
|
||
WITH cohort AS (
|
||
SELECT user_id, DATE(MIN(session_start)) AS d0
|
||
FROM sessions GROUP BY user_id
|
||
)
|
||
SELECT
|
||
d0,
|
||
COUNT(*) AS n0,
|
||
COUNT(DISTINCT CASE WHEN s.session_start::date = d0 + 1 THEN s.user_id END)::float / COUNT(*) AS d1,
|
||
COUNT(DISTINCT CASE WHEN s.session_start::date = d0 + 7 THEN s.user_id END)::float / COUNT(*) AS d7,
|
||
COUNT(DISTINCT CASE WHEN s.session_start::date = d0 + 30 THEN s.user_id END)::float / COUNT(*) AS d30
|
||
FROM cohort c LEFT JOIN sessions s USING (user_id)
|
||
GROUP BY d0 ORDER BY d0;
|
||
```
|
||
|
||
### Hot-fix flag system
|
||
```csharp
|
||
// Feature flag — disable broken feature without client patch
|
||
if (FeatureFlags.IsEnabled("new_pvp_mode") && !FeatureFlags.IsKilled("new_pvp_mode")) {
|
||
ShowPvpEntry();
|
||
}
|
||
```
|
||
|
||
### Anti-cheat telemetry alert
|
||
```python
|
||
# Real-time anomaly detection on coin gain
|
||
def is_suspicious(user, gain, window):
|
||
median = get_median_gain(user.cohort, window)
|
||
return gain > median * 50 # >50× median = inspect
|
||
```
|
||
|
||
## 매 결정 기준
|
||
| 상황 | Approach |
|
||
|---|---|
|
||
| 매 mobile F2P launch | 매 LiveOps 매 day-1 plan, 매 6mo content roadmap |
|
||
| 매 single-player premium | 매 LiveOps 매 unnecessary (DLC enough) |
|
||
| 매 small indie | 매 lightweight events + Discord, 매 full LiveOps team 매 X |
|
||
| 매 MMO | 매 patch cycle + expansion + LiveOps 매 hybrid |
|
||
| 매 dying game | 매 sunset plan, 매 honest 매 player communication |
|
||
|
||
**기본값**: 매 remote config + event calendar + cohort retention dashboard 매 minimum viable LiveOps.
|
||
|
||
## 🔗 Graph
|
||
- 응용: [[Player-Retention]] · [[Game-Monetization]]
|
||
- Adjacent: [[Telemetry]] · [[Feature-Flags]]
|
||
|
||
## 🤖 LLM 활용
|
||
**언제**: 매 mobile/F2P design; 매 monetization strategy; 매 retention analysis; 매 event calendar planning.
|
||
**언제 X**: 매 single-player narrative game (다른 framework); 매 unmonetized hobby project.
|
||
|
||
## ❌ 안티패턴
|
||
- **Burnout-grind events**: 매 daily-mandatory events 매 churn 매 가속.
|
||
- **Pay-to-win sledgehammer**: 매 short-term ARPU spike, 매 long-term community collapse.
|
||
- **Silent nerf**: 매 patch notes 없이 매 weapon nerf — 매 trust 매 destroy.
|
||
- **No sunset plan**: 매 servers 매 갑작스럽 shut, 매 player data 매 lose.
|
||
- **Calendar-only, no story**: 매 events 매 mechanical 매 없이 narrative — 매 fatigue.
|
||
|
||
## 🧪 검증 / 중복
|
||
- Verified (Deconstructor of Fun, GDC LiveOps talks 2020-2025, Genshin/Clash Royale post-mortems, Helldivers 2 patch cadence).
|
||
- 신뢰도 A.
|
||
|
||
## 🕓 Changelog
|
||
| 날짜 | 변경 |
|
||
|---|---|
|
||
| 2026-05-08 | Phase 1 |
|
||
| 2026-05-10 | Manual cleanup — full content (LiveOps pillars, telemetry, battle pass) |
|