Working on Xanor: The Dialogue System

As promised, I will be making a series of posts regarding my upcoming video game, Xanor. In this post I will be demonstrating the dialogue system. Before I began designing a whole new dialogue system, I thought I'd first google what other people have created. The very first hit was this Mass Effect dialogue system. Not bad I saids to myself. So I copied it investigated it and ended up using a similar system.

At its very core, the dialogue system consists of Branches and Hubs. A branch is a series of speech lines; the sentences a character says as well as his pose (remember, this is a 2D game, so no animations). A branch either terminates the dialogue, or reaches a hub. A hub has a list of branches which basically are the player's options.

A hub can be of three types:

  • a Normal Hub which contains a list of branches,
  • an End Hub which terminates the dialogue,
  • or an Info Hub which returns to the original hub once the branch ends

Pretty straightforward, don't you think? Here is a diagram to clear any confusion:

Dialogue Diagram

While the Mass Effect sample was great, it was way more complicated than what I needed. First of all, Mass Effect has a morality system, so the branches where either good, bad or neutral and they were placed around a wheel. For Info branches, you had to select a special "Investigate" option to view them.

I have no morality system, and I don't want my info branches to seem any different than any normal branch. So I simplified it by making info branches nothing more than a branch that has its NextHubID set to the same Hub as the one it was choosen from. I also eliminated the limitation of having 3 branches (good, bad and neutral) to unlimited. Finally, I removed the sound property since I won't be having any voice overs (sigh).

On the designing side, the sample comes with an editor. Which doesn't really look easy to understand:

Mass Effect Dialogue Editor

So I made a more designer-friendly tool:

Xanor Dialogue Editor

Reminds you of something?

To do this, I had to test a LOT of diagramming libraries: Netron, Piccolo2D, QuickGraph etc, etc. I ended up with Open Diagram mainly for its simplicity.

Here is a boring video that demonstrates how the whole system works (the interesting part is at 1:53):


Now that I am able to create the dialogues and basically write the entire story of the game, I have to focus on a much more important system: the battle system.

So, stay tuned!