Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Role: Systems Designer | AI Designer | Unreal Developer
Genre: Mystery | 3D | First-Person | Fantasy
Platform: PC/ Console
Release Date: In-Development
The Passing is a mystery-fantasy game designed and developed as part of my thesis on ‘Improving Player Agency in Detective Video Games’. The Thesis claims that providing choices to players in how they interact with particular aspects of detective video games such as ‘Information, Interrogation, and Instrumentation’, provides better player agency than just providing narrative choices.
The Branching Dialogue System is the core system used to interact with the interrogation aspect of the game, while also contributing to the information aspect of the game. The system aimed to provide a flexible and expansive means of handling complex dialogue branches that affect multiple aspects of the game.
I was responsible for designing and developing the entire Branching Dialogue System along with the Blueprint Scripting, AI and Behaviour Tree development, and Data Table management.
All assets are kitbashed from the Unreal Marketplace and Mixamo.
The Branching Dialogue System is an integral system in The Passing that the player interacts with very frequently. It essentially allows the player to have conversations/ interrogations with NPCs while providing multiple choices in responses.
The system is invoked whenever the player interacts with an NPC (Non-Playable Character), or any actor to which a Dialogue Component is added, within the game.
The dialogue component is used to assign a Dialogue Behaviour Tree (for AI Logic) and a Dialogue Sheet (for the Dialogue Script and conversation branching) to the actor the component is attached to.
The system allows for the player to respond to the NPC Dialogues from a set of Dialogue Responses, using information collected in a journal (Information System), or Items collected (Instrumentation System).
This allows for a wider range of responses and branching conversations.
There are various components that work together to make the Branching Dialogue System work. These are:
The dialogue system was built to be cohesive with the other integral systems in the game, namely the Information system and instrumentation (inventory) system. This is done using other data tables that together offer a lot more systemic gameplay.
The Dialogue Component is an actor component that is attached to any actor or NPC that the player can have a conversation/ interrogation with.
The base NPC class has variables and components such as Character Name, Character ID, Quests, Dialogue Component, etc.
The dialogue component holds the Dialogue Behavior Tree and Dialogue Sheet.
Every new NPC created as a child of the base NPC class will have to be assigned the required Dialogue Behavior Tree and Dialogue Sheet based on which character the NPC is representing.
Allowing the Dialogue Component to be the sole handler of the NPC’s Dialogues enables a more modular and flexible workflow that is separate from the regular NPC AI logic.
The AI logic of the Dialogue Behavior Tree is responsible for handling the flow of the dialogues between the NPC Dialogues and the Player Responses.
The Behavior Tree reads the dialogue information from the Dialogue Sheet assigned to the NPC and displays it using the Dialogue HUD.
There are 4 main tasks that are performed by the Behavior Tree:
NPCSpeak
This task runs when the speaker is not the Player. It executes the NPC dialogue by accessing the Dialogue Sheet and displaying the required NPC dialogue in the Dialogue HUD.
PlayerReply
When the speaker is the Player, this task executes. It accesses the Dialogue Sheet and displays the required Reply Choices in the Dialogue HUD.
Prev
This is a special task that is used to return the conversation to the regular dialogue flow when the player has diverted the conversation with any response from the information system or instrumentation system.
DialogueEnd
This task is triggered to end the current conversation.
The Dialogue Sheet is a core part of the Branching Dialogue System that consists of a Data Table based on a Dialogue Structure.
The Dialogue Sheet is filled out using a spreadsheet software and the CSV file is imported as a data table into the Engine.
This allows for the Dialogues to be written by a Narrative Designer/ Writer without having to enter the game engine.
Each NPC has its own Dialogue Sheet that is assigned to it via the Dialogue Component.
The Dialogue Behavior Tree of the NPC accesses the Dialogue Sheet and looks for a specific Convo_ID.
If the character of the Convo_ID is not the player, the Dialogue Tree runs the NPCSpeak Task and shows each line under that Convo_ID one at a time.
If the Character of the Convo_ID is the player, the PlayerReply task is run and all the lines of dialogue with that Convo_ID are shown as Reply Choices.
The NextConvo_ID will signal what next conversation needs to be searched for in the Dialogue Sheet once that line is displayed.
The NPC Dialogues and the available Player Responses are provided via a Dialogue HUD, which is a Widget that reads from the Dialogue Sheet as well as allows access to the Information System and Instrumentation System.
The player can respond to an NPC in multiple ways. They can:
Pick a reply from the reply optioPick a reply from the reply options provided:
Pick a piece of information stored in the Player’s journal (Information System):
Pick an item from the player’s inventory (Instrumentation System):
The system makes it possible to create conditional reply options that appear/ don’t appear based on any condition set within the game.
This is based on the check condition that is set within the Dialogue Sheet and the NPC character.