Conversation & Narrative Pipeline Editor
For an undisclosed personal project I have also been using this tool as a way to manage all narratives, conversations and story beats, providing a simple interface to create branching storylines.
Conversations
I wanted the ability to easily and visually design the conversations that I need in my project. Primarily I wanted to be able to create multiple input responses with different answers creating divergent conversations.
Secondly I wanted to easily create a way to keep track of the actors on the conversation stage, the options available should include; being able to pick the side that a character stands on, being able to have characters enter and exit the conversation and logic locked conversation options, such as checking if a person is actually in the conversation or a previous story beat has been completed.
Cast
To make the tool easier to use, I wanted to keep as much relevant data close together as I could, primarily this meant that I wanted a list of the characters in the game accessible in a simple expandable interface.
Starting a conversation
The starting point of a conversation was defining how characters enter a conversation, I first thought of putting them in the start node, but decided that the usability of having them as individual nodes was much better; It provided the ability for me to already implement the ability to have characters enter the conversation after it has started, a much more scalable solution. This design also lends itself perfectly to how actors can exit a conversation.
Speech
The first major step of a conversation is characters talking to each other, this seemed like the perfect starting building block, I added a text editor to a node and for a first iteration deemed it perfectly acceptable.
Questions and answers
In my project I want branching and interactive conversations and so decided that i needed to add questions, they work like speech except that the only node-execution continuations come from responses to the question, each response can have a different responder, perfect for a party based or multi-actor conversation system.
If it matched the sort of project I was working on I could add a timed exit from the top of the node, where a response can time out. This would give players time critical choices, but for now I have no vision of needing such a thing.
Branching from previous story events & triggering events
Using the logic from the above step, I could remove the question and responses and all I’m left with is a node that can branch the execution of the graph, I wanted to limited it to 2 branches so that I could easily add in a link that connects up to any valid boolean.
Text Modifiers & lockable question responses
To connect up with the previous system, I realised I had a very simple boolean provider, in which I could check if an actor was in the conversation, this is especially important where a branching conversation could considerably change which characters are active in the conversation.
Relationships
A small feature that I couldn’t ignore in my project was relationship building, the relationships are stored in a statically accessible array. The node select 2 characters a left (from) and a right (to) and then modifies that relationship.