-
Notifications
You must be signed in to change notification settings - Fork 27
Overview of the Dialogue Editor
This is a basic overview of the Dialogue Editor, and is based on editing dialogue within ME3. The other games should follow similar principles, though variations may exist (with ME1 being the most structurally different).
English language conversations are usually stored in files with filenames that end in LOC_INT
(localisation international). Other languages are stored in filenames with corresponding acronyms – LOC_FRA
for French, LOC_DEU
for German, etc.
Localised files are usually paired with another file with an identical name, minus the LOC_INT
suffix. These non-localised files usually hold event sequences, including when to trigger various conversations held in the corresponding localised file. These files are loaded before the main file, and are referenced by imports. This way of loading allowed languages to be changed out without requiring language-specific changes to the main file that references them.
We will be looking at BioD_CitHub_UnderbellyP2_LOC_INT.pcc
for this overview. This is the English localised file for the Refugee area of the Citadel during certain portions of the game. Specifically we will be looking at Kelly Chambers’ dialogue.
Choose a layout generation you find easy to read. My personal favourite is Waterfall and that will be used in the screenshots for this overview.
Figure 1
The dialogue editor should also display any spoken lines using the game’s subtitles. These are loaded from TLK files. If you do not see any dialogue lines, you can search for and load TLK files by going to Tools → Manage TLKs.
Many conversation nodes will display No Data
. This is not a loading failure. Not all nodes have dialogue.
Figure 2 gives a basic overview of the layout. The pane in the bottom left corner (outlined in red) lists all conversations within the package file. Click on the conversation to select it.
The main pane (outlined in green) will display a visual representation of the branching conversation you have selected.
Figure 2
The bottom central pane (outlined in blue) shows the conversation as it would appear in the package editor. The tabs at the left-hand edge of this pane allow viewing FaceFX animation or listening to audio files. This pane does not feature further in this overview as it’s not generally necessary to use it for simple dialogue editing when more user-friendly options are available within the Dialogue Editor.
The upper right-hand panel (outlined in yellow) gives more detailed information on the node highlighted in the main panel. Currently this is displaying Starting Node information, but this will become more detailed and useful one Entry or Reply nodes are selected.
Finally at the bottom right you will see a list of speakers. These can be selected to bring up information about animation sets assigned to various participants in the conversation, but again, this goes beyond simple dialogue editing and will not feature again in this overview.
All conversations are made up of three types of node. You can see an example below in Figure 3. It’s too small to make-out detail but should give a high-level view of how things will look. Diamonds represent Starting nodes. Yellow boxes are Entry nodes. Blue boxes are Reply nodes.
Figure 3
Starting nodes show various ways a conversation can begin. They will trigger in sequence. The Starting node number is the same as the first Entry node in the conversation. This system means that a single conversation can develop over the course of the game. As shown below, this conversation with Kelly has three possible starting points. When the game is told to trigger this particular conversation, it will check which version was most recently completed and – subject to various conditions – trigger the next Starting node on the list.
In this case the first Starting node leads to dialogue where Shepard and Kelly reunite. The next time Shepard visits Kelly, if she was told to change her looks, the second Starting node will fire, and they will discuss her makeover. If she did not change her looks, the second Starting node will be skipped and the game will go straight to the third Starting node (which features Kelly apologising for spying on the Illusive Man’s behalf).
Entry and Reply nodes. A conversation will always alternate between Entry nodes (NPC lines) and Reply nodes (Shepard’s lines). Where you see boxes labelled “Autocontinue” this is a sign that nothing is happening. There is no dialogue, plot or interp data (camera changes, facial animation, etc.). This node exists purely to pass the conversation along to the next node. You may also see boxes labelled “No data” that are not purely “autocontinues”. They may set plot bools or transitions, or represent non-vocal lines (reaction shots, etc.).
The number string in the entry and reply nodes correspond to strings in the TLK. This is used to determine what subtitles are displayed, what audio fires and which animation is used.
You may also see references to Plot Bools (Bool), Conditionals (Cnd) and Transitions (Trans).
Plot Bools refer to true/false flags that indicate whether a specific event has happened in the game. For instance, “Kelly died on the suicide mission,” or “Had dinner with Kelly.”
Plot Integers also refer to specific events, but instead of being either true or false, they have an associated integer. For instance, “Flirted with Kelly” and the number of times the player did that.
Conditionals are collections of plot bools or plot integers that together describe a specific circumstance. For instance, “Kelly survived the suicide mission and had dinner with Shepard.”
Transitions tell the game to change a plot bools or integers. For instance setting the “Kelly changed her appearance” plot bool to true if Shepard chooses that piece of dialogue.
As you’d expect, Paragon choices and interrupts are represented by blue lines, and Renegade choices and interrupts are represented by red lines.
Figure 4
In R0
, Shepard addresses Kelly, and this triggers Transition 2566
.
There are two possible responses from Kelly. E1
will be triggered if Conditional 1231
is true
. This conditional is checking whether Kelly and Shepard have a romantic relationship. E3
will be triggered if the conditional is false
and they do not have a romantic relationship.
In both cases, Shepard has the option to respond in a Paragon way (see the blue line). This is a Paragon Interrupt. How do we know this? Right click on either E1
or E3
and choose Edit Links and you will see this:
Figure 5
This shows the conversation can branch from E1
to R3
(the default choice), or E1
to R1
(the Paragon Interrupt, per the GUI Category column – outlined in red).
Back to the main example, the conversation continues to branch based on romance status until E2
and E4
. These two Entry nodes feed into R2
and R5
, which are Autocontinue
reply nodes with no purpose but to redirect these branches to E5
, where the conversation converges.
A romanced Kelly will go from line E4
to E5
without a pause. An unromanced Kelly will go from line E2
to line E5
without pause.
Further on in the conversation, we have an example of Paragon and Renegade dialogue options (not interrupts, just dialogue choices in the traditional top-right and bottom-right configurations on the dialogue wheel). Figure 6 is a visually messy as there are investigate options looping back in, but focus on the three nodes clearly visible.
Figure 6
Here we can see E16
has three possible branches. R18
is an investigate option. R19
is the Paragon option (Reply_Category_Agree
), and R21
is the Renegade option (Reply_Category_Disagree
).
This decision relates to whether or not Shepard tells Kelly to change her identity. Transitions are visible in both R19
and R21
marking which decision was made.
Is it called the node pane? I don’t know! That’s what I’m calling the pane at the top right of the Dialogue Editor. This shows detailed information on the highlighted Entry or Reply node.
Figure 7 shows Plot Control tab which displays information about the conditions under which the reply will fire, and whether it sets any plot information going forwards.
Here is R21
, where Shepard tells Kelly to change her identity. As a general note, most of the numbers seen in the node editor – even when they are not in boxes that seem selectable – can be selected and overwritten in order to edit the events of the game. Just double-click on them.
The Line String Ref (in the blue box), refers to the line in the script that will fire. This refers to the subtitle, but the number is also used to find the audio line and the FaceFX animation. Changing this string will wholesale swap one line for another, including correct audio, subtitles and lipsync. This will only work within the same conversation. If you assign a Line String Ref from another conversation, the subtitles will display, but the game will be unable to load the audio or facial animations.
Figure 7
Plot checks and Plot transitions can also be seen on this tab. Here is a very basic outline of these functions, as this is a complex area best suited to its own tutorial.
Plot checks can refer to either Conditional checks or Bool checks, as defined by the drop down highlighted in green. The purple box is where the Conditional or Bool number is noted. Entering -1 in this location means there is no conditional/bool check.
Plot transitions (highlighted in yellow) will always occur if the node fires. Again, -1 would indicate there is no transition to be fired. However, as you can see, R21 will fire Transition 2897 (noting Shepard has told Kelly to change her identity).
Finally, the parameter boxes highlighted in red. In the case of Plot Bools, this needs to be set to 1 (
true
) or 0 (false
).
In the case of Conditionals and Transitions, this parameter will most often be -1, which means it is not required. Transitions will always be triggered when the node is reached. Conditional checks will always be passed if the arguments return
true
.
However, occasionally Transitions or Conditionals require an additional parameter for input (i.e. “set Plot Integer 1234 to this additional parameter here!”, or “this Conditional is
true
if the additional parameter is greater than Plot Integer 1234!”) This is where that additional parameter would go.
The Matinee tab shows interp data for the node. This includes cutscene information, animations and camera control. There are a few useful, basic options that can be controlled directly from the tab.
Figure 8
In red, we see the Non vocal line checkbox. Checking this on a node that otherwise has No data
means that it won’t be skipped over in the conversation. It can then be used for reaction shots, etc.
Purple outlines the Ambient line checkbox, which means that the line should be delivered without starting a cinematic conversation. Converting ambient conversations to cinematic conversations usually requires additional work, beyond the scope of this basic overview.
Camera Intimacy is shown in grey. There are usually 3 cameras set up at varying distances from the speaking characters.
More detailed control is available by opening the interp data in other tools, such as the Interp Editor (blue), Sequence Editor (green) or Package Editor (yellow). The new tools will open with this asset selected. However detailed editing of interp data with these tools is beyond the scope of this overview.
The options on the GUI Control tab are fairly simple. Yellow shows the checkbox to hide subtitles. The GUI Style, in green, determines how the GUI looks to the player and is mostly to provide blue and red highlights to Charm and Intimidate options on the dialogue wheel. Orange shows where you can set the line to be unskippable. Red denotes that this is the automatically chosen reply in Action mode. Major decisions (purple) exist in all story modes (Story, RPG or Action).
Figure 9
The blue box is a drop down with three options. REPLY_STANDARD
will be used most of the time. It is also possible to choose REPLY_AUTOCONTINUE
which – as detailed above – means the response will be skipped over. Finally, there is REPLY_DIALOGEND
which denotes the end of the conversation.
Finally, the assets tab links to the audio and facial animation assets. Wwisestream is the audio, FaceFX is the facial animation. As with the Matinee tab, detailed editing – which is beyond the scope of this overview – can be performed in a number of other tools. The green box will open the asset in Soundplorer. The blue box will open the asset in the Package Editor. The purple box will open the asset in FaceFX editor.
Figure 10
All lines come in Male/Female pairs. For Shepard they will be voiced by the appropriate gender. For other characters, the lines will always appear in the Male section, with nothing present in the Female section. This is regardless of the gender of the NPC or Shepard’s gender. If NPCs have dialogue that varies according to Shepard’s gender, then this is differentiated by adding two branching responses, with the one referencing Femshep checking Plot Bool 17662 (Shepard is Female).
As already noted, it is possible to swap the line that is triggered by overwriting the Line String Ref in the Node Pane. This will change the audio, subtitles and facial animation, as long as the new line is present in the same conversation. Using lines from other conversations is covered by a different tutorial.
Conditionals, plot bools and transitions are also by overwriting in the Node Pane’s Plot Control tab.
Editing the main flow of the conversation, and the dialogue wheel, is done in the Main Display Pane. Right-clicking on any Entry or Reply node and choosing Edit Links will allow you to redirect the conversation, add new branches, and categorise responses.
Figure 11
Target Line (in yellow) shows the subtitles for the actual spoken dialogue. This is pulled from the Line String Ref in the appropriate Reply/Entry node. It cannot be directly edited here.
The link is the little line between nodes. Which link are we going to follow? Well that depends on how many links there are and what order they're in. The game will go down through potential responses sequentially until it finds one that it’s valid to trigger, which is why replies that depend on certain conditions are listed higher than replies that are available in all circumstances.
The green box shows where you can delete or re-order the possible links to the next lines.
Where the player has the opportunity to choose a response, and there is more than one option set within the same GUI Category (see below), the first valid option in the list will be displayed on the dialogue wheel. So, for instance, a REPLY_CATEGORY_AGREE
response tied to a romance-related Conditional listed above another REPLY_CATEGORY_AGREE
with no plot conditions, would result in only one REPLY_CATEGORY_AGREE
option being displayed on the dialogue wheel option. If the bool was true
, the first link would be displayed. If the bool was false
, the second would load.
But I don't want to re-order or edit any of the existing links, I want a brand new link!
The blue box outlines where you can clone the link. This cloned link can then be edited and changed to do whatever you like. This is how you create new links.
Okay, okay, I'm fine with the links I have, I just need them to be going to different places!
Double-clicking the Link column (in red) will bring up a list of all possible Reply (or Entry) nodes and you can change the node the link leads to.
GUI Choice Line (in orange) is the line that will appear on the dialogue wheel (if this node contains a dialogue choice for the player). You can amend the GUI StrRef to change the GUI Choice Line. Tip: double clicking this tends to trigger the same effect as double clicking the Link column. Click GUI StrRef once, wait a second, then click again. You should now be able to type in your new reference.
The drop-down list under GUI Category (in purple), is where you can define where on the dialogue wheel the text will appear.
-
REPLY_CATEGORY_DEFAULT
- Centre right/Neutral -
REPLY_CATEGORY_INVESTIGATE
- Centre left/Investigate -
REPLY_CATEGORY_AGREE
- Top right/Paragon -
REPLY_CATEGORY_DISAGREE
- Bottom right/Renegade -
REPLY_CATEGORY_FRIENDLY
- Top left/Charm -
REPLY_CATEGORY_HOSTILE
- Bottom left/Intimidate -
REPLY_CATEGORY_RENEGADE_INTERRUPT
andREPLY_CATEGORY_PARAGON_INTERRUPT
will make the option appear as an interrupt prompt on screen.
If you want the dialogue wheel to display a choice as a Charm or Intimidate option (highlighted in red or blue), you will need to go to the linked Reply Node and, on the GUI Control tab of the Node Pane, set either GUI_STYLE_CHARM
or GUI_STYLE_INTIMIDATE
from the appropriate drop down (see Figure 9). Conditionals to allow restricting access to the option, and Transitions would be used to assign reputation, etc.. They will need to be manually assigned.
It is also possible to clone or create new nodes. To do this, right-click on a node in the main pane, and choose either Add entry or Clone entry. You may need to scroll down past all Starting Nodes to find your new entry. You can now edit this from scratch. It is also possible to drag-drop the “Out” links into other nodes, or from other nodes into your new node. (The cursor would be dragging the clear box).
Figure 12
“That’s not what I thought Shepard was going to say! The text in no way implied that!” We’ve all been there. All text strings within the game – including subtitles and the text that appears on the dialogue wheel – are kept within BIOGame_INT.tlk
(where the last three characters vary by language). Text strings all have line references. This is the Line String Ref visible in the Node Pane.
All DLC Starter Kits generated by the ME3Tweaks Mod Manager will require that you assign a unique TLK ID number, and will then generate blank TLK files for all localisations. This can be opened in the ME3Tweaks ME3Explorer TLK Editor tool (found in the Utilities category).
Open your mod’s TLK file in the appropriate language. It will look something like this:
Figure 13
Choose Add String (red), and then enter the new string ID in the blue box. Type the new text string into the green box. Save the string with the button outlined in purple. Add any further strings you need, then go to File-→Save.
You can now reference your new strings in the Dialogue Editor. You will need to go to Tools-→Manage TLKs and add your DLC’s TLK, then reload, to see your new text strings within the Dialogue Editor.
There are some differences between adding new strings, overwriting existing strings, and which option should be used when working with subtitles or the dialogue wheel. Note: the vanilla game sticks to a 32 character limit on the dialogue wheel to ensure readability, though this is a style guide, not a limit of the game itself.
If you add an existing Line String Ref (i.e. you want to change a line that already exists) this will override the vanilla game. This means you can change subtitles, or text on the dialogue wheel. Changing subtitles by overriding an existing string will not break your game (although it will no longer match the audio line, unless you have also replaced this).
If you add a completely new string, you will need to pick a unique number, and should start by adding 1 to the number used for the Male and Female lines (as shown in the picture above). This option can be used to add new text to the dialogue wheel. However, as the dialogue system uses the Line String Ref to find audio and facial animations as well, using this option to add new subtitles will break those links, and consequently break the line of dialogue. To fix this you would need to do some renaming within the package to restore those links, which is beyond the scope of this tutorial.
Audio editing of any kind is extremely limited in both ME1 (2008) and LE1 (2021). It uses different middleware and is beyond the scope of this guide.
It is not possible to add new audio or overwrite existing audio within ME2 (2010). The only option, therefore, is to redirect existing audio within the game.
It is extremely difficult, if not impossible to add new audio to LE2 (2021), ME3 (2012) and (LE3) (2021) conversations, but it is possible to overwrite audio. It is also possible to clone audio, then overwrite it, to add "new" audio for practical purposes.
This process involves using a hack to pipe dialogue from Conversation A into Conversation B. It is lengthy and complex and, you guessed it, beyond the scope of this tutorial. See below for a different tutorial!
Here are a few other tutorials that might help you with dialogue editing.