Files
2nd/10_Wiki/Topic_General/From_Other/위험과 보상(Risks and Rewards).md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

173 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 |