Files
2nd/10_Wiki/Topic_Programming/Architecture/Whale Hunting.md
T
Antigravity Agent 9148c358d0 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 폴더 제거.
2026-07-05 00:33:48 +09:00

6.5 KiB

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-whale-hunting Whale Hunting 10_Wiki/Topics verified self
Whale Targeting
High Spender Monetization
VIP Hunting
none A 0.9 applied
monetization
f2p
gacha
design-ethics
2026-05-10 pending
language framework
design f2p-monetization

Whale Hunting

매 한 줄

"매 0.12% 매 spender 가 매 5080% revenue 를 만든다 — 매 product design 의 매 그들 위주 의 X". 매 F2P / gacha / casino 매 long-tail revenue distribution 의 매 결과 — 매 whale isolation, retention loop, social pressure mechanic 의 매 예측 가능한 pattern. 매 2026 매 regulatory scrutiny (EU loot box ban, JP gacha probability disclosure) 매 강화 중.

매 핵심

매 Spender Pyramid

  • Minnow (~80% of payers): $1-20/mo, conversion focus.
  • Dolphin (~15%): $20-100/mo, mid-funnel retention.
  • Whale (~5%): $100-1,000/mo.
  • Super Whale / Krill (<1%): $1,000+/mo, often $10K+/year — 매 여기 가 매 revenue 의 lion share.
  • 매 ARPPU vs ARPDAU 매 split 매 critical metric.

매 Hunting Mechanics

  • Limited-time banner: FOMO via 14-day rotation, rate-up.
  • Pity ceiling: 매 guaranteed pull at N attempts (Genshin: 90, HSR: 80) — whale 가 매 "investment protected" 느낌.
  • Power creep: 매 신규 unit 매 기존 의 outclass — re-pull pressure.
  • Dupe / Constellation system: same character N copies for max power.
  • VIP tier: spend threshold 별 cosmetic + perk unlock.
  • Bundle laddering: $4.99 → $19.99 → $99.99 step, anchor effect.

매 응용

  1. Genshin Impact / HSR (HoYoverse): banner + pity + constellation.
  2. Raid: Shadow Legends: aggressive whale chase, VIP system.
  3. Mobile MMO (Lineage M, MIR4): P2W gear gacha + auction house RMT.
  4. Casino slot (Big Fish, DoubleDown): chip purchase, daily bonus loops.

💻 패턴

Pity / soft-pity rate-up

// 매 진짜 working — Genshin-style 5-star pity simulator
type PullResult = "5*" | "4*" | "3*";
const baseRate5 = 0.006;
const softPityStart = 74;
const hardPity = 90;

function pull(state: { count: number }): PullResult {
  state.count += 1;
  let rate = baseRate5;
  if (state.count >= softPityStart) {
    rate += (state.count - softPityStart + 1) * 0.06;
  }
  if (state.count >= hardPity || Math.random() < rate) {
    state.count = 0;
    return "5*";
  }
  if (Math.random() < 0.051) return "4*";
  return "3*";
}

Whale segmentation (LTV bucket)

# 매 simple cohort segmentation — production 에서 매 ML model 로 교체
import pandas as pd

def segment_payer(monthly_spend_usd: float) -> str:
    if monthly_spend_usd >= 1000: return "super_whale"
    if monthly_spend_usd >= 100:  return "whale"
    if monthly_spend_usd >= 20:   return "dolphin"
    if monthly_spend_usd > 0:     return "minnow"
    return "f2p"

def revenue_concentration(df: pd.DataFrame) -> dict:
    df["segment"] = df["monthly_spend"].map(segment_payer)
    total = df["monthly_spend"].sum()
    return df.groupby("segment")["monthly_spend"].sum().div(total).to_dict()

Dynamic bundle pricing

// LTV-based offer — whale 에게 매 high-anchor bundle, minnow 에게 매 starter
function pickOffer(player: { ltv: number; lastPurchase: Date | null }) {
  const daysSince = player.lastPurchase
    ? (Date.now() - player.lastPurchase.getTime()) / 86_400_000
    : Infinity;
  if (player.ltv > 5000) return { sku: "whale_premium_99_99", priceUsd: 99.99 };
  if (player.ltv > 500)  return { sku: "dolphin_29_99", priceUsd: 29.99 };
  if (daysSince > 7)     return { sku: "comeback_4_99", priceUsd: 4.99 };
  return { sku: "starter_0_99", priceUsd: 0.99 };
}

Probability disclosure (JP / CN compliance)

{
  "banner_id": "2026_05_limited_warrior",
  "rates": {
    "5_star_rate_up": 0.003,
    "5_star_other":   0.003,
    "4_star":         0.051,
    "3_star":         0.943
  },
  "pity": { "soft_start": 74, "hard": 90 },
  "disclosed_at": "2026-05-01"
}

Spend velocity alert (responsible gaming)

// 매 self-imposed limit — EU UK regulation 의 매 권장
const SPEND_SOFT_CAP = 200; // monthly USD
function checkSpendCap(playerId: string, amount: number, monthlyTotal: number) {
  if (monthlyTotal + amount > SPEND_SOFT_CAP) {
    return { allow: true, warn: "monthly cap exceeded — confirm?", cooloff: 60 };
  }
  return { allow: true };
}

Whale churn early warning

-- 매 7-day spend drop > 70% 매 whale 에게 매 retention team intervention trigger
SELECT player_id,
       SUM(CASE WHEN ts > NOW() - INTERVAL '7 day' THEN amount END) AS recent,
       SUM(CASE WHEN ts BETWEEN NOW() - INTERVAL '14 day' AND NOW() - INTERVAL '7 day'
                THEN amount END) AS prev
FROM purchases
WHERE player_id IN (SELECT player_id FROM whale_segment)
GROUP BY player_id
HAVING recent < prev * 0.3;

매 결정 기준

상황 Approach
Casual indie F2P Cosmetic only, battle pass, no gacha
Mid-core gacha Pity 90, rate disclosure, constellation 6 max
Whale-driven MMO VIP tier + auction house, but disclosed odds
Western market (regulation) Loot box → direct purchase shift
Korean / Chinese / JP market Gacha allowed, regulatory disclosure mandatory

기본값: Battle pass + cosmetic + bounded pity. 매 unbounded P2W 의 매 long-term reputation cost.

🔗 Graph

🤖 LLM 활용

언제: F2P revenue model 분석, gacha probability simulation, LTV segmentation, regulatory compliance audit. 언제 X: Premium / one-time purchase game (steam-style buy-to-play), subscription SaaS — 매 다른 LTV curve.

안티패턴

  • No pity ceiling: 매 unbounded gacha — whale rage-quit risk + regulation 의 magnet.
  • Hidden rates: 매 JP/CN 매 illegal, 매 EU 매 점점 banned.
  • Power creep without sidegrade: whale fatigue, churn cliff.
  • Predatory targeting of vulnerable players: ethical + legal liability (UK Gambling Commission 2025 ruling).
  • Misleading "limited" banners: 매 re-runs broken trust.
  • No spend cap option: 매 responsible gaming feature 의 X.

🧪 검증 / 중복

  • Verified (HoYoverse banner data, Newzoo F2P revenue report 2025, JP CSAGS guideline).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — whale segmentation, pity mechanics, regulatory disclosure patterns