Difference between revisions of "Bethesda Tutorial Dialogue"

Recording a Temp Track: Added note concerning Fuz Roh D'oh
imported>Mythweaver
(Recording a Temp Track: Added note concerning Fuz Roh D'oh)
 
(18 intermediate revisions by 12 users not shown)
Line 17: Line 17:
Skyrim provides a simple visual layout system so you can see the flow of your dialogue as you're creating it.  
Skyrim provides a simple visual layout system so you can see the flow of your dialogue as you're creating it.  


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:NewFeature|If you're used to the old-style dialogue creation system from Fallout 3 and earlier, it's still available to you under the [[Player_Dialogue_Tab|Player Dialogue tab]] (and in fact, the views are just a snazzier front-end to that same system).}}
|-
|style="border-style: solid; border-width: 0"|[[Image:NewFeature.jpg|48px]]
|style="border-style: solid; border-width: 0"|If you're used to the old-style dialogue creation system from Fallout 3 and earlier, it's still available to you under the [[Player_Dialogue_Tab|Player Dialogue tab]] (and in fact, the views are just a snazzier front-end to that same system).  
|}


To get started with the view, navigate to your quest (GSQ01) and double click to open the quest window. Then navigate to the [[Dialogue_Views_Tab|Dialogue Views tab]]. Your window should now look like this:
To get started with the view, navigate to your quest (GSQ01) and double click to open the quest window. Then navigate to the [[Dialogue_Views_Tab|Dialogue Views tab]]. Your window should now look like this:
Line 59: Line 55:
Now hit the OK button at the bottom of the window '''twice'''. The window will disappear and you'll see the Topic Info window.  
Now hit the OK button at the bottom of the window '''twice'''. The window will disappear and you'll see the Topic Info window.  


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|The first time you hit the "OK" button in the response window, the editor runs a simple spell-check on what you just entered. If you copied that precisely, there are no spelling errors, so the first button press won't do anything.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|The first time you hit the "OK" button in the response window, the editor runs a simple spell-check on what you just entered. If you copied that precisely, there are no spelling errors, so the first button press won't do anything.
|}


=Topic Infos=
=Topic Infos=
Line 80: Line 72:
Hit OK on the condition window to close it out, and you should then see it in the list. Now only Bendu can say it, but we don't want him saying it all the time; just before he's given the quest to the player. So we're going to add one more condition. Right-click in the condition list and select "New" again.  
Hit OK on the condition window to close it out, and you should then see it in the list. Now only Bendu can say it, but we don't want him saying it all the time; just before he's given the quest to the player. So we're going to add one more condition. Right-click in the condition list and select "New" again.  


We're going to further limit this bit of dialogue based on the quests current stage. So click on the Condition Function pull-down and select "GetStage." (You can type the first few letters to skip around in the list -- much faster than scrolling.) Now if you click the "INVALID" button to select parameters, it will bring up a list of quests rather than base objects (since it knows that the GetStage condition only deals with quests). Select "GSQ01" from the menu and hit OK.  
We're going to further limit this bit of dialogue based on the quest's current stage. So click on the Condition Function pull-down and select "GetStage." (You can type the first few letters to skip around in the list -- much faster than scrolling.) Now if you click the "INVALID" button to select parameters, it will bring up a list of quests rather than base objects (since it knows that the GetStage condition only deals with quests). Select "GSQ01" from the menu and hit OK.  


Now all that's left is to tell the condition which quest stage we care about. Since we know the quest is starting at stage 0, we could select "==" for our comparison and set the value to "0," but that might break this condition if we ended up adding some stage before this one. The safer way to set the condition is to check that our current stage is lower than 10, so choose "<" from the Comparison list and put "10" in the value field.  
Now all that's left is to tell the condition which quest stage we care about. Since we know the quest is starting at stage 0, we could select "==" for our comparison and set the value to "0," but that might break this condition if we ended up adding some stage before this one. The safer way to set the condition is to check that our current stage is lower than 10, so choose "<" from the Comparison list and put "10" in the value field.  
Line 86: Line 78:
[[Image:ConditionItemGetStage.png]]
[[Image:ConditionItemGetStage.png]]


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|Note that you can reorder conditions with the left and right arrow keys or the buttons at the bottom left of the condition window. In this example the order doesn't matter, but if you started setting up your conditions with ORs as well as ANDs, it would.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|Note that you can reorder conditions with the left and right arrow keys or the buttons at the bottom left of the condition window. In this example the order doesn't matter, but if you started setting up your conditions with ORs as well as ANDs, it would.
|}


