---
id: wiki-2026-0508-위험과-보상-risks-and-rewards
title: 위험과 보상(Risks and Rewards)
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Risk-Reward, R&R Curve, 리스크 리워드]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [game-design, economy, risk-reward, decision-making]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: typescript
  framework: unity-csharp
---

# 위험과 보상(Risks and Rewards)

## 매 한 줄
> **"매 player choice 매 risk-reward tension 의 산물"**. 매 1980s arcade era (Pac-Man power pellet hunt, Galaga fighter capture) 부터 매 2026 modern roguelite (Hades heat system, Balatro stake escalation) 까지 매 동일한 design pillar 의 작동 — 매 player 에게 매 "더 큰 reward 의 위해 매 더 큰 risk 매 감수할 것인가?" 의 매 질문 의 제시.

## 매 핵심

### 매 R&R curve shape
- **매 linear**: risk 2배 = reward 2배. 매 보장적 매 boring.
- **매 convex (accelerating)**: risk 2배 = reward 4배+. 매 high-skill push 매 보상.
- **매 concave (diminishing)**: risk 2배 = reward 1.3배. 매 conservative play 매 우대.
- **매 step function**: threshold 매 도달 시 매 jump. 매 commitment 매 design.

### 매 expected value (EV) framework
- EV = Σ(outcome × probability)
- 매 design goal: 매 EV(risky) > EV(safe) by ~10-20% 매. 매 너무 크면 매 risk 매 obvious choice. 매 너무 작으면 매 risk 매 trap.
- 매 variance 매 player perception 의 영향 — 매 same EV 라도 매 high-variance 매 더 위험적 매 felt.

### 매 응용
1. 매 Hades heat: +1 heat = run 의 +X% 의 어려움, +Y% 의 reward bonus. 매 player chooses pace.
2. 매 Balatro stake: ante 매 escalation curve 매 explicit risk dial.
3. 매 Diablo 4 Pit tier: timer 매 압박 의 high-tier 매 push 시 매 huge loot.
4. 매 PoE Atlas: map mods (more rare/magic) 매 increase difficulty + drop quality.
5. 매 Tarkov raid: extract early (safe loot) vs hunt boss (rare items, PvP risk).

## 💻 패턴

### Linear vs convex reward curve
```typescript
// Linear: predictable, low excitement
const linearReward = (risk: number) => 100 * risk;

// Convex: high-skill players get exponential reward
const convexReward = (risk: number) => 100 * Math.pow(risk, 1.6);

// Concave: protect casual players from punishment-snowball
const concaveReward = (risk: number) => 100 * Math.pow(risk, 0.7);

// Step: clear "go/no-go" decisions
const stepReward = (risk: number) =>
  risk < 0.3 ? 50 : risk < 0.7 ? 200 : 1000;
```

### Expected value calculator
```typescript
type Outcome = { value: number; probability: number };

function expectedValue(outcomes: Outcome[]): number {
  return outcomes.reduce((sum, o) => sum + o.value * o.probability, 0);
}

// Design check: risky path should EV-dominate by 10-20%
const safe: Outcome[] = [{ value: 100, probability: 1.0 }];
const risky: Outcome[] = [
  { value: 300, probability: 0.4 },
  { value: 0, probability: 0.6 },
];
console.log(expectedValue(safe));   // 100
console.log(expectedValue(risky));  // 120 — 20% premium for variance
```

### Variance-aware reward
```typescript
// Risk-averse player simulation: subtract σ * λ from EV
function utility(outcomes: Outcome[], lambda = 0.3): number {
  const ev = expectedValue(outcomes);
  const variance = outcomes.reduce(
    (s, o) => s + o.probability * (o.value - ev) ** 2, 0
  );
  return ev - lambda * Math.sqrt(variance);
}
```

### Hades heat system pattern
```csharp
public class HeatModifier {
    public string Name;
    public float DifficultyDelta;  // +0.15 enemy HP
    public float RewardMultiplier;  // +0.10 darkness
}

public class RunConfig {
    public List<HeatModifier> Active = new();
    public float TotalReward => 1f + Active.Sum(h => h.RewardMultiplier);
    public float TotalDifficulty => 1f + Active.Sum(h => h.DifficultyDelta);
    // Player picks which axis to dial: more enemies vs tougher boss vs less heal
}
```

### Push-your-luck (Balatro/Slay the Spire elite)
```typescript
class PushYourLuck {
  pot = 0;
  rounds = 0;
  bustChance = 0.15;
  step() {
    this.rounds++;
    this.bustChance += 0.05; // escalating
    if (Math.random() < this.bustChance) return { result: "bust", payout: 0 };
    this.pot += 100 * Math.pow(1.4, this.rounds);
    return { result: "continue", pot: this.pot };
  }
  cashOut() { return { result: "cashed", payout: this.pot }; }
}
```

### Asymmetric punishment (Tarkov-style)
```typescript
// Death = lose carried gear; success = keep + bonus
function raidOutcome(survived: boolean, lootValue: number, gearValue: number) {
  return survived ? { net: lootValue } : { net: -gearValue };
}
// Design: gearValue ≈ 0.5 * expected lootValue (so EV stays positive but tense)
```

## 매 결정 기준
| 상황 | Approach |
|---|---|
| 매 player skill 매 wide range | concave curve (cap snowball) |
| 매 high-skill audience (roguelike vet) | convex curve |
| 매 binary commit decisions | step function |
| 매 short session loop | step (clear payoff) |
| 매 long session escalation | continuous + variance |

**기본값**: 매 mildly convex (exponent ~1.3-1.5) + 매 EV premium 매 15% 매 risky path 의 매 적용.

## 🔗 Graph
- 부모: [[Game Economy]] · [[Decision Making]]
- 변형: [[위험과 보상 구조(Structures of Risks and Rewards)]]
- 응용: [[핀치 포인트(Pinch Point)]]
- Adjacent: [[Loss Aversion]]

## 🤖 LLM 활용
**언제**: 매 economy / progression / encounter 매 design 시 매 player choice tension 의 calibrate 시.
**언제 X**: 매 narrative-only 매 walking sim (no choice stakes) — 매 R&R framework 매 misapplied.

## ❌ 안티패턴
- **매 risk without reward**: 매 die 시 매 lose progress, 매 win 시 매 nothing extra. 매 player 매 leave.
- **매 reward without risk**: 매 free 의 grind 의 best gear. 매 boring.
- **매 hidden EV**: 매 player 매 calculate 의 X. 매 trap design (slot machine illusion) — 매 ethical 의 X.
- **매 binary cliff**: 매 EV jump 매 too sharp 매 → 매 only one viable path.

## 🧪 검증 / 중복
- Verified (Schell *Art of Game Design*, Adams *Fundamentals of Game Design*).
- 매 modern roguelite 매 case studies (Hades, Balatro, Slay the Spire).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — R&R curve types + EV framework + working code patterns |
