refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조
에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게 [공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류. 문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인). - Topic_Programming → Domain_Programming (내부 구조 보존) - Topic_Graphic → Domain_Design - Topic_Business → Domain_Product - Topic_General → Domain_General - _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning), Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing) - 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서) - 빈 폴더 정리 (memory/procedures) - 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
---
|
||||
id: wiki-2026-0508-whale-hunting
|
||||
title: Whale Hunting
|
||||
category: 10_Wiki/Topics
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [Whale Targeting, High Spender Monetization, VIP Hunting]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [monetization, f2p, gacha, design-ethics]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
tech_stack:
|
||||
language: design
|
||||
framework: f2p-monetization
|
||||
---
|
||||
|
||||
# Whale Hunting
|
||||
|
||||
## 매 한 줄
|
||||
> **"매 0.1~2% 매 spender 가 매 50~80% 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
|
||||
```ts
|
||||
// 매 진짜 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)
|
||||
```python
|
||||
# 매 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
|
||||
```ts
|
||||
// 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)
|
||||
```json
|
||||
{
|
||||
"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)
|
||||
```ts
|
||||
// 매 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
|
||||
```sql
|
||||
-- 매 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
|
||||
- 변형: [[Loot Box]]
|
||||
- 응용: [[Genshin Impact]]
|
||||
|
||||
## 🤖 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 |
|
||||
Reference in New Issue
Block a user