Working on Xanor: The Dialogue System
or How I create story (and avoid video)
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:
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:
So I made a more designer-friendly tool:
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!




Leave a Reply