Files
2nd/10_Wiki/Topics/Architecture/부분_유료화(Free-to-Play).md
T
koriweb d8a80f6272 chore(wiki): dangling 링크 canonical 정규화 (768파일/1200건)
이름만 다른(표기 변형) [[위키링크]]를 대상 문서의 canonical 제목으로 치환해
끊겼던 1,200개 링크를 연결. 제목/파일명 정규화 일치만 적용하고 별칭 매칭은
과병합 위험으로 제외(애매성 가드). 원본은 _link_reconcile_backup/ 에 백업.
도구: Datacollect/scripts/link_reconcile_apply.mjs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 12:24:15 +09:00

182 lines
5.8 KiB
Markdown

---
id: wiki-2026-0508-부분-유료화-free-to-play
title: 부분 유료화 (Free-to-Play)
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Free-to-Play, F2P, Freemium, 부분유료화, 프리투플레이]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [game-design, monetization, business-model, economy]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: language-agnostic
framework: monetization
---
# 부분 유료화 (Free-to-Play)
## 매 한 줄
> **"매 무료 entry, 매 in-game purchase 의 통한 monetize."**. 2010s mobile gaming 의 explosion 의 driver — 매 Candy Crush, Clash of Clans, Genshin Impact, Fortnite 의 backbone. 2026 의 매 cosmetics-only (Fortnite, Valorant) 와 매 progression-gated (gacha) 의 split — 매 EU/KR regulation (gambling disclosure, 매 odds publication) 의 매 design 의 reshape.
## 매 핵심
### 매 monetization 의 종류
- **Cosmetic**: 매 skin · emote · nameplate — 매 power 의 X.
- **Battle pass**: 매 seasonal progression — 매 paid + free track.
- **Gacha / loot box**: 매 randomized reward — 매 rarity tier.
- **Energy / wait gate**: 매 stamina · timer — 매 pay-to-skip.
- **Pay-to-win (P2W)**: 매 power 의 직접 sell — 매 controversial.
- **Subscription**: 매 monthly perk (Apple Arcade, Game Pass — F2P 의 hybrid).
### 매 metric
- **ARPU**: average revenue per user.
- **ARPPU**: average revenue per paying user.
- **Conversion rate**: 매 free → paying %.
- **Whale concentration**: 매 top 1% 의 50%+ revenue 의 contribute (typical).
- **D1/D7/D30 retention**: 매 monetization 의 prerequisite.
### 매 응용
1. 매 economy design — 매 sink/source balance 의 inflation 의 prevent.
2. 매 A/B test — 매 price point · 매 offer cadence.
3. 매 ethical disclosure — 매 gacha odds publication (KR · CN law).
## 💻 패턴
### Pricing tier (server config)
```yaml
products:
- id: gem_pack_small
price_usd: 4.99
gems: 500
bonus: 0
- id: gem_pack_medium
price_usd: 19.99
gems: 2200 # 매 10% bonus
bonus: 200
badge: "best_value"
- id: gem_pack_large
price_usd: 99.99
gems: 13000 # 매 30% bonus, whale tier
bonus: 3000
```
### Gacha pull with pity
```python
import random
def pull(banner, pity_counter):
rates = banner.rates # {"5★": 0.006, "4★": 0.051, "3★": 0.943}
if pity_counter >= banner.hard_pity: # 매 90 pulls 의 5★ guarantee
return banner.featured_5star, 0
r = random.random()
if r < rates["5★"]: return random_5star(), 0
if r < rates["5★"] + rates["4★"]: return random_4star(), pity_counter + 1
return random_3star(), pity_counter + 1
```
### Battle pass progression
```typescript
interface BattlePass {
season: number;
currentXP: number;
tiers: Tier[]; // 매 100 tiers
ownsPaid: boolean;
}
function unlockedRewards(bp: BattlePass): Reward[] {
const tier = Math.floor(bp.currentXP / 1000);
return bp.tiers.slice(0, tier).flatMap(t =>
bp.ownsPaid ? [t.free, t.paid] : [t.free]
);
}
```
### Energy/stamina regen
```typescript
function currentStamina(user: User, now: Date): number {
const elapsed = (now.getTime() - user.lastStaminaUpdate.getTime()) / 1000;
const regen = Math.floor(elapsed / 360); // 매 6 min/point
return Math.min(user.stamina + regen, user.maxStamina);
}
// pay 의 instant refill: refill_cost = 50 gems
```
### Whale-friendly bundle
```yaml
bundle_starter:
one_time_only: true
price_usd: 0.99
contents:
- hero_card_5star: 1
- gems: 1000
rationale: "low-friction first purchase — 매 conversion driver"
```
### Disclosure (KR/CN law compliance)
```json
{
"banner": "limited_5star_featured",
"rates_disclosed": {
"5★_featured": 0.0030,
"5★_other": 0.0030,
"4★_any": 0.0510,
"3★_any": 0.9430
},
"pity_disclosed": { "soft_pity_at": 75, "hard_pity_at": 90 }
}
```
### Live ops calendar (offers)
```yaml
events:
- id: "weekend_sale"
cadence: "Fri 18:00 → Sun 23:59 KST"
discount: 0.20
- id: "comeback_offer"
trigger: "user.daysSinceLastSession >= 7"
contents: [gems: 500, hero_token: 1]
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| 매 competitive PvP | Cosmetic-only — 매 P2W 의 player exodus 의 cause |
| 매 RPG/gacha audience | Banner + pity + battle pass |
| 매 casual puzzle | Energy gate + remove-ad IAP |
| 매 EU/KR market | Disclosure 의 mandatory · 매 gambling-like 의 minor restriction |
| 매 retention < D7 | 매 monetize 의 premature — 매 retention 의 fix first |
**기본값**: 매 cosmetic + battle pass — 매 controversy 의 minimize, 매 long-term retention 의 protect.
## 🔗 Graph
- 부모: [[Game_Monetization]]
- 변형: [[Freemium]]
- 응용: [[Gacha]] · [[Loot_Box]] · [[LiveOps]]
- Adjacent: [[Game_Economy]] · [[Player_Retention]]
## 🤖 LLM 활용
**언제**: 매 economy simulation — 매 sink/source balance 의 model, 매 offer copy 의 generate.
**언제 X**: 매 ethical decision — 매 manipulative dark pattern 의 design 의 X.
## ❌ 안티패턴
- **Pay-to-win in PvP**: 매 competitive integrity 의 destroy → 매 churn.
- **Hidden gacha rates**: 매 KR/CN illegal · 매 trust 의 destroy.
- **Inflation**: 매 currency source > sink — 매 economy 의 break.
- **Monetize early**: 매 D1 popup 의 IAP — 매 retention 의 tank.
- **Whale-only design**: 매 top 1% 의 only 의 fun — 매 base 의 hollow out.
## 🧪 검증 / 중복
- Verified (Schell *Art of Game Design*; KR Game Industry Promotion Act 2024 amend; Sensor Tower 2026 mobile report).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — monetization types, gacha mechanics, regulation |