Our final topic info window should look like this:
Our final topic info window should look like this:
Line 140: Line 128:
At the bottom of this window, you see fields for Scripts marked "Begin" and "End." The Begin script runs when the NPC starts saying the line, and the End script will run when he finishes. (In scripting terminology, these little pieces of script are called "script fragments" - see [[Topic_Info_Fragments|Topic Info Fragments]] for more details.)
At the bottom of this window, you see fields for Scripts marked "Begin" and "End." The Begin script runs when the NPC starts saying the line, and the End script will run when he finishes. (In scripting terminology, these little pieces of script are called "script fragments" - see [[Topic_Info_Fragments|Topic Info Fragments]] for more details.)


In the End field, enter this script command: <code>GetOwningQuest().SetStage(10)</code>
In the End field, enter this script command: <br />
<code>GetOwningQuest().SetObjectiveDisplayed(10)<br>
GetOwningQuest().SetStage(10)</code>


The <code>SetStage(10)</code> portion, as you might expect, sets a quest's current stage to 10. The <code>GetOwningQuest()</code> part just says that the quest we care about is the one that contains this dialogue. (Sometimes you might want a line in your quest to muck around in a different quest, so we have to be specific.)
The <code>SetStage(10)</code> portion, as you might expect, sets a quest's current stage to 10. The <code>GetOwningQuest()</code> part just says that the quest we care about is the one that contains this dialogue. (Sometimes you might want a line in your quest to muck around in a different quest, so we have to be specific.)
Line 162: Line 152:


