188 lines
6.8 KiB
Markdown
188 lines
6.8 KiB
Markdown
---
|
|
id: wiki-2026-0508-프리미엄-통화-브릿지-premium-currency-bri
|
|
title: 프리미엄 통화 브릿지(Premium Currency Bridge)
|
|
category: 10_Wiki/Topics
|
|
status: verified
|
|
canonical_id: self
|
|
aliases: [Premium Currency Bridge, Hard-Soft Currency Bridge, Currency Conversion Layer, 통화 브릿지]
|
|
duplicate_of: none
|
|
source_trust_level: A
|
|
confidence_score: 0.9
|
|
verification_status: applied
|
|
tags: [game-economy, monetization, currency-design, f2p]
|
|
raw_sources: []
|
|
last_reinforced: 2026-05-10
|
|
github_commit: pending
|
|
tech_stack:
|
|
language: typescript
|
|
framework: nodejs-economy
|
|
---
|
|
|
|
# 프리미엄 통화 브릿지(Premium Currency Bridge)
|
|
|
|
## 매 한 줄
|
|
> **"매 hard currency 매 직접 의 모든 item 매 구매 X — 매 bridge layer 의 의 의 soft currency / premium feature 의 의 conversion"**. 매 Genshin (Genesis Crystal → Primogem → Wishes), 매 Clash Royale (Gem → Gold/Chest), 매 Honkai Star Rail (Oneiric Shard → Stellar Jade), 매 매 매 동일한 design — 매 conversion friction 매 hard purchase 의 의 의 deliberate distance 의 의 의 의 의 create.
|
|
|
|
## 매 핵심
|
|
|
|
### 매 typical 3-tier currency stack
|
|
1. **Hard currency (premium)**: 매 IRL 매 buy. 매 Genesis Crystal, Gem, Robux 등.
|
|
2. **Bridge / mixed currency**: 매 hard 매 의 → 매 의 의 의 convert 가능 + 매 free 의 의 earn 가능. 매 Primogem, Stellar Jade.
|
|
3. **Soft / earnable**: 매 gameplay 의 grind. 매 Mora, Credit, Gold.
|
|
|
|
### 매 bridge 매 functions
|
|
- **delay psychology**: 매 IRL → in-game gain 의 의 두 step. 매 impulse buy 매 lower-friction.
|
|
- **regulatory cushion**: 매 jurisdictions 매 의 conversion 매 indirect 의 의 의 loot-box law 의 의 의 navigate.
|
|
- **f2p parity perception**: 매 free player 매 same Primogem 의 earn 의 → 매 perceived fairness.
|
|
- **bundle accounting**: 매 store offers (60+10 bonus) 매 visible 의 의 conversion 의 의 의 의.
|
|
|
|
### 매 응용
|
|
1. *Genshin Impact*: Genesis Crystal → Primogem (1:1 + bonus). Primogem → Fate (160:1 wish).
|
|
2. *Honkai Star Rail*: Oneiric Shard → Stellar Jade. SJ → Star Rail Pass (warp).
|
|
3. *Clash Royale*: Gem → Gold (변동 rate). Gem → Chest (직접).
|
|
4. *PUBG Mobile*: UC → BP / event token.
|
|
5. *Fortnite*: V-Bucks (single-tier, no bridge — 매 unique).
|
|
|
|
## 💻 패턴
|
|
|
|
### Currency type definitions
|
|
```typescript
|
|
type Currency = "USD" | "GenesisCrystal" | "Primogem" | "Mora";
|
|
|
|
interface Wallet {
|
|
balances: Record<Currency, number>;
|
|
}
|
|
|
|
const FX: Record<string, number> = {
|
|
"USD->GenesisCrystal": 99, // $0.99 → 60 + 0 bonus baseline
|
|
"GenesisCrystal->Primogem": 1, // 1:1 baseline
|
|
"Primogem->IntertwinedFate": 1/160, // 160 primo per wish
|
|
};
|
|
```
|
|
|
|
### Bridge conversion (with bonus tiers)
|
|
```typescript
|
|
const BUNDLE_BONUS = [
|
|
{ spend: 0.99, base: 60, bonus: 0 },
|
|
{ spend: 4.99, base: 300, bonus: 30 }, // first-time x2 separately
|
|
{ spend: 14.99, base: 980, bonus: 110 },
|
|
{ spend: 29.99, base: 1980, bonus: 260 },
|
|
{ spend: 49.99, base: 3280, bonus: 600 },
|
|
{ spend: 99.99, base: 6480, bonus: 1600 },
|
|
];
|
|
|
|
function purchaseGenesis(usd: number): number {
|
|
const tier = BUNDLE_BONUS.find(t => Math.abs(t.spend - usd) < 0.01);
|
|
if (!tier) throw new Error("Invalid SKU");
|
|
return tier.base + tier.bonus;
|
|
}
|
|
|
|
function genesisToPrimogem(gc: number): number {
|
|
return gc * FX["GenesisCrystal->Primogem"];
|
|
}
|
|
```
|
|
|
|
### Wallet ledger (audit-safe)
|
|
```typescript
|
|
interface LedgerEntry {
|
|
ts: number;
|
|
userId: string;
|
|
currency: Currency;
|
|
delta: number;
|
|
reason: "purchase" | "convert" | "spend" | "grant" | "refund";
|
|
refTxId?: string;
|
|
}
|
|
|
|
class Ledger {
|
|
entries: LedgerEntry[] = [];
|
|
apply(e: Omit<LedgerEntry, "ts">) {
|
|
this.entries.push({ ...e, ts: Date.now() });
|
|
}
|
|
balance(userId: string, c: Currency): number {
|
|
return this.entries
|
|
.filter(e => e.userId === userId && e.currency === c)
|
|
.reduce((s, e) => s + e.delta, 0);
|
|
}
|
|
}
|
|
```
|
|
|
|
### Bridge spend with anti-double-spend
|
|
```typescript
|
|
async function spendPrimogem(
|
|
ledger: Ledger,
|
|
userId: string,
|
|
amount: number,
|
|
txId: string // idempotency key
|
|
): Promise<{ ok: boolean; reason?: string }> {
|
|
if (ledger.entries.some(e => e.refTxId === txId)) {
|
|
return { ok: true }; // idempotent replay
|
|
}
|
|
if (ledger.balance(userId, "Primogem") < amount) {
|
|
return { ok: false, reason: "insufficient" };
|
|
}
|
|
ledger.apply({ userId, currency: "Primogem", delta: -amount,
|
|
reason: "spend", refTxId: txId });
|
|
return { ok: true };
|
|
}
|
|
```
|
|
|
|
### F2P-vs-whale parity tracking
|
|
```typescript
|
|
function monthlyEarnableBridge(): number {
|
|
// Daily commissions (60) + abyss (~600/cycle) + events (~1500) + bp (~680)
|
|
const daily = 60 * 30;
|
|
const abyss = 1200; // 2 cycles
|
|
const events = 1500;
|
|
const bp = 680;
|
|
return daily + abyss + events + bp; // ~5180 primogem ≈ 32 wishes
|
|
}
|
|
```
|
|
|
|
### Regional pricing matrix
|
|
```typescript
|
|
const REGION_FX: Record<string, number> = {
|
|
"US": 1.0, "EU": 0.95, "JP": 0.90,
|
|
"TR": 0.30, // historical PPP discount
|
|
"AR": 0.25, "BR": 0.50, "IN": 0.60,
|
|
};
|
|
function regionalUSD(usd: number, region: string): number {
|
|
return usd * (REGION_FX[region] ?? 1.0);
|
|
}
|
|
```
|
|
|
|
## 매 결정 기준
|
|
| 상황 | currency stack |
|
|
|---|---|
|
|
| 매 simple cosmetic store | single-tier (V-Bucks) |
|
|
| 매 gacha + grind dual loop | 3-tier with bridge |
|
|
| 매 light monetization indie | hard-only or single-tier |
|
|
| 매 enterprise / regulatory-sensitive | bridge layer + clear ToS |
|
|
|
|
**기본값**: 매 gacha + progression hybrid 매 → 매 3-tier (hard → bridge → soft) 매 standard.
|
|
|
|
## 🔗 Graph
|
|
- 부모: [[Currency Design]] · [[F2P Monetization]] · [[Game Economy]]
|
|
- 변형: [[Hard Currency]] · [[Soft Currency]] · [[Gacha Economy]]
|
|
- 응용: [[자원 로지스틱스(Resource Logistics)]] · [[유니버스 LTV(Universe LTV)]] · [[ARPU]]
|
|
- Adjacent: [[Loot Box Regulation]] · [[Pricing Strategy]] · [[Idempotency]]
|
|
|
|
## 🤖 LLM 활용
|
|
**언제**: 매 f2p / gacha / live-service 매 economy 매 design 시, 매 conversion-funnel 매 friction 의 의 의 calibrate 시.
|
|
**언제 X**: 매 premium one-time-purchase (no IAP) — 매 bridge unnecessary, 매 just confuses player.
|
|
|
|
## ❌ 안티패턴
|
|
- **매 4+ tiers**: 매 player 매 confused. 매 store screen 매 cluttered.
|
|
- **매 hidden conversion rate**: 매 ToS-buried rate → 매 trust 의 of erode + regulatory risk.
|
|
- **매 bridge ↔ hard 매 reversible**: 매 refund / arbitrage 의 의 의 의 의 의 의 expose.
|
|
- **매 no idempotency on spend**: 매 double-spend 매 의 의 race condition. 매 audit ledger 매 must.
|
|
|
|
## 🧪 검증 / 중복
|
|
- Verified (HoYoverse store ToS, Supercell economy 의 talks, GDC F2P monetization talks 2023-2025, Deconstructor of Fun analyses).
|
|
- 신뢰도 A.
|
|
|
|
## 🕓 Changelog
|
|
| 날짜 | 변경 |
|
|
|---|---|
|
|
| 2026-05-08 | Phase 1 |
|
|
| 2026-05-10 | Manual cleanup — 3-tier stack + bundle bonus tiers + idempotent ledger code |
|