Craft20 min read

Writing for Video Games: Branching Narratives

Branching narrative isn’t choose-your-own-adventure—it’s a story system. How to design state, pillar choices, reconvergence, and recognition so players feel agency without the script becoming unmaintainable.

ScreenWeaver Logo
ScreenWeaver Editorial Team
March 4, 2026

Writing for Video Games: Branching Narratives

You’ve spent years learning how to write a single story. One spine. One climax. One ending.

Then someone hands you a design doc for a narrative game and says: “The player can side with the rebels or the crown. They can romance three characters or none. The last act has six possible endings depending on choices in Acts One and Two.”

Your first instinct might be to panic. Or to treat it like a choose-your-own-adventure with extra steps.

It’s neither. Branching narrative is its own craft. It borrows from film and TV—scene structure, dialogue, character voice—but the moment the player can change the path, you’re no longer writing a story. You’re writing a story system.

Here’s how to think about it, and how to avoid the traps that sink most first-time game writers.

What “Branching” Actually Means (And What It Doesn’t)

In linear media, the writer controls sequence. Page 47 always follows page 46. In a branching game, the player’s choices (and sometimes hidden variables) determine which scenes ever run.

That doesn’t mean every scene has twelve variants. It means you’re designing a graph: nodes (beats, scenes, conversations) and edges (transitions triggered by choice, state, or logic).

Some branches reconverge quickly. The player picks a dialogue line; the NPC reacts differently for thirty seconds; then both paths merge back into the same story beat. Other branches are permanent. They lock out whole plotlines, characters, or endings.

The skill is knowing when to branch, when to merge, and when to keep the spine intact so the production doesn’t explode.

The best branching stories feel expansive to the player but manageable to the team. They’re not “everything is possible.” They’re “a curated set of possibilities that all feel earned.”

If you’ve never built a narrative design doc, that distinction is easy to miss. Writers often either over-branch (every line is a choice, the script becomes unmaintainable) or under-branch (the game promises agency but the story is basically linear with cosmetic flavor). Both disappoint players.

The Real Stakes: Why Players Care About Choices

Players don’t just want “more options.” They want to feel that their decisions matter.

That can mean big, plot-altering choices: who lives, who rules, which faction wins. It can also mean small, character-deepening ones: what they say in a private moment, whether they show mercy or cruelty, how they respond to a companion’s confession.

The games that stick in people’s minds are usually the ones where a choice in Hour 2 pays off in Hour 20—or where the payoff is simply that the character they’re role-playing would have said that, and the writer honored it.

So before you draw a single branch, ask: what is this game’s contract with the player? Are we promising political consequence? Emotional consequence? The chance to define a relationship? All of the above, in different layers?

Once you know that, you can design branches that serve the contract instead of scattering choices everywhere.

Branch typePlayer expectationWriter’s job
Dialogue-onlyTone, character voice, occasional humor or crueltyKeep character consistent; avoid branches that change plot if not flagged
Short-term consequenceThis scene or the next few changeTrack a simple variable; reconverge soon
Long-term / endingThis choice affects finale or who survivesDocument state; ensure set-up exists in shared story
Identity / role-play“My character would say this”Offer distinct attitudes; avoid right/wrong framing

This table isn’t a rulebook. It’s a way to label what each branch is for, so you don’t promise weight where you’re only delivering flavor, or vice versa.

Scenario 1: The Screenwriter Who Branches Every Line

Maya has written three feature scripts. She’s hired as narrative designer on a mid-budget RPG. The lead designer says: “We want meaningful choices. Go wild.”

She does. Every conversation gets five or six options. She writes alternate scenes for “if the player was rude earlier,” “if they helped the merchant,” “if they’re playing a mage,” “if they’re playing a pacifist.” By month two she has a script that’s four times the size of a linear story. By month four, the team can’t implement it. Key branches are cut. The ones that remain feel arbitrary because the logic is too tangled to test properly.

Maya confused “meaningful” with “maximum.”

