---
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. |
