3.1 Setting a new Dialogue
You can create a new dialogue by rightclicking on your content browser and selecting AscentToolset -> ADSDialogue.
Clicking on the dialogue will let access to the dialogue editor, a node based editor similar to the FSM one. To actually start a dialogue you need to call the relative method inside the ADSDialogueParticipantComponent.
3.2 Dialogue Participant Component
Every character that can be involved in a dialogue must have an instance of the Dialogue Participant Component. It must setup with the actual ADSDialogue object that involves that character and must be configured. Participant tag must be a unique GameplayTag that identifies that character in the world that will be used by the system to retrieve it as a participant in multi-participant dialogue. Then for every Participant you can setup in the component a Name to be displayed in UI together with his Icon and a list of animations that he can perform during his dialogues. Another important thing is to setup the name of the bone (or socket) to be used to actually spawn spatialized sound for that character.
Dialogue Participant can also be used to actually start your dialogue as the in the sample listed below and taken directly from the sample project:
3.3 Dialogue Editor
Once you click on a Dialogue, the Dialogue editor will be opened.
In Dialogue Editor there are 3 different types of nodes:
Start Node: This is the node to be used to start a dialogue. This node MUST NOT have parents! In an ADS Dialogue you can add as many Start Dialogue Nodes as you want and for everyone of those you can set up a set of Starting conditions. Once you call the StartDialogue node on a character, the Component will automatically select the first Start Dialogue node that has all the conditions satisfied. Nodes are checked from the top left to the bottom right.
This is the configuration of the Sample Project, it has no condition (being the only starting node, this will be the Dialogue that will be started any time). As First you'll have to setup the full list of partecipants that will be involved in this dialogue.
Dialogue Ended Actions are a list of Event Class that will be triggered at the end of the dialogue and a set of actions that will be triggered at the beginning of the dialogue (You can create one of these classes by creating a subclass of AGSAction and implementing the ExecuteAction method). All the other properties are the same of a normal Dialogue Node.
Dialogue Nodes: Is the actual node to be used for Characters speech.
For every dialogue node you’ll have to set up the participant tag who is actually speaking, an optional list of actions to be triggered, a sound that can be played and the animation tag that needs to be performed (animation montage is set inside the participant component itself).
Response Node: Is the node to be used to generate buttons that let the conversation proceed. Is usually used for Player's answers and to actually branche the dialogue.
3.3.1 Dialogue Transitions
For every transition you can also set up a list of conditions class that must be verified to actually unlock that answer. This is useful to make some dialogue branches that are only unlocked at certain point of your story.