Laika – An Experiment in a Branching Dialogue Tool

  • Role: Solo Developer
  • Engine: Unity
  • Platform: PC
  • Production Time: 4 Weeks

This tool has been updated! Read about it here!

Laika is a project that I worked on during the summer of 2018. I initially worked with two other artists, Riley Morrissey and Jenna Papagni, to made a small vertical slice of the game. However, I continued afterwards and worked more on the branching dialogue system, which is what this page is about. I made an 6 blog posts about this project, which you can read here if you want to see more about this.

Lakia is a game about the first dog in space, Laika. In real life, she was stuck up there, unable to return home. In the game, Laika is sucked into a wormhole, and must travel across different planets to make her way back home to Earth, where her favorite toys and treats are.

First things first, what does the finished project look like?


I didn’t just want to make a dialogue system for Laika, I also wanted to make something modular so I could take it with me to other projects easily. In order to do this, I had to make sure not to hard code anything except for the required classes and objects. Things like the dialogue canvas, GameMaster, and Buttons were all givens in this project, so I felt comfortable making them an essential part of my code. I drew out my thoughts on a piece of paper, pictured below, and started working.

I’ll quickly go over the sheet’s contents.

  • Top Left: A quick sketch of what I want the dialogue screen to look like. The black square represents the speaking character’s portrait.
  • “Display”: This is a recreation of my dialogue tree for the first level, seen below. There is a region in it labeled “Test Region” that is referenced below.
  • Middle Right: These are proposed inputs for the dialogue, allowing me to edit the game as the conversation is happening.
  • “Programming”: This is a quick sketch of what I wanted the inspector to look like.
  • “Test Region”: This is a blow up of the highlighted region from the “Display”. I edited it to show off what I thought it would look like as a 2D array.
  • Bottom: These are basic tests for me to help understand how a conversation would flow in a 2D array.

Over the course of the next few weeks, I implemented three of the major mechanics in the game:

  • Movement around a circular planet
  • Movement between the layers of the planet, a core mechanic (digging)
  • NPC movement between set points
  • Talking to NPCs

The video below shows off these mechanics in action:

Next, I improved upon my dialogue system to add branching dialogue options.

After some changes and optimizations, I ended up completing my system. The dialogue tree that I’m using is shown below, and you can follow along as you watch the finished video, which is the same as the one listed at the top of the page.

Level 1 Conversation Tree – Revised

Since this is all inspector based, I have a GIF of what my inspector looks like, shown below. I show off the Dialogue Master, which contains all the dialogue for the characters in the scene, as well as the NPC script, which has NPC specific variables and options.

(Click on it to expand. It doesn’t work well on mobile, sorry about that.)

The thing I am most proud of with this is the fact that the user doesn’t need to code AT ALL. Everything is done through the inspector. I’m working on setting up a quick instruction sheet for myself so in future projects the set up for this will be super easy.