Files
2nd/10_Wiki/Topics/Game_Design/Capybara GO!.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

177 lines
5.5 KiB
Markdown

---
id: wiki-2026-0508-capybara-go
title: "Capybara GO!"
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Capybara GO, 카피바라 GO]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [game-design, mobile, idle-rpg, monetization, casual]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: design-doc
framework: mobile-f2p
---
# Capybara GO!
## 매 한 줄
> **"매 cute idle-RPG의 monetization 정점"**. 매 Habby (Survivor.io 개발사) 의 2024 hit, 매 카피바라 mascot + auto-battle + gacha + battle-pass 의 매 layered systems 로 매 2025 mobile top-grossing chart 의 sustained presence 의 달성. 매 idle-RPG genre 의 매 modern blueprint.
## 매 핵심
### 매 core loop
- **Auto-battle**: 매 player 의 minimal input — 매 stage select → auto-progress.
- **Idle accumulation**: 매 offline 시 resources accrue — 매 8h cap 의 일반.
- **Gear upgrade**: 매 equipment slot 6-8개 — 매 enhance + tier-up.
- **Hero collection**: 매 gacha banner — 매 SSR pull rate ~1-2%.
### 매 retention layers
- **Daily login**: 매 7-day reward escalator.
- **Weekly battle pass**: 매 free + premium tier.
- **Limited events**: 매 시간 limited gear / hero / outfit.
- **Guild**: 매 boss raid + chat + co-op.
### 매 응용
1. 매 Habby 의 internal cross-promotion network.
2. 매 idle-RPG genre 의 reference design.
3. 매 mobile UA scaling pattern (CPI optimization).
## 💻 패턴
### Battle-pass tier reward schema
```typescript
type BattlePassTier = {
level: number; // 1-100
xp_required: number; // cumulative
free_reward: Reward;
premium_reward: Reward;
};
const TIERS: BattlePassTier[] = Array.from({length: 100}, (_, i) => ({
level: i + 1,
xp_required: 100 * (i + 1) + Math.floor(i * i * 0.5),
free_reward: i % 5 === 0 ? GOLD_PACK : XP_BOOK,
premium_reward: i % 10 === 0 ? GACHA_TICKET : GEMS_50,
}));
function claimTier(player: Player, tier: number, premium: boolean) {
const t = TIERS[tier - 1];
if (player.bp_xp < t.xp_required) throw new Error("not eligible");
player.inventory.add(t.free_reward);
if (premium && player.bp_premium) player.inventory.add(t.premium_reward);
player.claimed_tiers.add(tier);
}
```
### Idle reward calculation
```typescript
function calculateIdleRewards(player: Player, now: number) {
const elapsed_sec = Math.min(
(now - player.last_collect) / 1000,
8 * 3600 // 8h cap
);
const stage_data = STAGE_TABLE[player.current_stage];
return {
gold: Math.floor(stage_data.gold_per_sec * elapsed_sec),
xp: Math.floor(stage_data.xp_per_sec * elapsed_sec),
materials: distributeMaterials(stage_data, elapsed_sec),
};
}
```
### Gacha pity system
```typescript
function rollGacha(player: Player, banner: Banner): Hero {
player.pity_count += 1;
// Hard pity at 80
if (player.pity_count >= 80) {
player.pity_count = 0;
return banner.featured_ssr;
}
// Soft pity ramp from 60
let ssr_rate = 0.012;
if (player.pity_count >= 60) {
ssr_rate = 0.012 + (player.pity_count - 60) * 0.06;
}
const roll = Math.random();
if (roll < ssr_rate) {
player.pity_count = 0;
return rollSSRPool(banner);
}
return rollLowerRarity(banner, roll);
}
```
### Daily quest checker
```typescript
const DAILY_QUESTS = [
{ id: "battle_5", target: 5, action: "complete_stage", reward: 100 },
{ id: "spend_gems_50", target: 50, action: "spend_gems", reward: 200 },
{ id: "gacha_1", target: 1, action: "gacha_pull", reward: 150 },
];
function onAction(player: Player, action: string, amount: number) {
for (const q of DAILY_QUESTS) {
if (q.action !== action) continue;
const prog = player.daily_progress[q.id] ?? 0;
player.daily_progress[q.id] = Math.min(prog + amount, q.target);
}
}
```
### Offer engine (whale targeting)
```typescript
function recommendOffer(player: Player): Offer | null {
const ltv = player.spending_total;
const days_inactive = (Date.now() - player.last_purchase) / 86400000;
if (ltv > 1000 && days_inactive > 3) return WHALE_RETENTION_BUNDLE;
if (ltv > 100 && player.level > 50) return MID_PROGRESS_PACK;
if (ltv === 0 && player.session_count > 10) return STARTER_PACK_499;
return null;
}
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| 매 시작 player | Starter pack ($4.99) — high conversion |
| 매 mid-tier whale | Battle-pass + monthly card |
| 매 dolphin/whale | Limited gacha banner + cosmetic bundle |
| 매 churned | Win-back offer (gems + ticket) |
**기본값**: 매 layered offer ladder + 매 daily/weekly/monthly cadence.
## 🔗 Graph
- 응용: [[Game_Monetization_Strategy]] · [[Dynamic Offers]] · [[Gacha Mechanics Analysis]]
- Adjacent: [[CPI (Cost Per Install)]] · [[Data-Driven Personalization]]
## 🤖 LLM 활용
**언제**: 매 monetization design review, idle-RPG benchmark, offer cadence design.
**언제 X**: 매 hardcore PvP, AAA console design — 매 platform mismatch.
## ❌ 안티패턴
- **Pay-to-win 노골**: 매 PvP whales dominate — 매 F2P churn.
- **Pity 의 부재**: 매 RNG-only gacha — 매 regulatory + retention risk.
- **Daily 과다**: 매 chore fatigue — 매 30-min daily 초과 시 churn.
- **No idle cap**: 매 uncapped accumulation — 매 일 missed = unrecoverable.
## 🧪 검증 / 중복
- Verified (Habby public press 2024-2025, AppMagic top-grossing data).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — Capybara GO! idle-RPG monetization architecture. |