Obviously, I’ve written a lot of dialogue for previous Shadowrun campaigns. In the time since then, I’ve been thinking a lot more about structuring dialogue. I ended up taking a more methodical approach in The Caldecott Caper, which I think served me well… it gave me a good framework for dealing with the large volume of discussions, supporting my goals for player agency and narrative coherence.
First, as background, I should mention that my dialogue is primarily dialogue. That’s, uh, tautological, but also worth explaining. In the official campaigns (Dead Man’s Switch, Dragonfall, and Hong Kong), a significant portion of the text in the dialogue window is actually exposition. And that’s great - the writers do a terrific job at noir-ish scene-setting, describing the various scenes that you find yourself in and directly telling the story. In my own writing style, I rely primarily on the direct words of the characters to tell the story. Probably less than 10% of my text is straight exposition or narration, and that’s often supporting the dialogue itself (such as describing the body language of another character). In contrast, I’d guess that Hong Kong is probably more like 25-30% exposition.
Dialogue serves a lot of different purposes in the game, and the way I structure these dialogues will each be different.
Sometimes information is best presented through dialogue, but it purely serves a gameplay purpose. Prime examples are merchants selling you equipment, or a taxi driver offering you different destinations. There isn’t much to do here: you’re basically giving a menu and letting players pick a choice.
I deliberately try to keep these as simple as possible. It’s tempting to, for example, have a merchant say something silly after you shop with her; but if the player will see that same “joke” a dozen times, it will quickly get old. I try to keep the dialogue here natural and perfunctory.
This type of dialogue is very common in some other RPGs - if you ever find yourself mindlessly clicking through every choice in a menu, you’ve played this sort of game. These dialogues are mostly used to provide a somewhat-natural way to impart information to the player: describing the setting, or their adversaries, or their goals, or the background and history of the characters they’re meeting.
This information is often not mandatory, and it’s the sort of thing a player might quickly click through or skip altogether. People who care about the lore and the story pay close attention here, so I put effort into making the content engaging. I’m also careful not to hide crucial information here, since it’s something that can easily be missed.
These dialogues are structured rather simply. Typically there’s a “hub node”, where the player will see a bunch of questions like “What is your name?”, “What is your job?”, “What can you tell me about Dunkelzahn?”, and so on. Players can click through them in whatever order they want. There aren’t any positive or negative consequences to asking these questions: they’re purely to give the player (not even the character) access to information. Once the player has satisfied their curiosity, they will just click “Goodbye” to exit the conversation, or another option to proceed to the next major node of the discussion.
This is something I paid a lot more attention to in Caldecott than in previous games. When there’s something important going on - a key piece of plot is being revealed, a character is revealing their agenda - there will often be a lot of text from one or more characters. It seems weird to have the player character just stand there silently while the the other person monologues. But it’s also weird to have them just give neutral interjections like “I see” and “Go on.”
I decided to take this opportunity for some light roleplaying. After a suitable amount of time has passed in a conversation, the player character can offer a response to the speaker. This doesn’t have any mechanical impact on the conversation: it will still proceed forward, with perhaps slightly different text as the speaker reacts to the player’s words, but it won’t actually change the ultimate outcome. Even if the game itself doesn’t keep track of the player’s response, though, the choice becomes important to the player themself. It becomes a part of the story they are creating: how do they feel about this person? Do they admire them? Loathe them? Are they curious? Bored? Driven by greed, idealism, loyalty, pragmatism? Over time, the player can create a richly nuanced portrait of their player character, without me needing to support a ton of scripting.
I considered a few different ways to organize this, and ultimately came up with the principal of always offering at least three different reactions at each “reaction node”. Three is kind of a sweet spot for me. One choice is no choice at all, just a Continue button. Two choices tends to veer towards manichaeism, a reductive good/evil, right/wrong morality that I find extremely boring to play and even more boring to write. As soon as you offer three options, though, you break out of that dichotomy and make things way more interesting, hopefully forcing the player to actually think about their choice rather than blindly hitting the “good” or the “bad” button. Four choices is even better than three, but I think you start hitting diminishing returns: the marginal improvement from 3 to 4 is much less than the improvement from 2 to 3, and I feel that ultimately my time is better spent offering reactions to more situations than offering more reactions to the same situation.
Drawing on traditional Shadowrun archetypes, I came up with a scheme of three different personality types to highlight in these reaction nodes. The first choice is a classic “black trenchcoat and mirrorshades” persona. This is a player who is no-nonsense, practical, and results-oriented (or at least puts up the facade of being such). It’s a very cold personality.
The second choice is a standard “heroic” persona, which is actually rather rare in Shadowrun but very common in other RPGs. It’s empathetic and helpful (or pretending to be such). It’s a warm personality.
The final choice is the “pink mohawk” persona. This is where you get reactions that are wild, unpredictable, humorous and/or violent. This is the loose cannon who will risk everything for no good reason but have a lot of fun doing so. It’s an electrical personality.
There's no incentive for a player to consistently pick the same archetypal responses, and my hope is that players will vary them based on the situation and their relationship to the characters. One player might act warmly towards a longtime friend, have a sharp sense of humor towards a romantic interest, and a serious relationship towards their business associate. Another player might suck up towards their Johnson, kid around with their friend, and be vulnerable and sweet towards the object of their affection. I find these sort of varied portraits infinitely more interesting than "I'm a Paragon!" or "I'm Chaotic Good!"
Having this structure in mind was a huge help while writing the reams of dialogue for the campaign. This particular node type comes up a lot in the conversations you have with your companions, typically in a hub as you catch up on their backstories. Only a few choices actually have lasting impacts on your crewmembers, but there are a TON of opportunities to vary your responses to them, which means that, ultimately, each player will have a slightly different relationship with all of the characters in the game.
These are rare but powerful. At certain points in the game, your responses in dialogue will actually (gasp!) have consequences. As such, I structured them a little differently.
First and most importantly, I deliberately avoided ever giving 3 options here. Consciously or subconsciously, I hope that most players will eventually realize that “three-choice decisions don’t really matter”, and will thus pay a bit more attention when they realize that their prompt has 2 or 4 choices in it.
Along the same lines, I avoided directly mapping the three persona types onto these choices. Sometimes they’re very straightforward (keep the ship or sink it?). At key points in your companion conversations, you are presented with a 4-choice window to respond to a particularly important issue to them. By grokking their values and desires, you should be able to pick a decision that they will approve of. Critically, there are always at least 2 “correct” and 2 “incorrect” choices here. I want the player to still have choice even while advancing towards their goals. Sometimes you can gain favor by agreeing with a companion, but you can also gain favor by making a reasonable argument against them.
I also put a lot more effort into making sure that the results of decisions were clear. In the feedback to Antumbra Saga, I realized that most players had no idea about how some underlying mechanics of the game worked: how you could avoid fighting Norton’s Army in Colma, why and how Redding was changing over time, etc. In Caldecott, I tried to make those consequences much clearer, either directly through the UI (showing on-screen status updates when you gain or lose favor), or through more explicit linking of later events to past choices in the dialogue. (“I’m mad at you and am about to shoot you because you sunk my boat two missions ago!”)
In the Shadowrun games, you can sometimes unlock certain options based on pre-requisites of the character. The most obvious example of this is using Etiquettes: if your character is versed in Gang-speak, they’ll be able to talk down some particularly hostile foes; if they’re adept at Corporate talk, they can bluff their way past certain office situations. Sometimes you can also use character stats and skills like Strength or Decking to bypass certain challenges.
I like including a range of these in my campaigns, as another way to reward players for the choices they make while building their character. If they’ve invested Karma into increasing their Charisma and learning a new Etiquette, I want to reward them by giving some in-game benefit.
I never make this an absolute requirement; there’s always an alternate route to success. But using these unlocked skill choices is always a fast route to success: players can confidently choose those unlocked options knowing that they will lead to an optimal outcome.
There’s definitely a valid school of thought that says this is bad game design, that it’s encouraging the sort of mindless clicking that I decried above. I can recognize that criticism, and also appreciate the work some other teams are doing to overcome it, particularly the system being used in Torment: Tides of Numenara. But again, for me it all comes down to helping the player have fun, and I think it’s more fun for the player to see a new option that they unlocked from previous choices than to not offer those choices, or, even worse, to penalize them for picking something they tried hard to get. (Failbetter Games are the masters at the latter sort of construction, which is part of why they’re awesome but also something I would not want to emulate in my own games.)
Okay! So, all of those things above are what I think of as “nodes”. You can chain multiple nodes together into a conversation. A standard hub conversation might look like this:
- You greet Dorbi and ask her how much she likes burning people alive. This kicks off a new conversation thread.
- She tells a graphic story about this one dude she TOTALLY burned alive. You have a reaction node where you can express your appreciation or horror at her actions.
- She reacts to your words with a few custom sentences, then proceeds to mention that she totally burned a dude right outside just before you came in.
- There’s an interrogation node here where you can ask her who the dude was, why she burned him, whether you need to worry about the cops. Or you can just skip all that and ask what the hell is wrong with her. All of these choices lead to more text, but don’t have long-term implications.
- Finally, she asks whether you have a problem with her setting dudes on fire. There’s one choice unlocked with Etiquette: Shadowrunner that she will approve of. Otherwise, you can pick from various options to try and encourage or discourage her from burning dudes. She’ll remember what you said, and you’ll gain or lose approval accordingly.
SO, THOSE ARE THE NODES...There are lots of different types of conversations you might encounter throughout the game. During my writing phase, I would typically write all of the dialogues of a single type in a single Google Doc before moving on to the next one. Here they are!
CRITICAL PATH DIALOGUE
This is the backbone of the story. It covers all of the major story beats, major plot revelations, and crucial branching choice points.
These dialogues are sometimes quite complex. My favorites to write were probably the Council scenes. There’s one council early on with your player character, your (work) partner Rafik, and his (romantic) partner Kora. This summarizes the opening events of the game and sketches out the shape of the rest of the game to come, while showcasing the personality for these two major characters and defining your relationship to them. The second Council comes three missions later, after you’ve recruited your other allies: now a full room of six people, there are a lot more participants, a lot more viewpoints, some opportunities for friction (which you can smooth over or just ignore), and more details about how the game is going to go down.
Those dialogues were very unusual - it isn’t possible to get more than 3 team players into most maps, so doing something this complex wouldn’t even be possible in most scenes - but was totally worth it. They don’t just set up the plot for the campaign: they also implicitly support the major themes of the game, getting you thinking about teamwork and loyalty and support.
Other critical-path dialogues are more traditionally structured, often with one significant NPC and you. I tried to complicate these slightly with the use of interjections: your companions each have opinions about the right and wrong way to do things, and will speak up about what they observe and think.
Sometimes critical path dialogues lead to key branches: major characters living or dying, or making choices that will reverberate in the future. Other times you’re more or less railroaded into a certain plot direction. In these cases, I tried to give the player more space to react than normal: instead of the standard 3 response choices, I would sometimes offer a half-dozen or more, hopefully increasing the chances that they’ll be able to identify with a certain motivation for the actions they’re about to take.
If you only read the critical-path dialogue, you would have a complete (if sparse) story that would hopefully make sense. You really wouldn’t have a game, though. The Caldecott Caper is structured like a typical Shadowrun campaign, with a series of runs (missions) that each advances you in some way towards your goal. Each of these is a game-within-a-game with its own story and objectives.
This sort of dialogue is important, but (mostly) only in the context of your current mission. For example, one early mission has you optionally solving a gangland murder mystery. This involves interviewing witnesses, searching for evidence, and fighting off several attackers.
Structurally, these conversations were similar to the critical-path ones, but they tended to be simpler. I don’t want to bury the player in too much lore that won’t apply to later portions of the game, and also don’t want them to lose sight of their overarching objectives.
When possible, I would try to find ways to tie these mission dialogues to some of the bigger themes of the main story. In my revisions, I updated a bunch of random corporate stuff to instead focus on Shiawase: by making them a more consistent presence in the game, I could reinforce their importance and add significance to the player’s interactions with them. I didn’t overdo it, but over time I think I found a fairly happy medium here, using stand-alone stories that had thematic resonance with the meta-story.
There are some inessential parts to Caldecott: optional objectives within runs, or side-quests that you pick up in the hub which may span multiple quests. They mostly exist to fill out the game: you would still have a game if they were all removed (unlike mission dialogue or critical-path dialogue), but it would be less fun.
This was definitely an area for me to indulge my more whimsical moods, often getting meta or drawing absurd characters. That lighter sort of tone isn’t too popular within Shadowrun, but I feel like I can get away with it as long as it’s sort of off to the side, where cranky players can ignore it.
Structurally, the biggest difference with this type of conversation is that it can be declined. There really isn’t a good mechanical reason to do that - you’re turning down extra karma and/or nuyen - but there could definitely be role-playing reasons to do so, or you might just be in the mood to play through the game as quickly as possible. Otherwise, these dialogues play out as normal: a quest is granted, you can often ask questions related to it, and then usually must hunt down and speak with multiple people before completing the goal. For narrative and plot efficiency, I almost always piggy-back on top of existing characters for these quests, rather than creating entirely new characters who will only serve a limited role.
These were a lot of fun to write! I covered this in more detail in my writeup on Corona so I won’t reiterate too much of that here. I deliberately did these fairly early on, since I’d found them so helpful for homing in on each companion’s unique voice.
Structurally, these are unusual conversations in that the player character plays little or no part. In most conversations, I’m careful to not go too long without letting the player character chime in and share their thoughts; here, though, it isn’t unusual for an entire back-and-forth of 12 or more nodes to continue without any word from the player. This works because the player is essentially eavesdropping on a private conversation between companions.
I really like these conversations. They are 100% inessential - since they’re random, you can’t count on the player hearing any particular one of them and so I’m careful not to convey any plot-critical information in them - but I think they do more than almost anything else in the game to reinforce the impression that this is a large, vast, complex world, and that there’s a lot more going on than just the single story in front of you. The world is filled with other souls, each with their own hopes and fears and desires, and they exist as entities independent of your own observation.
The Shadowrun Returns engine isn’t particularly well-suited to supporting banters, but they’re important enough to me that I hacked together a system to support them. As in Corona, I relied on a combination of global-level variables to track which banters had been heard, along with scene-level triggers to check the validity of each banter. One thing I was dissatisfied with in Corona was how deterministic it was: banters were checked in the same order, so you would always exhaust earlier banters before reaching later ones, which meant that some of them were much more likely to fire than later ones. In Caldecott, I used some more trigger-fu to come up with a truly random banter system, so even if you replay the game bringing the exact same companions you may get unique banters.
Most of these focused on your companion characters. These are fairly meaty arcs, similar to the ones you have with crew members in Dragonfall and Hong Kong. You unlock later conversations as you play more of the game, gradually getting to know your companions better and earn their trust.
As with so many elements in Caldecott, I drew on BioWare for guidance here. The official HBS campaigns use “trust” to track your relationship: basically, the more you talk with your companions, the more they like and respect you. I wanted to try and involve players a bit more deeply, to think more carefully about what each companion was really after. So, I use a system of “favor”. In each main Halferville dialogue, you’ll be asked to make a choice or react to a pivotal piece of information. Based on your response, you’ll either gain or lose favor with this companion. Over time, this will shift their opinion of you, growing warmer or more hostile.
This is mostly a roleplaying matter. I deliberately avoided a system like that in Dragon Age: Origins, where there are in-game mechanical benefits to maximizing favor; BioWare abandoned this themselves in later games, which makes sense, since it encourages munchkin metagaming at the cost of storytelling. At the same time, I did want there to be consequences to your words and deeds, so those are mostly conveyed through the story. Characters speak more kindly to you if you see eye-to-eye with them (or you’ve done a good job at convincing them that you do). If you REALLY annoy them, they’ll eventually leave your party. I’m sure that the vast majority of players won’t ever see that, but I do think that having that option available makes the choices more compelling for the majority of players who don’t choose that path.
Structurally, these are fairly intimate conversations. There’s a lot of back-and-forth between the PC and NPC, and I tried to rotate conversational duties: it’s often the PC’s role to ask questions, but I made sure that there would also be times that the PC is on the receiving end of queries. These generally don’t have long-term impacts, but I think they can help prompt players like me to think through their character’s backstory and personality, which can lead to stronger role-playing and a closer connection to the story and the world.
There are also conversations with other NPCs in Halferville, which kind of act like mini versions of companion dialogues but with lower stakes. Those other conversations tend to focus more on filling out the backstory, giving more context to the factions and personalities that dominate the Bay Area in the 2050s.
I’ll cover these in my romance post. Structurally, they basically branch off of the companion conversations: after you pass a certain threshold of intimacy, you are moved from the “friendship track” to the “romance track”, and get to enjoy another dimension in your relationship.
These aren’t exactly dialogues, but they’re still speech, so I’ll include them here. These are small but, in my opinion, effective ways to reinforce characters’ personalities and create fun little emergent moments for players. When one of your companions defeats an opponent, they will sometimes spout a random phrase. Dorbi might say “Ya burnt!”, while Rafik would say “Don’t mess with us!”
I’ve always included these in my mods, all the way back to the very first Antumbra. Much like banters, the engine doesn’t support them all that well, but they’re important enough to me that I hack them in. I came up with a slightly more elegant way of doing them this time: instead of implementing the barks directly inside their triggers, I stored the barks in global variables, and then selected them randomly, much like my new approach for banters.
Corona had interesting barks since the companions were so unusual. Norton was a pacifist, so he didn’t have any barks related to kills; instead, he would occasionally spout a phrase when healing or hasting a companion. Similarly, Hailey almost never dealt direct damage; instead, she would cheer on her drones.
All of Caldecott’s characters are at least decent fighters, so I went back to just doing combat-driven barks here. I wouldn’t rule out adding pacifist ones later, but it’s low on my priority list.
I’ve been thinking even more about barks in the wake of finishing Dragon Age: Inquisition. Partly because they’re so short and general, they lend themselves really well to the emergent stories that players tell themselves, rather than the scripted stories told by the designers. For example, in my main DA:I playthrough, my dwarf warrior tank Aztar romanced the dagger rogue Sera. During particularly intense fights, Sera (a standard glass canon) would sometimes go down; Aztar would yell “Protect Sera!” with a mixture of anguish and anger in her voice. In my head, this was telling a particularly apt and tragic story: Aztar was berating herself for failing to safeguard her lover. In actuality, the game wasn’t trying to do anything of the sort: it was just a little bit of dialogue that would run when the PC saw a companion go down. But the exact same speech makes perfect sense even in the absence of a romance. In that case, the player’s perception colors the same dialogue differently: perhaps reading it as desperation for the party’s chances now that casualties have arrived, or frustration at Sera for failing to protect herself. I think those are some of the best tools in the game designer’s arsenal: offering evocative moments and situations, and letting the player use their own mind to craft larger narratives out of those moments.
WORDS, WORDS, WORDS
Phew! That's it for dialogue. Just for fun, here are some final stats that may be of interest:
The number of words per campaign, rounded to the nearest thousand:
Antumbra Saga: 51,000
Dead Man's Switch: 78,000
The Caldecott Caper: 98,000
Dragonfall Director's Cut: 330,000
Hong Kong: 443,000
Antumbra Saga: 0
The Caldecott Caper: 114
Hong Kong: 424
I was a bit surprised to see that DFDC and SRHK were so close, since it felt like Hong Kong was much wordier. I think part of the reason is because DFDC needed to duplicate a lot of lines due to the way HBS implemented reactive dialogue. Also, I think the pacing of Hong Kong contributed to that impression: much of the "added" words were to Heoi, so the dialogue sometimes felt much longer because you were getting it all back-to-back.
For reference: The Great Gatsby is 47,094 words long; Nineteen Eighty-Four is 88,942; Anna Karenina is 349,736; and The Lord of the Rings is 455,125. And, yes, this means that The Caldecott Caper is 208% is good as The Great Gatsby.