Files
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.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-capybara-go Capybara GO! 10_Wiki/Topics verified self
Capybara GO
카피바라 GO
none A 0.9 applied
game-design
mobile
idle-rpg
monetization
casual
2026-05-10 pending
language framework
design-doc 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

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

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

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

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)

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

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