User:Thingy Person
WIP Article: Dialogue Systems for Writers
Contents
Dialogue Branches
A large portion of dialogue that NPCs have in Skyrim occurs during conversation with the Player and is largely accessed through the dialogue menu. This is known as Player Dialogue, and dialogue of this kind is structured in Branches.
By default, when the Player initiates dialogue with an NPC, the subsequent dialogue menu will be a collection of separate Dialogue Branches that were written for this NPC, each option being its own Branch. In order for a Branch to appear in this way, it must be of a specific type, namely a Top-Level Branch.
A characteristic of Top-Level Branches is that they begin with a dialogue option by the Player, and not a line from the NPC. This allows many Branches from many different sources to be available side-by-side, without the NPC pushing the conversation in a specific direction with their opening line.
Here is a hypothetical NPC document. Player dialogue options are in bold. Each top-level entry is the beginning of a Top-Level Branch. In this example, the Branches represent typical subjects that a player might inquire into in non-quest related dialogue.
- 1. How long have you been working here?
- 1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 2. Do you have any family?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
- 2.1.1. Does your daughter live alone?
- 2.1.1.1. My mom and pop look after her. She's too young to be by herself.
- 2.1.1. Does your daughter live alone?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this.
Note that 2.1.1. mentions the daughter, and therefore has to follow 2.2. Here, it is simply dialogue continuing within the same Branch, which has expanded into a small dialogue tree. Once the Player has entered into such a tree, they will no longer see the Top-Level dialogue options until they exit dialogue or reach the end of the Branch, at which point the Top-Level menu will be shown again.
Although this example is small, Branches can become so elaborate that the Player will have a bad time treading through all of the dialogue buried in them. If needed, the dialogue can be broken up by splitting part of it into its own Branch. But here, it wouldn't make sense to ask about the NPC's daughter if we haven't heard about her yet! One tool that a writer can use here is to have one piece of dialogue unlock a Top-Level Branch:
- 1. How long have you been working here?
- 1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 2. Do you have any family?
- 2.1. Yeah, a daughter, back home in Stoudholm. Better keep her far away from a place like this. (unlocks 3)
- 3. You mentioned a daughter. Does she live alone?
- 3.1. My mom and pop look after her. She's too young to be by herself.
Note how I rewrote 3. to be more natural as a conversation starter, since it no longer has to follow directly after 2.1.
- Implementer's note: "Unlocked" branches in non-quest related dialogue are usually implemented by having the unlocking dialogue set a stage in the settlement's general dialogue quest. The unlocked branch will be conditioned on that stage using GetStageDone. The quest will usually have a bunch of these stages; document them by describing what they do in the journal entry text.
As mentioned before, the dialogue menu is a collection of Top-Level Branches from various sources. If this NPC is currently involved in a quest, then they may have some active dialogue related to it, and the in-game dialogue menu will look like this:
- I found the pickaxe you were looking for.
- How long have you been working here?
- Do you have any family?
- You mentioned a daughter. Does she live alone?
The display order of Branches is determined by a number called Priority which is configured by the implementer, and standard practice is to give quests (in the narrow sense of the word) a higher Priority than non-quest dialogue, hence it appears at the top of the list.
Greetings and Farewells
Their random nature. What goes wrong when dialogue options are written as a response to a greeting. Some NPCs have only greetings. Example from Nazeem. Also the difference between a random farewell and a goodbye line. The danger of multi-line greetings and farewells.
Although Top-Level Branches always begin with a dialogue option selected by the Player, the conversation itself will still be opened with a line from the NPC. That is because a Greeting (sometimes also referred to as a Hello) will run first.
Greetings are actually a separate system from Branches. By default, a Greeting can run when the Player initiates dialogue as well as when the Player just walks past, although it can be restricted to one or the other if needed (in practice, this distinction is rarely made). Greetings are located in a stack that is separate from the Branches. Like Branches, Greetings can be pooled from different sources and conditioned on a variety of factors.
- Greetings
- Welcome, traveler. What brings you to these mines?
- If you mine anything of value, it's yours to keep.
- My back's acting up...
- Dialogue
- 1. How long have you been working here?
- 1.1. (etc)
Greetings can be in a fixed or in a random order. In non-quest dialogue, they are typically in a fixed order, and are written with this in mind. Note how the more important, introductory Greeting comes first, followed by ones that are just flavor text. Greetings of this kind will be implemented with a reset timer so that each one will only run once until some amount of in-game time has passed, at which point it can run again. Although the NPC may seem like an amnesiac for bidding the Player welcome a second time, this is common practice and helps keep custom dialogue active in the game. When all Greetings are on a timer, the NPC will fall back to generic dialogue (see below).
- Implementer's note: A value for the reset timer which is consistent with vanilla seems to be 8 hours.
Although a Greeting can technically consist of multiple lines, this is not desired, because the Player can select an option in the dialogue menu before the second line has had a chance to come up. Consider this example, where the second Greeting is instead a followup line of the first:
- Greetings
- 1. Welcome, traveler. What brings you to these mines?
- 1.1. If you mine anything of value, it's yours to keep.
- 2. My back's acting up...
At the start of 1., the dialogue menu is available. If the Player does nothing for a while, 1. will finish and 1.1. will be spoken. If the Player is quick enough to select a dialogue option while 1. is still running, however, 1.1. will not run and is put on the same reset timer as 1., causing the Player to miss out on this line. Compounding this is that multi-line Greetings do not appear in Vanilla and the Player is therefore not trained to wait for them. For these reasons, Greetings with multiple lines are not idiomatic to Skyrim and shouldn't be used.
One common pitfall is to write the dialogue options as though they are replies to a Greeting which the NPC is assumed to speak first. Consider this broken example:
- 1. A traveler! What are you looking for in these mines?
- 1.1. Nothing, but I was wondering how long you've been working here.
- 1.1.1. I've been working these mines ever since the Forebears set foot in this place!
- 1.1.2. Back then, this place was a frontier. Well, in some ways, it still is.
- 1.2. Just taking a look. Do you have any family here?
- 1.2.1. (etc)
- 1.1. Nothing, but I was wondering how long you've been working here.
As mentioned before, 1. will typically be a Greeting with a reset timer. After it has been spoken once, the next conversation will open with a different Greeting, and 1.1. and 2.2. will be non sequiturs. Imagine the flow of conversation if a generic Greeting is active:
"Hello." "Nothing, but I was wondering how long you've been working here."
Moreover, when the end of a Branch is reached, the top-level dialogue menu returns, leading to more non sequiturs:
"Back then, this place was a frontier. Well, in some ways, it still is." "Just taking a look. Do you have any family here?"
Although it is possible to force 1. to always open the conversation, this will feel extremely repetitive, as it will seem as though the exact same conversation is repeating itself over and over. The proper solution here is to split 1. into one or more greetings, and rewrite 1.1. and 1.2. to be more general, so that they no longer require a specific line to precede them. The result of this would be the correct examples further above.
Notes on generic dialogue
Do not write custom dialogue that is redundant given that generic exists
Blocking Branches and Forcegreets
Examples from Idolaf Battle-Born and Maul. Sometimes used in combination with greetings: example from Jaree-Ra
Walkaways
Example from Maul
Scenes
Random conversations vs major establishers
Gameplay dialogue
Barter, rent room, trainers, rumors and why not to be too creative with them