Files
2nd/10_Wiki/Topics/Architecture/FOMO (Fear of Missing Out).md
T
2026-05-10 22:08:15 +09:00

183 lines
5.9 KiB
Markdown

---
id: wiki-2026-0508-fomo-fear-of-missing-out
title: FOMO (Fear of Missing Out)
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [FOMO, Fear of Missing Out, 포모]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [game-design, monetization, psychology, behavioral]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: design
framework: live-ops
---
# FOMO (Fear of Missing Out)
## 매 한 줄
> **"매 놓칠지 모른다는 불안이 행동을 유발한다"**. 매 FOMO는 social media + game design + monetization의 핵심 lever — limited-time event, exclusive cosmetic, battle pass의 driving force. 2026 mobile gaming revenue의 60%+가 매 FOMO mechanic 기반.
## 매 핵심
### 매 심리학 base
- **Loss aversion** (Kahneman): 매 loss는 gain보다 2x painful
- **Social comparison** (Festinger): 매 peer가 가진 것 → 매 desire
- **Scarcity heuristic**: 매 rare = valuable 의 자동 추론
- 매 FOMO는 매 evolved survival instinct (놓치면 자원 부족)의 hijack
### 매 Game Design lever
- **Time-gated content**: 매 event 7일, 매 daily login bonus
- **Limited cosmetics**: 매 "이 skin은 다시는 안 나옴" claim
- **Battle pass FOMO**: 매 시즌 끝나면 보상 영원히 lost
- **Push notification**: 매 "친구가 1위!" — direct social FOMO
### 매 응용
1. Fortnite item shop (24h rotation).
2. Genshin Impact limited banner (5-star character 일정 기간만).
3. Duolingo streak (매 끊기면 손실감).
4. Instagram/TikTok stories (24h disappearance).
## 💻 패턴
### Limited-Time Event Logic (Unity C#)
```csharp
public class LimitedEvent : MonoBehaviour
{
public DateTime startUtc;
public DateTime endUtc;
public Reward exclusiveReward;
void Update()
{
var now = DateTime.UtcNow;
if (now < startUtc) ShowCountdown(startUtc - now, "starts in");
else if (now < endUtc) ShowCountdown(endUtc - now, "ends in");
else HideEvent();
}
void ShowCountdown(TimeSpan ts, string prefix)
{
// 매 urgency UI: red text, ticking sound
countdownText.text = $"{prefix} {ts.Hours}h {ts.Minutes}m";
countdownText.color = ts.TotalHours < 1 ? Color.red : Color.white;
}
}
```
### Battle Pass Tier (TypeScript)
```typescript
interface BattlePass {
seasonEndUtc: Date;
tiers: Tier[];
userXP: number;
}
function unclaimedRewards(bp: BattlePass): number {
const currentTier = Math.floor(bp.userXP / 1000);
return bp.tiers
.slice(0, currentTier + 1)
.filter(t => !t.claimed && !t.locked)
.length;
}
// 매 push notification trigger
if (unclaimedRewards(bp) > 0 && hoursUntilEnd(bp) < 48) {
sendPush(`${unclaimedRewards(bp)} 보상이 곧 사라집니다!`);
}
```
### Streak Reset Warning (Python)
```python
from datetime import datetime, timedelta
def check_streak_at_risk(user):
last_active = user.last_login
now = datetime.utcnow()
deadline = last_active + timedelta(hours=24)
hours_left = (deadline - now).total_seconds() / 3600
if 0 < hours_left < 4 and user.streak_days >= 7:
send_notification(
user,
f"{user.streak_days}일 연속 기록이 {int(hours_left)}시간 후 끊깁니다"
)
```
### Gacha Pity System (showing scarcity)
```python
class GachaBanner:
def __init__(self):
self.pity_counter = 0
self.featured_5star_rate = 0.006
self.hard_pity = 90
def pull(self) -> Item:
self.pity_counter += 1
if self.pity_counter >= self.hard_pity:
self.pity_counter = 0
return self.featured_5star
if random.random() < self.featured_5star_rate:
self.pity_counter = 0
return self.featured_5star
return random_lower_rarity()
def banner_ends_in_days(self) -> int:
return (self.end_date - datetime.now()).days
```
### Social FOMO Push (FCM)
```python
def notify_friend_milestone(user_id: int, friend_id: int, achievement: str):
user = get_user(user_id)
friend = get_user(friend_id)
fcm.send(
token=user.fcm_token,
title=f"{friend.name}님이 {achievement} 달성!",
body="매 친구를 따라잡으세요",
data={"deeplink": f"profile/{friend_id}"}
)
```
## 매 결정 기준
| 상황 | FOMO 강도 |
|---|---|
| Casual mobile game | Low — soft daily login bonus |
| Live-service multiplayer | Medium — battle pass, seasonal events |
| Gacha / collection RPG | High — limited banners, time-gated chars |
| Premium single-player | None — ethical: 매 player time respect |
**기본값**: 매 ethical FOMO (notify, don't manipulate). 매 dark pattern 회피 — regulatory risk (EU, Belgium loot box bans).
## 🔗 Graph
- 부모: [[Behavioral Psychology]] · [[Game Design]]
- 변형: [[Loss Aversion]] · [[Scarcity Marketing]]
- 응용: [[Battle Pass]] · [[Gacha Mechanics]] · [[Live Service Games]]
- Adjacent: [[Engagement Loops]] · [[Variable Reward Schedule]] · [[Skinner Box]]
## 🤖 LLM 활용
**언제**: 매 retention strategy 설계, event scheduling, push notification copy 생성.
**언제 X**: 매 vulnerable population (kids, gambling-prone) target — ethical/legal risk.
## ❌ 안티패턴
- **Predatory FOMO**: 매 minor / addiction-prone 대상 dark pattern → 매 lawsuit, regulation.
- **Notification spam**: 매 매일 5+ FOMO push → 매 uninstall.
- **Fake scarcity**: 매 "limited" 인데 매번 재출시 → 매 trust erosion.
- **No off-ramp**: 매 streak 끊고 싶을 때 vacation mode 없음.
## 🧪 검증 / 중복
- Verified (Przybylski et al., "Motivational, emotional, and behavioral correlates of fear of missing out", 2013).
- Verified (Belgium Gambling Commission loot box ruling, 2018).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — game design + monetization mechanics |