"매 Monetization at the Point of Friction은 매 player 가 매 가장 frustrated/blocked 한 순간에 매 IAP offer 의 매 surface". 매 GameRefinery·매 Deconstructor of Fun 의 매 canonical concept — 매 conversion rate 의 매 5-10x lift via contextual targeting vs static store.
매 핵심
매 Friction Points (where to surface)
Death/Loss: 매 PvP defeat → "Revive for 50 gems" or "Buy shield to prevent next attack".
Fail State: 매 puzzle/level fail → "Continue with 5 lives pack ($1.99)".
Gating Wall: 매 building timer 23h → "Skip for 200 gold".
Resource Cap: 매 storage full mid-event → "Resource pack on sale 50%".
Event Deadline: 매 leaderboard top-100 within 1h → "Bundle of speedups".
매 Implementation Principles
Server-driven: 매 client 의 매 friction event 의 emit, 매 server 의 매 offer eligibility/pricing 의 매 decide.
Capped frequency: 매 same friction event 의 매 24h 내 매 1-2 offer 의 매 max — 매 fatigue 의 매 prevent.
Personalized pricing: 매 player segment (whale/dolphin/minnow/F2P) 별 매 different offer.
Discount/scarcity: 매 "Limited 30min" timer + 매 "70% off" 의 매 urgency cues.
매 응용
Clash Royale 의 매 "lost trophy" surge offer.
Royal Match 의 매 매 fail-state booster bundle.
War Commander 의 매 매 base destroyed → revenge pack.
// After being attacked, surface a "shield + troop pack" within 60s
asyncfunctiononPvpLoss(victim: PlayerId,attacker: PlayerId,troopsLost: number){constseverity=troopsLost/getTotalTroops(victim);if(severity<0.1)return;// not painful enough
awaitemitFriction(victim,{type:'PVP_LOSS',attackerId: attacker,lossSeverity: severity});}// Offer: 24h shield + 80% troops restore for $4.99 (vs $14.99 normal)
Personalized pricing by segment
SEGMENT_DISCOUNT={'whale':1.0,# full price — they'll pay'dolphin':0.7,# 30% off'minnow':0.5,# 50% off'f2p':0.3,# 70% off — first-time buyer hook}defpersonalize(base_offer:Offer,evt:FrictionEvent,state)->Offer:seg=classify(state)returnbase_offer.with_price(base_offer.usd*SEGMENT_DISCOUNT[seg])
Timer-skip just-in-time offer
// When user opens app and sees a 22h+ build timer, surface skip offer
asyncfunctiononAppOpen(userId: string){constbuilds=awaitactiveBuildsOf(userId);constlong=builds.filter(b=>b.remainingSec>20*3600);if(long.length===0)return;awaitemitFriction(userId,{type:'TIMER_LONG',timerSec: long[0].remainingSec,building: long[0].id});}
Offer fatigue / impression cap
# Hard cap: 3 friction-offers per session, 8 per dayMAX_PER_SESSION=3MAX_PER_DAY=8asyncdefcan_show_offer(user_id:str)->bool:today=awaitcount_offers_today(user_id)session=awaitcount_offers_session(user_id)returntoday<MAX_PER_DAYandsession<MAX_PER_SESSION
언제: 매 F2P live-ops 의 매 contextual offer design, 매 friction-event taxonomy 의 매 modeling, 매 segment-based pricing.
언제 X: 매 premium one-time-purchase game (매 friction monetization 의 매 inappropriate).
❌ 안티패턴
Predatory friction: 매 fail state 의 매 artificially-engineer 의 매 monetization motive — 매 player trust 의 매 erode.
No cooldown: 매 매 every loss 의 매 popup 의 매 ad-spam UX.
Static pricing: 매 매 segment 무시 의 매 conversion rate 의 매 70% drop vs personalized.
🧪 검증 / 중복
Verified (Deconstructor of Fun "Just-in-Time Monetization" 2023, GameRefinery quarterly reports, Supercell GDC 2022 talk).