Meaningful means: the player’s choice changes something they care about—outcome, relationship, or self-expression. It doesn’t mean every line has to fork.

The fix is to designate a small number of pillar choices: decisions that the design team agrees will have lasting impact. Everything else either feeds into those pillars (e.g., “did they earn the companion’s trust?”) or stays local (tone, one-off jokes, minor NPC reactions). You branch heavily at the pillars; you keep the rest lean.

Scenario 2: The Novelist Who Forgets the Player Exists

David comes from prose fiction. He’s great at voice and atmosphere. He writes a branching script where every path is rich and literary—long speeches, layered symbolism, subtle shifts in relationship.

In playtest, players skip dialogue. They click through. They say the story “doesn’t react” to what they did.

David wrote branches that he could follow. He didn’t write feedback. The player makes a hard choice—betray a friend, spare an enemy—and the next scene doesn’t acknowledge it. No changed line, no different look from an NPC, no journal entry, no companion comment. So the choice feels invisible.

In branching narrative, recognition is part of the script. You don’t just write Branch A and Branch B. You write the moments where the game reflects the player’s action back at them. A line of dialogue that only appears if they did X. A different reaction from a character they hurt or helped. A small environmental or UI cue. Without that, branches exist in the doc but not in the player’s experience.

Scenario 3: The Team That Never Reconciles the Graph

A small studio has two writers. One owns “main quest,” the other “side quests and companions.” They’re both talented. They don’t share a single source of truth for “what has the player done?”

Main quest assumes the player met the rebel leader in Act One. Side quests sometimes reference that meeting, sometimes assume it didn’t happen. A companion’s loyalty scene triggers the same dialogue whether the player has been kind or cold. The graph has gaps and contradictions.

Branching narrative is a team sport. You need state: a clear list of variables (flags, counters, relationship values) that every writer and designer can read and write to. You need documentation: a living outline or wiki that shows which nodes depend on which state. And you need reconvergence rules: when do we force branches back to a shared beat so we don’t ship 47 separate endings that no one can bug-fix?

If you’re the writer, your job isn’t only to write the lines. It’s to make the logic of the branches visible and consistent so implementation and QA can follow it.

Core Structures: Hubs, Strings, and Convergent Beats

Not every game uses the same topology. Roughly, you’ll see three patterns (often mixed).

Hub-and-spoke: The player returns repeatedly to a central location (ship, camp, city). Each “spoke” is a mission or arc. Choices inside a spoke might affect that arc’s outcome, but the hub stays a stable return point. Good for episodic feel and for reusing assets. Your branching focus is within each spoke and between spokes (order, availability, who’s still alive or loyal).

String of beads: A mostly linear sequence of levels or chapters, with local branches that reconverge. For example: “In this chapter you can side with A or B; both paths lead to the same cliffhanger, but dialogue and relationships differ.” You get the feeling of choice without exponential explosion. Most “narrative action games” live here.

Convergent beats: The story has a few mandatory story beats (e.g., “reach the capital,” “confront the villain”). How the player got there—who they saved, who they betrayed, what they said—is variable. The beats are the same; the meaning of those beats changes based on state. This is where you invest in contextual dialogue: the same scene, different lines depending on past choices.

In practice, many games combine hub structure for downtime and side content with a string-of-beads or convergent main path. Your design doc should say explicitly which model you’re using where, so no one is writing as if every branch goes to a unique ending unless it really does.

Granular Workflow: From Concept to Branching Script

You have a high-level premise and a list of “pillar choices” from design. How do you actually produce a branching script that dev and QA can implement?

Step 1: Define State (Variables the Story Cares About)

Before you write a single scene, list the state variables your story will read and write.

Examples: rebel_leader_trust (0–100), companion_A_romance_flag, killed_merchant_B, faction_standing_crown. Keep names clear and consistent. Decide who “owns” each variable (main quest, a companion system, a faction system) so two writers don’t overwrite each other.

