Files
2nd/10_Wiki/Topics/Other/위험과 보상(Risks and Rewards).md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

6.4 KiB
Raw Blame History

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

// 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

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

// 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

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)

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)

// 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

🤖 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