Narrative Design and Branching Dialogue Systems
Draft a single conversation by hand with three player replies, two that rejoin, one flag, and a read-aloud test, before any of it goes near your engine.
This is a different slice from our earlier narrative design post: that one is an overview of five techniques, from a story spine to scoped branching, while this one builds exactly one conversation on paper, start to finish, using a blank structure you can copy.
You will not write a world, a cast, or a plot. You will write one exchange between the player and one character. When you finish, you will have a page you can read aloud, hand to a friend, and later type into whatever dialogue system you use.
What you need
- A few sheets of paper, or one large sheet.
- A pencil and an eraser. You will change your mind.
- Ten quiet minutes for the read-aloud at the end.
Paper works because it is slow. You cannot add a fourth branch with a keystroke. Every line you add costs ink, which keeps the conversation small.
The shape you are building
Here is the whole structure before any words go in:
- Opening. The character speaks first.
- Three replies. The player picks one of three options.
- Two rejoin. Replies A and B each get a short response, then both lead to the same next line.
- One splits off. Reply C gets its own response and a different ending.
- One flag. One of the replies sets a flag that something later in the game can read.
- Close. Each path ends cleanly.
That is it. Three choices, two endings, one flag. It is small on purpose. You can write it in an afternoon and test it the same day.
Draw the boxes first
Before writing dialogue, draw the shape. Put a box at the top labeled OPEN. Below it, draw three boxes side by side labeled A, B, and C. Draw an arrow from OPEN to each.
Under A and B, draw one shared box labeled JOIN. Draw arrows from A and from B into JOIN. Under JOIN, draw a box labeled END 1.
Under C, draw its own box labeled END 2.
Next to whichever reply will set your flag, draw a small flag symbol. Decide that now, even if you change it later.
Your page now shows every path a player can take. Count them with your finger. There should be three routes and two endings. If you count more, erase something.
A blank-structure example
The example below exists only to show the structure. It is not from a shipped game or a story in progress. Replace every line with your own.
Setting: A guard stands at a closed gate. The player wants to pass.
OPEN
Guard: “Gate’s shut until morning. What do you want?”
Reply A: “I have a letter for the captain.”
Guard: “Everyone has a letter. Let me see the seal.”
Reply B: “I’m just tired. Is there somewhere to wait?”
Guard: “There’s a bench by the wall. Nobody gets through tonight.”
Reply C: “Here. For your trouble.” (The player offers coins.)
Guard: “Put that away before someone sees.” (Sets flag: offered_bribe = true.)
JOIN (after A or B)
Guard: “Come back at first light. I’ll still be here.”
END 1
The player steps back from the gate. The conversation ends.
END 2 (after C)
Guard: “I’ll pretend I didn’t see that. Go.”
The player steps back. The conversation ends, and the guard remembers.
Look at what the structure does. A and B feel different in the moment. One is official, one is personal. The guard answers each in a different way. Then both land on the same line, so you only write one ending for two choices.
C is the reply that costs the player something, so it is the one that gets its own path and the flag.
Choose what the flag is for
A flag is a simple true or false value. Write it on the page exactly as it would appear in your notes, with a plain name. In the example, it is offered_bribe.
Then write one sentence below the conversation about where the flag will be read. For the example: “If true, the guard is colder the next time the player talks to him.” You do not need to write that later scene now. You only need to know it exists, so the flag has a reason to be there.
If you cannot write that sentence, you do not need the flag. Remove it, or move it to a reply that will matter later.
Keep a short flag list on a separate sheet. One line per flag: its name, where it is set, and where it is read. A flag that nobody reads is a bug waiting to confuse you.
Write the replies as choices, not moods
Look at your three replies side by side. Each one should be a different thing the player is trying to do, not the same thing in a different tone.
Weak replies: “Please open the gate.” / “Open the gate.” / “Open the gate, now.”
Stronger replies: show proof, ask for help, offer a deal.
If two replies would get the same response from the character, merge them and write a new third option.
Keep every line short
Go back through and cut. A character line should usually do one job: answer, push back, or reveal something. If a line does two jobs, split it or drop half.
Player replies should be short enough to read at a glance. If a reply wraps onto a second line of your page, trim it.
The read-aloud test
Now read the whole thing out loud. Say it at the pace you would speak, not the pace you read.
Read it three times, once per route:
- OPEN, then A, then JOIN, then END 1.
- OPEN, then B, then JOIN, then END 1.
- OPEN, then C, then END 2.
On each pass, listen for these problems:
- Stumbles. If you trip over a line, rewrite it until it comes out cleanly.
- Seams at the join. Does the JOIN line make sense after both A and B? In the example, “Come back at first light” works after the letter and after the bench. If it only fits one route, rewrite it until it fits both.
- A voice that drifts. Read only the character’s lines, in order, for one route. They should sound like one person.
- A flag that feels free. On route C, does the reply feel like it carries weight? If the flag is set by something trivial, the later payoff will feel random.
Mark each problem in the margin. Fix it, then read that route again.
Hand it to someone
If you can, give the page to a friend. Read the character’s lines yourself and let them pick a reply each time without seeing the boxes. Watch which reply they choose first. Ask nothing until they finish.
If they hesitate between two replies, those two might be too similar. If they never consider one reply, it might not read as a real option.
Then type it in
Only after the page survives the read-aloud should you move it into your engine or dialogue tool. Copy it exactly, including the flag name. Keep the paper.
When you write the next conversation, start with the same boxes. Three replies, two rejoin, one flag. Once that shape is comfortable, you can change it on purpose instead of by accident.