This list becomes the contract between narrative and systems. Every major branch should be traceable to one or more of these variables.

Step 2: Build a Beat Sheet With Branch Points Tagged

Take your main story beats (you can use the same structural thinking as in our guide on [The 3-Act Structure Demystified for Screenwriters], then adapt). For each beat, tag:

  • Is this beat mandatory (every player sees it) or conditional (only if state X)?
  • What choices happen here that write to state?
  • Where do we reconverge after a branch (next mandatory beat)?

You don’t need a full flow chart in week one. You need a beat sheet that says things like: “After Beat 7, if rebel_leader_trust > 50, Branch A (secret mission); else Branch B (direct assault). Both reconverge at Beat 10.”

Step 3: Write Shared Beats First, Then Variants

Write the reconvergence content first—the scenes that everyone will see after a branch. That way you know what tone and story load they must support.

Then write the branch-specific content. Prefer short, targeted variants (a different line, a different NPC present) over entirely different scenes where you can. That keeps scope and VO cost under control.

Use condition logic in your script tool or doc: “If [state], use this block; else use that block.” So the script is one document, not 12 separate files.

Step 4: Add Recognition Passes

After the first draft, do a recognition pass. For every pillar choice, ask: where does the game show the player that their choice was recorded?

Add a line, a reaction, a changed item, or a journal entry. If you can’t point to at least one moment of recognition per major choice, the branch will feel broken even if the logic is correct.

Step 5: Document and Hand Off

Produce a narrative design doc (or a section in the game’s main design doc) that includes: state variable list, beat-by-beat summary with branch conditions, and a simple graph or table showing “Choice → State change → Affected scenes.” QA and implementation will use this to build test cases and wire up the logic.

Story spine with branch points and reconvergence

The Trench Warfare Section: What Beginners Get Wrong

This is where most first-time branching scripts fail. Not in the idea, but in the execution.

Failure Mode 1: Illusion of Choice

The player picks “Refuse the mission” and the next scene is the same as “Accept the mission”—maybe with one different line, then right back on the same track. That’s illusion of choice. Players detect it quickly and feel cheated.

Fix: If you offer a choice, at least one outcome must change something: state, next scene, or tone (and then commit to that tone for a while). If you can’t afford a real branch, don’t present it as a meaningful decision. Use dialogue options that are flavor only and label them that way in the doc, or skip the choice.

Failure Mode 2: Branch Explosion

You branch at every scene. Each branch branches again. By Act Three you have hundreds of nodes and no way to test or balance them. Scope and bugs spiral.

Fix: Limit branch depth. Decide up front: we have N pillar choices, and at most M endings (or M variants of one ending). Every new branch should either reconverge within a few beats or feed into one of those pillars. If a branch doesn’t affect state or ending, ask whether it needs to exist or can be a single line change.

Failure Mode 3: No Reconvergence

Two branches never meet again. You maintain two (or ten) parallel stories forever. That’s expensive and often unnecessary.

Fix: Design reconvergence points. Most branches should merge back at a story beat, a location, or a “state check” that leads to a shared scene. The player’s path to that scene differs; the scene itself can be one script with conditional blocks. That keeps the feeling of choice without maintaining N full scripts.

Failure Mode 4: Contradictory State

One scene assumes the player did X. Another scene assumes they didn’t. Neither checks state. In play, the wrong line plays, or two incompatible facts are both true.

Fix: State checks everywhere a branch depends on past behavior. In your script, write the condition explicitly: “Only if companion_A_romance_flag and companion_A_trust > 70.” In implementation, every branch condition must be coded and tested. A simple state/flow checklist before ship catches most of these.

Failure Mode 5: Tone Mismatch Across Paths

Branch A is serious and emotional. Branch B is written as a joke. The player can switch between them in one playthrough (e.g., by reloading or by sequence). The overall tone feels inconsistent.

