--- id: wiki-2026-0508-핀치-포인트-pinch-point title: 핀치 포인트(Pinch Point) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Pinch Point, Story Pinch, Tension Pinch, 핀치] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [narrative, story-structure, pacing, screenwriting, game-narrative] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: markdown framework: narrative-design --- # 핀치 포인트(Pinch Point) ## 매 한 줄 > **"매 protagonist 의 antagonist 매 force 매 reminder beat"**. 매 Larry Brooks *Story Engineering* (2011), Syd Field 매 paradigm 매 elaboration. 매 3-act / 4-part structure 의 두 핀치 (Pinch 1 ~37%, Pinch 2 ~62%) 매 reader 매 stakes 의 reinforce + 매 hero 매 vulnerability 의 expose. ## 매 핵심 ### 매 위치 / 매 function - **Pinch 1 (~37% mark)**: 매 first half 매 의 antagonistic force 의 의 의 reminder. 매 protagonist 매 still 매 reactive. - **Pinch 2 (~62% mark)**: 매 protagonist 매 proactive shift 의 직전. 매 highest 매 stakes-reveal 의 the moment. - 매 Brooks 의 4-part 의 → Part 1 (setup), Part 2 (response), Part 3 (attack), Part 4 (resolution). 매 pinch 매 Part 2/3 의 의 anchor. ### 매 game narrative 의 매 mapping - 매 RPG act break / boss reveal moment 매 typical pinch. - 매 mid-game antagonist 매 "true power" 매 reveal scene. - 매 ally betrayal / death 의 stakes 의 raise. - 매 player 매 "of course this enemy 매 still 매 dangerous" 의 의 reminder. ### 매 응용 1. 매 *Star Wars: A New Hope* — Pinch 1: Death Star demonstrates power on Alderaan. Pinch 2: Obi-Wan 의 death. 2. 매 *Lord of the Rings: Fellowship* — Pinch 1: Nazgûl on Weathertop. Pinch 2: Balrog / Gandalf falls. 3. 매 *Hades (game)* — 매 Hades 본인 매 throne room reveal 매 mid-run pinch. 4. 매 *Final Fantasy 7* — Aerith 의 death (mid-game pinch). 5. 매 TV serials (*Breaking Bad* season midpoints) 매 동일한 beat 의 의 사용. ## 💻 패턴 ### Story beat sheet (markdown template) ```markdown ## Act Structure with Pinch Points | % | Beat | Function | |---|------|----------| | 1% | Hook | Open question | | 12% | Inciting Incident | Disturb status quo | | 25% | Plot Point 1 | Hero commits | | **37%** | **Pinch Point 1** | Antagonist shows force | | 50% | Midpoint | Information shift | | **62%** | **Pinch Point 2** | Stakes raised; hero vulnerable | | 75% | Plot Point 2 | All-is-lost / proactive shift | | 90% | Climax | Final confrontation | | 99% | Resolution | New equilibrium | ``` ### Game pinch trigger logic ```typescript type StoryProgress = { actPercent: number; flagsSet: string[] }; function checkPinchTriggers(p: StoryProgress): string | null { if (p.actPercent >= 0.37 && !p.flagsSet.includes("pinch1")) { return "TRIGGER_PINCH_1"; // antagonist demonstration cutscene } if (p.actPercent >= 0.62 && !p.flagsSet.includes("pinch2")) { return "TRIGGER_PINCH_2"; // ally death / power reveal } return null; } ``` ### Tension curve modeling ```python import numpy as np import matplotlib.pyplot as plt def tension_curve(beats: dict[float, float]) -> np.ndarray: """beats: {percent: tension_level 0-1}. Interpolated curve.""" xs = np.array(sorted(beats.keys())) ys = np.array([beats[x] for x in xs]) grid = np.linspace(0, 1, 100) return np.interp(grid, xs, ys) beats = { 0.0: 0.1, 0.12: 0.3, 0.25: 0.5, 0.37: 0.65, # pinch 1 0.50: 0.55, # brief reprieve 0.62: 0.80, # pinch 2 — higher than pinch 1 0.75: 0.95, 0.90: 1.00, 1.0: 0.2, } curve = tension_curve(beats) ``` ### Pinch beat checklist (writers' tool) ```typescript interface PinchBeat { position: 1 | 2; showsAntagonistPower: boolean; protagonistVulnerable: boolean; raisesStakes: boolean; thematicEcho: string; // ties to central theme doesNotResolve: boolean; // pinch ≠ midpoint resolution } function validatePinch(b: PinchBeat): string[] { const errs: string[] = []; if (!b.showsAntagonistPower) errs.push("Pinch must show antagonist force"); if (!b.protagonistVulnerable) errs.push("Hero must feel threatened"); if (!b.raisesStakes) errs.push("Stakes must escalate vs prior beat"); if (!b.doesNotResolve) errs.push("Pinch must NOT resolve the conflict"); return errs; } ``` ### Quest-graph pinch slot (RPG design) ```typescript type QuestNode = { id: string; tag: "setup" | "pinch1" | "midpoint" | "pinch2" | "climax" }; const mainline: QuestNode[] = [ { id: "intro_village", tag: "setup" }, { id: "first_dungeon", tag: "setup" }, { id: "antagonist_wipes_town", tag: "pinch1" }, { id: "midgame_revelation", tag: "midpoint" }, { id: "mentor_dies", tag: "pinch2" }, { id: "final_assault", tag: "climax" }, ]; ``` ## 매 결정 기준 | 상황 | 사용 | |---|---| | 매 3-act feature script | 2 pinches at 37% / 62% | | 매 short story / one-act | 1 pinch around 60% | | 매 long-form novel (60+ chapters) | multi-pinch (per act) | | 매 RPG main quest | pinch beats anchored to act breaks | | 매 TV episode (~22min) | 1 mini-pinch ~act break 2 | **기본값**: 매 ~37% / ~62% 의 의 두 pinch 매 placement, 매 adapt 의 의 length 의 . ## 🔗 Graph - 응용: [[위험과 보상(Risks and Rewards)]] - Adjacent: [[Tension Curve]] ## 🤖 LLM 활용 **언제**: 매 narrative game / screenplay / novel 의 의 outline 시, 매 mid-act 매 pacing slump 의 fix 시. **언제 X**: 매 systemic / sandbox 매 narrative-light 매 game (Minecraft, factory sims) — 매 forced pinch 매 awkward. ## ❌ 안티패턴 - **매 pinch 매 = 매 midpoint**: 매 confused. 매 pinch 매 reminder, 매 midpoint 매 information shift. - **매 resolved pinch**: 매 pinch 매 의 의 antagonist force 매 defeated 시 매 → 매 stakes collapse. - **매 flat pinches**: 매 두 pinch 매 same intensity → 매 escalation 의 의 의 X. - **매 telegraph 매 X**: 매 pinch 매 의 의 의 surprise 매 의 의 의 의 의 의 의 의, 매 setup 매 weak 시 매 cheap. ## 🧪 검증 / 중복 - Verified (Brooks *Story Engineering*, Field *Screenplay*, Snyder *Save the Cat*, Truby *The Anatomy of Story*). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — pinch positions + game-mapping + tension curve code + checklist |