Files
2nd/10_Wiki/Topics/Architecture/LiveOps.md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
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>
2026-05-20 23:52:15 +09:00

5.9 KiB
Raw Blame History

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-liveops LiveOps 10_Wiki/Topics verified self
LiveOps
Live Operations
Live Service
GaaS
none A 0.9 applied
game-development
liveops
mobile-games
gaas
monetization
retention
2026-05-10 pending
language framework
Unity/Unreal/Backend 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)

// 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)

{
  "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)

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

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

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

// Feature flag — disable broken feature without client patch
if (FeatureFlags.IsEnabled("new_pvp_mode") && !FeatureFlags.IsKilled("new_pvp_mode")) {
    ShowPvpEntry();
}

Anti-cheat telemetry alert

# 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

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