Fix: Agree on tone per story strand and per character. If one path is dark, the other shouldn’t undercut it unless that’s intentional (e.g., “evil path” is deliberately more cynical). One pass before lock: read each branch in order and ask if the emotional curve still makes sense.

Failure Mode 6: No “Default” or Fallback

You have branches for “did A,” “did B,” “did C.” You never defined what happens if the player did none of those (skipped a quest, avoided the NPC). So the game assumes they did something and plays the wrong branch, or breaks.

Fix: For every branch that reads state, define a default: what we show when the variable is unset or in an unexpected range. Write the “neutral” or “skip” path explicitly. That’s also the path you get when QA tests a fresh save.

Writer at desk: flowchart and script with conditional blocks

Tools and Conventions: What You’ll Actually Use

In the trenches you’ll live in a mix of documents and tools.

Outline / design doc: Where you define state, beats, and branch logic. Can be a wiki, a Notion doc, or a dedicated narrative design tool. The important thing is one place that stays updated when someone adds a branch or a variable.

Script / dialogue: Often in a spreadsheet (one row per line, columns for character, text, condition, branch ID) or in a narrative editor (Twine, Ink, Yarn Spinner, or the studio’s in-house tool). Condition syntax varies: if (rebel_trust > 50), <<set $trust += 10>>, or inline tags like [ROMANCE_A]. Consistency matters more than the exact format.

Flow / graph view: Some teams keep a visual graph (nodes and edges) in Miro, Draw.io, or a game-specific editor. It helps for “where do we reconverge?” and for spotting dead ends or orphan nodes. For deeper dives on how narrative designers document branching logic, resources like the IGDA Narrative Special Interest Group{rel="nofollow"} and GDC talks on narrative design are useful references.

VO and localization: Branching multiplies line count. You’ll need to export script by branch, by character, and by language. Plan for that early so you’re not hand-cutting 40 spreadsheets before the VO session.

You don’t have to master every tool. You do have to think in state and conditions. Once that’s habit, any tool becomes manageable.

How Branching Relates to Linear Craft

Everything you already know about scene structure, dialogue, and character still applies.

A scene still needs a purpose, conflict, and a turn. Dialogue still needs subtext and voice—perhaps even more so, because the same character might be friendly or hostile depending on branch, and you have to keep them recognizable. Stakes and pacing still matter; the difference is that “next beat” might be one of several, and you have to make each path feel like the natural result of the player’s choices.

Where branching adds work is consistency and economy. You’re maintaining multiple versions of the same story. So you want to reuse as much as you can (shared scenes with conditional lines), and you want every branch to earn its place. If a choice doesn’t change state or meaning, question whether it needs to exist.

For more on making every beat pull its weight, see our breakdown of [Mastering the Midpoint: How to Raise Stakes Without Breaking Your Plot]—the same discipline applies when the “midpoint” might be one of two different scenes depending on an earlier choice.

A Perspective: Branching as a Promise

Players don’t need infinite freedom. They need the freedom you promised.

If the game sells “your choices shape the story,” then the story had better reflect those choices in visible, consistent ways. If it sells “define your character through dialogue,” then the dialogue options had better map to distinct attitudes and, where appropriate, consequences.

The worst sin in branching narrative isn’t having few branches. It’s having branches that don’t do what the design promised.

So before you write another node, ask: what did we promise the player? Then make sure every branch you add is in service of that promise—and that you have the state, the recognition moments, and the reconvergence plan to deliver it.

Do that, and you’re not just “writing for games.” You’re designing a story system that feels alive under the player’s hands.

[YOUTUBE VIDEO: A narrative designer walkthrough of a single branch in a shipped game: from state variable and beat sheet to script conditions, implementation notes, and how QA tests every path.]


Article complete. Should I proceed to the next topic: The Silent Film: Visual Storytelling Exercises?

Continue reading

ScreenWeaver Logo

About the Author

The ScreenWeaver Editorial Team is composed of veteran filmmakers, screenwriters, and technologists working to bridge the gap between imagination and production.