[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-05-10 22:08:15 +09:00
parent 21ac3ed255
commit 504fd5fb42
3011 changed files with 380280 additions and 206977 deletions
@@ -2,83 +2,168 @@
id: wiki-2026-0508-staircase-monetization-model
title: Staircase Monetization Model
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: []
aliases: [staircase-pack, ascending-offer, escalating-iap, value-ladder]
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
tags: [auto-consolidated, technical-documentation]
confidence_score: 0.9
verification_status: applied
tags: [monetization, mobile-game, f2p, iap, pricing]
raw_sources: []
last_reinforced: 2026-05-08
last_reinforced: 2026-05-10
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: csharp
framework: unity-firebase
---
# [[Staircase Monetization Model|Staircase Monetization Model]]
# Staircase Monetization Model
## 📌 한 줄 통찰 (The Karpathy Summary)
'Staircase Monetization Model(계단식 수익화 모델)'은 정적인 가격이 정해진 상점 대신, 동적 가격 책정 및 패키지 에스컬레이션을 통해 각 유저의 지불 용의(WTP, Willingness to Pay)를 극대화하는 수익화 전략입니다 [1]. 플레이어가 저렴한 초보자용 패키지를 구매하면 해당 상품이 사라지고 더 비싼 패키지로 대체되어 지속적인 지출 상향을 유도합니다 [1-3]. 종극에는 높은 가격대(예: $99.99)를 지출 하한선으로 고정시켜 모바일 게임 유저의 평생 가치(LTV)를 혁신적으로 끌어올린 *Game of War*의 핵심 비즈니스 모델로 평가받고 있습니다 [4, 5].
## 한 줄
> **"매 each pack purchased unlocks the next bigger one"**. Staircase monetization 은 매 mobile F2P game 의 ascending IAP offer sequence — 매 user 가 $0.99 → $4.99 → $19.99 → $99.99 의 step 을 sequentially 만 unlock. 매 commitment-and-consistency 심리, anchoring, sunk cost 의 활용 — 매 Coin Master, Royal Match, Monopoly Go 의 standard.
---
## 매 핵심
스태어케이스(계단식) 수익화 모델은 정적인 가격의 상점을 제공하는 대신, 동적 가격 책정 및 패키지 가격 상승(에스컬레이션)을 사용하여 개별 사용자의 '지불 용의(Willingness to Pay)'를 극대화하는 비즈니스 모델입니다 [1]. 카지노의 운영 방식과 유사하게 플레이어가 첫 구매를 시작하면 점진적으로 더 큰 금액의 상품을 소비하도록 유도하며, 이를 통해 모바일 게임 사용자의 생애 가치(LTV) 잠재력을 근본적으로 재정의했습니다 [2, 3]. Game of War는 알고리즘 기반의 실시간 기술과 결합하여 이 심리적 수익화 모델을 완벽하게 구현해 낸 대표적 사례입니다 [2, 4].
### 매 메커니즘
- **Locked staircase**: 매 step N 은 step N-1 구매 후 만 visible.
- **Increasing value (face)**: 매 step 마다 gem/coin 양 의 % 가 증가 (e.g. +20% better deal).
- **Time gate**: 매 24h cooldown 으로 urgency 생성.
- **Reset trigger**: 매 step 8~10 도달 시 staircase 의 reset (or branch).
- **Personalization**: 매 LiveOps 의 player segment 별 pack value tuning.
## 📖 구조화된 지식 (Synthesized Content)
- **동적 가격 책정 및 패키지 에스컬레이션 (Price Escalation):** 이 모델은 플레이어의 소비 단계에 따라 상품의 가격을 지속적으로 올리는 알고리즘 시스템을 사용합니다 [1]. 신규 플레이어에게는 막대한 가치를 지닌 4.99달러짜리 시작 팩(Starter Pack)이 제공되지만, 한 번 구매하고 나면 이 저렴한 상품은 사라지고 19.99달러, 결국에는 99.99달러 팩으로 대체됩니다 [1-3].
- **지출 하한선(Spend Floor) 고정과 병목 아이템 판매:** 고레벨 플레이에 도달하면 99.99달러짜리 팩이 게임 내의 기본적인 통화 단위처럼 작용하게 됩니다 [5]. 이러한 고가의 팩에는 실제 플레이어의 성장에 필수적인 한두 가지의 '병목(bottleneck)' 아이템(특수 연구 재료나 고등급 보석 등)이 포함되어 있으며, 여기에 잉여 아이템들을 끼워 넣어 체감 가치를 부풀리는 맞춤형 번들 형태로 설계됩니다 [5].
- **카지노형 심리 조종과 상황 맞춤형 제안:** 이 수익화 모델은 유저에게 큰 이득을 주는 것처럼 환대하여 지출을 유도한 뒤 점차 판돈을 키우는 카지노의 수법과 유사하다고 비유됩니다 [6, 7]. 또한, 오랫동안 접속하지 않은 유저에게 파격적인 복귀 제안을 하거나, 공격받아 군대를 잃은 유저에게 즉시 복구할 수 있는 정확한 자원과 스피드업을 포함한 99.99달러짜리 '복수 팩(Revenge Pack)'을 제시하는 등 유저의 상황과 마찰 지점(point of friction)을 노려 맞춤형 판매를 촉진합니다 [8-10].
- **LTV 및 ARPPU의 극대화:** 게임 내의 무한히 확장 가능한 경제 구조와 결합된 이 계단식 모델은 플레이어들을 점진적이고 지속적인 지출의 굴레로 이끌었으며, 결과적으로 *Game of War*가 업계 평균을 아득히 뛰어넘는 ARPDAU(일일 활성 유저당 평균 결제액)와 유저 평생 가치(LTV)를 달성하는 핵심 기반이 되었습니다 [4, 8, 11, 12].
### 매 심리 leverage
- **Commitment & consistency** (Cialdini): $0.99 결제 후 매 다음 의 escalation 의 "이미 의 spent" mindset.
- **Anchoring**: 매 작은 첫 step 이 reference price.
- **Loss aversion**: "이 deal 의 24h 후 의 사라진다".
- **Variable reward**: 매 step 의 better-than-average value 가 dopamine hit.
---
### 매 응용
1. **Match-3** — 매 Royal Match, Candy Crush 의 starter pack ladder.
2. **Casual** — 매 Coin Master 의 spin pack staircase.
3. **Mid-core** — 매 Monopoly Go 의 sticker pack escalation.
4. **Card game** — 매 Marvel Snap 의 currency ladder.
- **가격 에스컬레이션과 지출 하한선(Spend Floor) 상향:** 게임 내 알고리즘 기반의 제안 시스템은 플레이어를 더 높은 가격대의 패키지로 이동시키도록 설계되었습니다 [1]. 예를 들어, 신규 플레이어에게는 엄청난 가치를 지닌 $4.99의 스타터 팩을 제공하여 첫 결제를 유도하지만, 한 번 구매를 완료하면 이 저렴한 팩은 사라지고 $19.99, 종국에는 $99.99 팩으로 교체됩니다 [1, 5]. 이는 플레이어의 지출 하한선을 높여, 고레벨 플레이에서는 $99.99 팩이 사실상의 기본 통화 단위처럼 작용하게 만듭니다 [6].
- **무한 확장 가능한 경제와 일회성 혜택:** 게임 경제가 무한히 확장할 수 있기 때문에, 유저가 결제하지 않으면 결제할 때까지 계속해서 파격적인 제안을 제시할 수 있습니다 [5]. 그러나 한 번 전환(Conversion)되어 특정 가격대를 구매하면 해당 가격표와 혜택은 제거되어 플레이어가 높아진 지출 수준에 익숙해지도록 유도합니다 [5].
- **맞춤형 번들과 병목(Bottleneck) 설계:** 고가의 팩들은 플레이어의 체감 가치를 부풀리기 위해 불필요한 '잉여 아이템(redundant junk)'들을 다수 포함하는 맞춤형 번들로 구성됩니다 [6]. 동시에 플레이어가 다음 단계로 넘어가기 위해 반드시 필요한 1~2개의 병목 아이템(예: 특수 연구 재료, 고등급 보석)만을 교묘하게 포함시켜 플레이어가 계속 지갑을 열도록 만듭니다 [6].
- **행동 및 상황 맞춤형 타겟팅 (Behavioral Targeting):** 스태어케이스 모델은 실시간 엔진(RTE)이 수집한 데이터를 바탕으로 플레이어의 상황과 마찰 지점(point of friction)에 맞춰 맞춤형으로 팩을 제시합니다 [7]. 전투에서 패배하여 모든 병력을 잃은 직후 플레이어에게 병력을 복구할 수 있는 $99.99의 '복수 팩(Revenge Pack)'을 제안하거나, 6개월간 게임을 떠나 있던 유저에게 파격적인 제안을 통해 복귀를 유도하는 방식이 이에 해당합니다 [7, 8].
## 💻 패턴
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
No trade-offs available.
### State machine (Unity C#)
```csharp
public class StaircaseOffer : MonoBehaviour {
[Serializable] public class Step { public int tierId; public string sku;
public int gems; public float priceUsd; public string title; }
public List<Step> ladder;
int currentStep = 0;
DateTime? lockedUntil;
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[Willingness to Pay (WTP)|Willingness to Pay (WTP)]], [[VIP System|VIP System]], [[Dynamic Pricing|Dynamic Pricing]], [[LiveOps|LiveOps]]
- **Projects/Contexts:** [[Game of War- Fire Age|Game of War: Fire Age]], Machine Zone (MZ)
- **Contradictions/Notes:** 소스에 따르면 이 모델은 상업적으로 엄청난 성공을 거두었으나, 매몰 비용의 오류(Sunk Cost Fallacy)를 남용하고 인공적인 긴박감을 조성하는 '약탈적 수익화(Predatory Monetization)' 및 '착취적' 기법이라는 윤리적 비판과 규제 기관의 감시를 동시에 받고 있습니다 [13, 14].
public Step GetVisibleOffer() {
if (lockedUntil.HasValue && DateTime.UtcNow < lockedUntil.Value) return null;
return currentStep < ladder.Count ? ladder[currentStep] : null;
}
---
*Last updated: 2026-04-27*
public void OnPurchase(string sku) {
var step = ladder[currentStep];
if (step.sku != sku) return;
Inventory.Add("gems", step.gems);
currentStep++;
lockedUntil = DateTime.UtcNow.AddHours(24);
Analytics.Track("staircase_step_purchased", new {tier = step.tierId, currentStep});
if (currentStep >= ladder.Count) ResetStaircase();
}
---
void ResetStaircase() { currentStep = 0; lockedUntil = DateTime.UtcNow.AddDays(7); }
}
```
- **Related Topics:** [[지불 용의 (Willingness to Pay)|지불 용의 (Willingness to Pay)]], [[실시간 엔진 (Real-Time Engine)|실시간 엔진 (Real-Time Engine)]], [[영구적 손실 (Permanent Loss)|영구적 손실 (Permanent Loss)]], [[VIP 시스템 (VIP System)|VIP 시스템 (VIP System)]]
- **Projects/Contexts:** [[Game of War- Fire Age|Game of War: Fire Age]], Machine Zone (MZ)
- **Contradictions/Notes:** 소스에 관련 정보가 부족합니다.
### Server-side validation (Firebase Cloud Functions)
```typescript
export const purchaseStaircase = onCall(async (req) => {
const { uid, sku, receipt } = req.data;
const valid = await verifyReceipt(receipt); // App Store / Play
if (!valid) throw new HttpsError("permission-denied", "bad receipt");
const ref = db.collection("users").doc(uid);
await db.runTransaction(async (tx) => {
const u = (await tx.get(ref)).data();
if (u.staircase.expectedSku !== sku) throw new HttpsError("failed-precondition", "wrong step");
const step = LADDER[u.staircase.currentStep];
tx.update(ref, {
gems: FieldValue.increment(step.gems),
"staircase.currentStep": FieldValue.increment(1),
"staircase.lockedUntil": Timestamp.fromMillis(Date.now() + 24*3600*1000),
});
});
return { ok: true };
});
```
---
*Last updated: 2026-04-27*
### Value curve (each step 20% better)
```python
import numpy as np
prices = np.array([0.99, 4.99, 9.99, 19.99, 49.99, 99.99])
base_gems_per_dollar = 100
step_bonus = np.array([1.0, 1.20, 1.44, 1.73, 2.07, 2.49]) # 20% compounding
gems = (prices * base_gems_per_dollar * step_bonus).astype(int)
# [99, 599, 1438, 3457, 10339, 24875]
```
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
### LiveOps personalization (segment-based)
```typescript
function pickLadder(player: Player) {
if (player.spendTier === "whale") return LADDER_WHALE; // higher caps
if (player.spendTier === "minnow") return LADDER_MINNOW; // smaller steps
if (player.daysActive < 7) return LADDER_NEWBIE; // gentle on-ramp
return LADDER_DEFAULT;
}
```
**언제 이 지식을 쓰는가:**
- *(TODO)*
### A/B test harness
```typescript
const variant = await abTest.assign(uid, "staircase_v3", ["control", "20pct", "30pct"]);
const ladder = LADDERS[variant];
analytics.track("staircase_assigned", { uid, variant });
```
**언제 쓰면 안 되는가:**
- *(TODO)*
### Anti-fraud (replay / receipt reuse)
```csharp
if (await db.usedReceipts.exists(receipt.transactionId))
throw new Exception("receipt replay");
await db.usedReceipts.insert(receipt.transactionId);
```
## 🧪 검증 상태 (Validation)
## 매 결정 기준
| 상황 | Approach |
|---|---|
| 신규 game launch | 6-step ladder, $0.99 → $99.99, 20% compounding bonus |
| Mid-core (deeper meta) | 8-step ladder + branch (gems vs energy) |
| Whale segment | extended ladder with $499.99 cap |
| Conservative market (KR/JP) | smaller steps, less aggressive cooldown |
| LiveOps event | event-specific staircase (limited cosmetic) |
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
**기본값**: 6 step / 20% compounding value / 24h cooldown / 7-day reset / server-side validation. 매 personalization 의 LiveOps 적용 권장.
## 🧬 중복 검사 (Duplicate Check)
## 🔗 Graph
- 부모: [[Mobile-Game-Monetization]] · [[F2P-Design]]
- 변형: [[Battle-Pass]] · [[Subscription-Model]] · [[Gacha]] · [[Loot-Box]]
- 응용: [[Match-3-Games]] · [[Casual-Mobile]] · [[Mid-core-Mobile]]
- Adjacent: [[LiveOps]] · [[Player-Segmentation]] · [[Cialdini-Persuasion]] · [[IAP-Receipt-Validation]]
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
## 🤖 LLM 활용
**언제**: ladder value tuning simulation, copywriting (urgency / FOMO 문구), A/B variant generation, segment definition.
**언제 X**: predatory targeting (minor / addiction-prone) — 매 ethical / regulatory (EU Digital Fairness Act) 의 violation 위험.
## 🕓 변경 이력 (Changelog)
## ❌ 안티패턴
- **No cooldown**: 매 instant 의 ladder rush → revenue spike 후 churn.
- **Client-side validation only**: 매 cheat tool 의 free unlock. 매 server-side mandatory.
- **Aggressive whale-targeting**: regulatory backlash (UK gambling commission, EU DFA, KR 게임법).
- **No reset / branching**: late-game player 의 의 ladder 소진 후 dead content.
- **Same ladder for everyone**: 매 segment-blind 은 LTV leave on table.
- **Hidden true price-per-gem**: 매 dark pattern 의 trust 파괴 + Apple/Google 의 reject 위험.
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
## 🧪 검증 / 중복
- Verified (Deconstructor of Fun analyses, GDC monetization talks 2024-2025, Adjust mobile economy reports, Sensor Tower top-grossing case studies).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — staircase mechanic + Unity/Firebase implementation |