=Try It Out=
=Try It Out=
{{WarningBox|'''Important!''' As of 1.7 the game uses SEQ files in order to track ''Start-Game Enabled'' quests you've added, and possibly ones you've altered. These files are needed for your dialogue and scenes to work properly!
See this [http://www.creationkit.com/index.php&#63;title&#61;TES5Edit_Documentation&#35;Creating_Start-Game_Enabled_Quest_.28SEQ.29_Files tutorial] on how to Create Start-Game Enabled Quest (SEQ) Files}}
Load the game with your plugin and go meet Bendu. (Remember, you can hop right there with <code>COC MixwaterMillWorkersHouse</code>.) He should now have something to say to you.  
Load the game with your plugin and go meet Bendu. (Remember, you can hop right there with <code>COC MixwaterMillWorkersHouse</code>.) He should now have something to say to you.  


Line 173: Line 167:


=Recording a Temp Track=
=Recording a Temp Track=
Open up the GSQ01MeetingBenduBranchTopic and navigate through to its Response window. At the bottom of the window, you'll see a "Record" button. Press this button and, if you have a microphone hooked up to your computer, you can record a performance of the line yourself. If you don't (or you're self-conscious and don't like the sound of your own voice) you can just record a few seconds of silence, enough to give the captions time to be read. Hit the Save button to commit this file to disk.  
 
{{WarningBox|Addition by [[User:xieve|xieve]] on 2023-02-21: Nowadays, if you are not going to record an actual voiceline and if SKSE is available for your platform, you should use [https://www.nexusmods.com/skyrimspecialedition/mods/15109 Fuz Roh D'oh] and skip the step where you record a few seconds of silence. You must then also instruct your users to install this mod as a dependency.}}
 
Open up the GSQ01MeetingBenduBranchTopic and navigate through to its Response window. At the bottom of the window, you'll see a "Record" button.
 
[[File:RecordButton.jpg|200px]]
 
Press this button and, if you have a microphone hooked up to your computer, you can record a performance of the line yourself. If you don't (or you're self-conscious and don't like the sound of your own voice) you can just record a few seconds of silence, enough to give the captions time to be read. (Note: you MUST have a microphone to record anything. If no microphone was plugged in at the time you started the Creation Kit, the record button will not do anything) Hit the Save button to commit this file to disk.  


Do the same thing for the other two topics we made. (While you're in there, consider setting the emotions for those lines, so that Bendu will show Disgust or Happiness depending on your choice.)
Do the same thing for the other two topics we made. (While you're in there, consider setting the emotions for those lines, so that Bendu will show Disgust or Happiness depending on your choice.)


In the "No" topic, click the box that says "Goodbye." This will drop the player out of dialogue when it's selected, so you won't end up back at the topic list after the line is done. (You should also make the "Yes" topic a goodbye. Since Bendu only has one top-level topic right now, that's not necessary, because we know he'll have nothing else to say when he's done here. But if another quest had dialogue for him, it might be confusing to the player.)
In the "No" topic, click the box that says "Goodbye." This will drop the player out of dialogue when it's selected, so you won't end up back at the topic list after the line is done. (You should also make the "Yes" topic a goodbye. Since Bendu only has one top-level topic right now, that's not necessary, because we know he'll have nothing else to say when he's done here. But if another quest had dialogue for him, it might be confusing to the player.)
{{WarningBox|The game engine occasionally fails to playback audio files saved in the WAV/XMW format for reasons yet to be deciphered. To workaround this bug, FUZE equivalents of the voice assets need to be created. This can be done by converting the source WAV files (when applicable) to the XWM format, and subsequently to FUZ by pairing them with their LIP files. More information on the conversion process may be found [http://forums.bethsoft.com/topic/1347417-dialogue-troubles/page__p__20346206#entry20346206 here].}}


=Additional Dialogue=
=Additional Dialogue=
While we're here, let's also make the dialogue that will close out the quest when we come back with the amulet.  
While we're here, let's also make the dialogue that will close out the quest when we come back with the amulet.  


In the dialogue view, right-click to create a new branch, and call it "GSQ01BenduFinishBranch." Accept the default name for the starting topic, and make the topic text, "I've brought your amulet." Give him something good as a response (I went with "I hope you gave that thief a good thrashing!"). It will want two conditions; one that restricts it to Bendu, and another that limits it to stage 30 of the quest. Finally, set it to be a Goodbye, and set the quest to stage 40 when it's said.  
In the dialogue view, right-click to create a new '''branch''' (not topic), and call it "GSQ01BenduFinishBranch." Accept the default name for the starting topic, and make the topic text, "I've brought your amulet." Give him something good as a response (I went with "I hope you gave that thief a good thrashing!"). It will want two conditions; one that restricts it to Bendu, and another that limits it to stage 30 of the quest. Finally, set it to be a Goodbye, and set the quest to stage 40 when it's said.  


You should be able to do all this by now. It will look like this when you're done.  
You should be able to do all this by now. It will look like this when you're done.  
Line 190: Line 194:
We still haven't dealt with the amulet itself yet, and the quest has no way to proceed from stage 10 to 30, so we have work to do!  
We still haven't dealt with the amulet itself yet, and the quest has no way to proceed from stage 10 to 30, so we have work to do!  


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|This might seem like a lot of work and unnecessary data-fumbling to just get characters to say a few lines. Part of the complexity is historical -- because it evolved from the old Morrowind text-based dialogue system, the organization can seem a little sideways and non-directed. But the same system also handles multiple characters saying the same line, combat barks, player greetings, hit responses, etc. Flexibility sometimes means complexity.  
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|This might seem like a lot of work and unnecessary data-fumbling to just get characters to say a few lines. Part of the complexity is historical -- because it evolved from the old Morrowind text-based dialogue system, the organization can seem a little sideways and non-directed. But the same system also handles multiple characters saying the same line, combat barks, player greetings, hit responses, etc. Flexibility sometimes means complexity.  


With some practice, all of this becomes second nature, and you'll be able to mechanically work the dialogue system as fast as you can write the lines themselves.  
With some practice, all of this becomes second nature, and you'll be able to mechanically work the dialogue system as fast as you can write the lines themselves.}}
|}




Line 203: Line 203:
|Next=Bethesda_Tutorial_Creating_an_Item
|Next=Bethesda_Tutorial_Creating_an_Item
}}
}}
{{Languages}}
16

edits