Editing Arcane University:Dialogue Systems for Writers
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 63: | Line 63: | ||
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). | 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''': | + | :::: '''Implementer's note''': A value for the reset timer which is consistent with vanilla seems to be 8 hours. |
Instead of a reset timer, a line can be set to run only once in the entire playthrough. This is sometimes used for an initial Greeting if the NPC formally introduces themselves, but it is likely to go over the Player's head, as it passes quickly and will never be heard again. | Instead of a reset timer, a line can be set to run only once in the entire playthrough. This is sometimes used for an initial Greeting if the NPC formally introduces themselves, but it is likely to go over the Player's head, as it passes quickly and will never be heard again. | ||
Line 73: | Line 73: | ||
: 4. My back's acting up... | : 4. My back's acting up... | ||
− | Although a Greeting can technically consist of multiple lines, this is | + | 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: |
+ | |||
+ | :: <u>Greetings</u> | ||
+ | : 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: | 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: | ||
Line 84: | Line 91: | ||
::: 1.2.1. ''(etc)'' | ::: 1.2.1. ''(etc)'' | ||
− | As mentioned before, | + | 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: | 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. | 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. | ||
− | As a final note, there are NPCs whose entire unique dialogue consists of a short stack of Greetings. This means they will simply say a line when spoken to, without a dialogue menu opening up (although a dialogue menu can still appear if there is | + | As a final note, there are NPCs whose entire unique dialogue consists of a short stack of Greetings. This means they will simply say a line when spoken to, without a dialogue menu opening up (although a dialogue menu can still appear if there is quest-related dialogue). It is good to have a healthy number of such NPCs in a settlement, as they can add a lot of flavor without bogging the player down in endless dialogue trees. For proof of the impact that such minimalist dialogue can have, look no further than [https://en.uesp.net/wiki/Skyrim:Nazeem Nazeem], who became one of the most infamous NPCs in Skyrim with just this: |
:: <u>Greetings</u> | :: <u>Greetings</u> | ||
Line 112: | Line 117: | ||
: 3. Don't be a stranger, stranger. | : 3. Don't be a stranger, stranger. | ||
− | Like with Greetings, a Farewell can technically have multiple lines, but this is again not | + | Like with Greetings, a Farewell can technically have multiple lines, but this is again not idiomatic to Skyrim and is bad practice. As soon as the first line begins, the dialogue menu closes, and the Player is free to run away or re-enter dialogue with the NPC before the second line has had a change to begin. |
NPCs like Nazeem who have only Greetings and no Dialogue Branches also will not say any Farewells (except in the rare and temporary case where there happens to be quest-related dialogue), so it doesn't make much sense to write custom Farewells for them. | NPCs like Nazeem who have only Greetings and no Dialogue Branches also will not say any Farewells (except in the rare and temporary case where there happens to be quest-related dialogue), so it doesn't make much sense to write custom Farewells for them. | ||
Line 129: | Line 134: | ||
1.2.1.2. will return the Player to the top-level dialogue menu, whereas 1.2.2.1. will close the dialogue menu altogether. Note that the player can still re-initiate dialogue right after, so these kinds of lines shouldn't be so hostile that it is no longer believable to have a normal conversation afterwards. It is possible to have the NPC refuse to speak to the Player and say some rude one-liners instead, but this is an extreme measure that is typically reserved for bad endings of quests. | 1.2.1.2. will return the Player to the top-level dialogue menu, whereas 1.2.2.1. will close the dialogue menu altogether. Note that the player can still re-initiate dialogue right after, so these kinds of lines shouldn't be so hostile that it is no longer believable to have a normal conversation afterwards. It is possible to have the NPC refuse to speak to the Player and say some rude one-liners instead, but this is an extreme measure that is typically reserved for bad endings of quests. | ||
− | Dialogue lines that exit dialogue | + | Dialogue lines that exit dialogue have the same caveats as with Farewells regarding multiple lines, so 1.2.2.1. was deliberately written to be just one line. Situations like this should be avoided: |
− | + | ::: 1.2.2. '''It's been a while. I bet you're just about ready to hit the retirement home. | |
− | + | :::: 1.2.2.1. What did you just say about me, you little s'wit? | |
− | : | + | :::: 1.2.2.2. I'll have you know I graduated top of my class in the Aubere Academy, and I've been involved in numerous secret raids on Totambu. |
− | : | + | :::: 1.2.2.3. ''(etc)'' '''(exit dialogue)''' |
− | |||
− | |||
− | ::: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | :::: | ||
− | |||
− | :::: | ||
= Notes on generic dialogue = | = Notes on generic dialogue = | ||
Line 202: | Line 195: | ||
Examples of Forcegreets include the gate guards outside Whiterun and Riften, which require persuasion or bribery before the Player is given entry. Again, Forcegreets were justifiably used here because the Player shouldn't simply cruise past and into the city. | Examples of Forcegreets include the gate guards outside Whiterun and Riften, which require persuasion or bribery before the Player is given entry. Again, Forcegreets were justifiably used here because the Player shouldn't simply cruise past and into the city. | ||
− | Blocking Branches are more plentiful, and are typically done for flavor on the first meeting. Consider this encounter with [https://en.uesp.net/wiki/Skyrim:Idolaf_Battle-Born Idolaf Battle-Born] which, incidentally, is his only unique dialogue, after which he will revert to generic greetings | + | Blocking Branches are more plentiful, and are typically done for flavor on the first meeting. Consider this encounter with [https://en.uesp.net/wiki/Skyrim:Idolaf_Battle-Born Idolaf Battle-Born] which, incidentally, is his only unique dialogue, after which he will revert to generic greetings: |
− | : 1. Gray-Mane or Battle-Born? '''(blocking dialogue | + | : 1. Gray-Mane or Battle-Born? '''(blocking dialogue)''' |
:: 1.1. '''What?''' | :: 1.1. '''What?''' | ||
− | ::: 1.2.1. Got stones in your ears? I asked what side you're on, Gray-Mane or Battle-Born! '''(to | + | ::: 1.2.1. Got stones in your ears? I asked what side you're on, Gray-Mane or Battle-Born! '''(back to top. unlocks 1.4.)''' |
:: 1.2. '''Battle-Born.''' | :: 1.2. '''Battle-Born.''' | ||
::: 1.2.1. Then I say well met, friend. I could tell you were a sharp one the moment I laid eyes on you. '''(exit dialogue, increase disposition)''' | ::: 1.2.1. Then I say well met, friend. I could tell you were a sharp one the moment I laid eyes on you. '''(exit dialogue, increase disposition)''' | ||
Line 214: | Line 207: | ||
::: 1.4.1. New in town, huh? Whiterun's got two clans, both old and both respected. | ::: 1.4.1. New in town, huh? Whiterun's got two clans, both old and both respected. | ||
::: 1.4.2. Difference is, the Gray-Manes turned their backs on the Empire and we Battle-Borns stayed loyal. | ::: 1.4.2. Difference is, the Gray-Manes turned their backs on the Empire and we Battle-Borns stayed loyal. | ||
− | ::: 1.4.3. So I'll ask again, Gray-Mane or Battle-Born? '''(to | + | ::: 1.4.3. So I'll ask again, Gray-Mane or Battle-Born? '''(back to top. unlocks 1.5.)''' |
:: 1.5. '''I'm not picking sides.''' | :: 1.5. '''I'm not picking sides.''' | ||
::: 1.5.1. Sooner or later, we all have to choose a side. '''(exit dialogue)''' | ::: 1.5.1. Sooner or later, we all have to choose a side. '''(exit dialogue)''' | ||
− | :::: '''Implementer's note''': Although 1.2.1., 1.3.1. and 1.5.1. do not have the Goodbye flag set, they still close the dialogue menu since they link to no other topic and Idolaf has no Top-Level Branches. | + | :::: '''Implementer's note''': Here, the unlocks aren't done by scripting quest stages, but by configuring the dialogue links appropriately, since these are linked topics rather than Top-Level Branches. Although 1.2.1., 1.3.1. and 1.5.1. do not have the Goodbye flag set, they still close the dialogue menu since they link to no other topic and Idolaf has no Top-Level Branches. |
One crucial point of note is that these Blocking Branches should be kept short, not be excessively branching, and not include dialogue that is essential world building for the Player. Consider this broken example where the NPC is the mayor of a town: | One crucial point of note is that these Blocking Branches should be kept short, not be excessively branching, and not include dialogue that is essential world building for the Player. Consider this broken example where the NPC is the mayor of a town: | ||
Line 291: | Line 284: | ||
1.2.1. is an appropriate response to the Player declining the quest. However, the Player can also "decline" by just canceling out of dialogue, at which point a Farewell will be spoken, which might be completely inappropriate. | 1.2.1. is an appropriate response to the Player declining the quest. However, the Player can also "decline" by just canceling out of dialogue, at which point a Farewell will be spoken, which might be completely inappropriate. | ||
− | + | : "Please, adventurer, I beg of you, save my children! They must be terrified in that cave!" (Player exits out of dialogue) "Stop by again any time, friend!" | |
− | |||
− | |||
Thankfully, whenever there are dialogue choices, one of the options can be designated as '''Walk Away''' and will be spoken instead of a Farewell if the Player exits out of dialogue at that point. Usually, the implementer's own executive acumen should suffice to identify and apply such decisions, so that the writer doesn't have to prescribe Walk Away dialogue in every instance. Here, it goes without saying that 1.2.1. should be marked as Walk Away. | Thankfully, whenever there are dialogue choices, one of the options can be designated as '''Walk Away''' and will be spoken instead of a Farewell if the Player exits out of dialogue at that point. Usually, the implementer's own executive acumen should suffice to identify and apply such decisions, so that the writer doesn't have to prescribe Walk Away dialogue in every instance. Here, it goes without saying that 1.2.1. should be marked as Walk Away. | ||
Line 317: | Line 308: | ||
:::: '''Implementer's note''': (walk away) is just an arbitrary label, and must not be taken to mean an explicit (walk away) dialogue option that can be selected. Such a line should be implemented by linking to it as a topic, selecting it as the Walk Away line, and checking the "Walk Away invisible in menu" box. | :::: '''Implementer's note''': (walk away) is just an arbitrary label, and must not be taken to mean an explicit (walk away) dialogue option that can be selected. Such a line should be implemented by linking to it as a topic, selecting it as the Walk Away line, and checking the "Walk Away invisible in menu" box. | ||
− | One hidden danger | + | One hidden danger with the Walk Away system is that it can lead to exploits. Ordinarily, if the Player quits out of important quest dialogue without a Walk Away line being specified, they must simply talk to the NPC again and run through the dialogue from the beginning again, which is immersion-breaking but functional (and it's their own fault for exiting dialogue anyway). |
However, an exploit can occur if the Player receives a reward without the Quest advancing at the same time. Consider this example, where the Player turns in a quest, and receives the next quest in the same conversation: | However, an exploit can occur if the Player receives a reward without the Quest advancing at the same time. Consider this example, where the Player turns in a quest, and receives the next quest in the same conversation: | ||
Line 327: | Line 318: | ||
:::: 1.1.1.2. Vanquishing this fell beast is the next step in your trials. '''(advance to next stage)''' | :::: 1.1.1.2. Vanquishing this fell beast is the next step in your trials. '''(advance to next stage)''' | ||
− | If the player cancels out at 1.1.1., then they may be able to re-enter dialogue and select 1. again, and receive another 1000 gold, over and over. | + | If the player cancels out at 1.1.1., then they may be able to re-enter dialogue and select 1. again, and receive another 1000 gold, over and over. One way to mitigate this would be to mark 1.1.1.1. as Walk Away dialogue, forcing the questline to continue no matter what, but this line is phrased as a direct reply to 1.1.1., and would be a non sequitur if spoken as a Walk Away. Thus, it might be a good idea to provide a custom written Walk Away line. |
− | + | : 1. '''I have slain the Gryphon of Evermore.''' | |
+ | :: 1.1. Amazing, my friend! Here is your reward. That is, the riches. The fame is not ours to bestow. '''(receive 1000 gold)''' | ||
+ | ::: 1.1.1. '''Do you have any other marks in need of slaying?''' | ||
+ | :::: 1.1.1.1. As a matter of fact, yes! The King has put out a bounty for the Werehare of Dunlain. | ||
+ | :::: 1.1.1.2. Vanquishing this fell beast is the next step in your trials. '''(advance to next stage)''' | ||
+ | ::: 1.1.2. '''''(walk away)''''' | ||
+ | :::: 1.1.2.1. Your next trial is to vanquish the Werehare of Dunlain, a truly fell beast indeed. '''(advance to next stage)''' | ||
+ | |||
+ | Implementers should be encouraged to identify and suggest such lines where appropriate, as it is easy to forget that this feature exists in the first place. | ||
= Services Dialogue = | = Services Dialogue = | ||
Line 359: | Line 358: | ||
:: 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since. | :: 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since. | ||
− | The reason | + | The reason this example is so bad is because the barter dialogue is no longer a Top-Level Branch. On the other hand, if it is kept as Top-Level, then it is actually quite easy to vary the dialogue option: |
: 1. '''Can I buy some of your axes?''' | : 1. '''Can I buy some of your axes?''' | ||
Line 367: | Line 366: | ||
:: 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since. | :: 2.2. Somewhere along the way, I started experimenting with axes, and haven't looked back ever since. | ||
− | However, | + | However, you ''must not'' do this, because the default line ("What have you got for sale?") is an established gameplay convention, analogous to the barter button in Oblivion, but in the form of a dialogue line. Changing this line obfuscates the fact that a barter menu will appear, and creates an inconsistency with regard to Skyrim. There is a reason this line was never varied in Vanilla: the player has been trained to look for this line, and as long as it is retained, they will know at a glance whether they are able to barter with an NPC or not. This is equally true for innkeeper rent room dialogue ("I'd like to rent a room. (<Global=RoomCost> gold)"). For trainer dialogue, there are some minor variations in phrasing for the different skills, but not much ("I'd like training in Alchemy", "I'd like to train in One-Handed weapons", "Can you teach me about Conjuration?" and so on). See [https://en.uesp.net/wiki/Skyrim:Generic_Dialogue#Requesting_training UESP for the complete list]. |
− | :::: '''Implementer's note''': Custom responses for Services Dialogue should be implemented as TopicInfos in the same stack as the Generic Dialogue, but near the top, so that it takes precedence. The displayed dialogue option can be controlled with the Prompt field. Be sure to duplicate any relevant conditions (GetOffersServicesNow for barter, faction membership for trainers, etc) and add whichever conditions are needed to narrow it down to your NPC and the appropriate circumstances. | + | :::: '''Implementer's note''': Custom responses for Services Dialogue should be implemented as TopicInfos in the same stack as the Generic Dialogue, but near the top, so that it takes precedence. The displayed dialogue option can be controlled with the Prompt field, which should only be used for trainer dialogue. Be sure to duplicate any relevant conditions (GetOffersServicesNow for barter, faction membership for trainers, etc) and add whichever conditions are needed to narrow it down to your NPC and the appropriate circumstances. |
Don't feel pressured to write unique Services dialogue for every single NPC that can have it. That would make the actual generic dialogue rather pointless. If no custom lines are written, then it should suffice to mention in the NPC document which services the NPC will offer and when, without having to add the dialogue line to the tree explicitly; the implementer will then add the NPC to the appropriate factions, which will enable the appropriate generic dialogue. | Don't feel pressured to write unique Services dialogue for every single NPC that can have it. That would make the actual generic dialogue rather pointless. If no custom lines are written, then it should suffice to mention in the NPC document which services the NPC will offer and when, without having to add the dialogue line to the tree explicitly; the implementer will then add the NPC to the appropriate factions, which will enable the appropriate generic dialogue. | ||
Line 425: | Line 424: | ||
= Scenes = | = Scenes = | ||
− | Scenes are a way to choreograph actions and dialogue featuring one or more NPCs. They are typically used in Quests during pivotal points in the narrative | + | Scenes are a way to choreograph actions and dialogue featuring one or more NPCs. They are typically used in Quests during pivotal points in the narrative. This section will instead detail some important uses for Scenes outside of quests. These largely belong to one of two categories: '''Major Establishers''' and '''Random Conversations''' (also known as ambient conversations, radiant conversations...) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | This section will detail some important uses for Scenes outside of quests. These largely belong to one of two categories: '''Major Establishers''' and '''Random Conversations''' (also known as ambient conversations, radiant conversations...) | ||
Major Establishers are scripted to begin on game start and only run once. The involved NPCs will be rooted in place (even during the night) until the Player gets near, at which point they will carry out the Scene and then settle into their schedules. The point of these is to establish the overarching themes of a given settlement. Examples include the racist harassment in Windhelm, the high demand on the smithy in Whiterun, Roggvir's execution in Solitude, and the squabble between the Thalmor and the Chapel in Beyond Skyrim: Bruma. It is not good for the hustle and bustle of a city for NPCs to be withheld from their daily routines, so major establishers are used sparingly, and are situated near city entrances so that they run their course straight away. | Major Establishers are scripted to begin on game start and only run once. The involved NPCs will be rooted in place (even during the night) until the Player gets near, at which point they will carry out the Scene and then settle into their schedules. The point of these is to establish the overarching themes of a given settlement. Examples include the racist harassment in Windhelm, the high demand on the smithy in Whiterun, Roggvir's execution in Solitude, and the squabble between the Thalmor and the Chapel in Beyond Skyrim: Bruma. It is not good for the hustle and bustle of a city for NPCs to be withheld from their daily routines, so major establishers are used sparingly, and are situated near city entrances so that they run their course straight away. | ||
Line 493: | Line 433: | ||
:::: '''Implementer's note''': Both kinds of scenes are flagged "begin on quest start" and "stop quest on end". Major Establishers are contained in Start Game Enabled quests. Random Conversations are instead triggered via the Actor Dialogue story manager event node. | :::: '''Implementer's note''': Both kinds of scenes are flagged "begin on quest start" and "stop quest on end". Major Establishers are contained in Start Game Enabled quests. Random Conversations are instead triggered via the Actor Dialogue story manager event node. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |