Emotional Ties

In Emotional Ties, play as ace psychic investigator David Coyle as he is called to solve the murder of a groom at his own wedding. Use your psychic talents to pry information out of suspects and get to the bottom of this film noir style mystery.

Emotional Ties is a short visual novel with light puzzle aspects. It is about 1,200 words long and will take 30-40 minutes to play through all 5 chapters. I hope you enjoy playing.

The Initial Idea

I was inspired by the GMTK Game Jam prompt of “Joined Together“ and decided to make a game using the prompt. (I did not participate in the game jam or make this in a single weekend; I just used the prompt for my project.) My idea was a mystery visual novel where you psychically interrogate people by linking together different mental concepts to create effects.

The two most interesting problems I had to solve for this project were how to structure all the branching conversations in code, and then how to actually write and plot the game effectively.

Plotting is Complicated

Structure

I started the writing process with two bullet point outlines. The first was a timeline of what actually happened with the murder and who was involved. I needed to decide on the facts of the case so I could craft a mystery around it.

The second outline covered the actual gameplay and investigation—what clues you found, and when. I broke up the game into chapters. Each chapter would contain a single interrogation with a suspect. To finish the chapter, you would have to discover all the major clues required for the plot.

This structure allowed the game to be linear (and therefore simpler to make), while still allowing for branching narrative within each chapter.

Plot Maps

Once I had a list of the chapters and the main events/information they should contain, I had to create the chapter structure. I needed a system for tracking a branching narrative, so I looked to two sources of inspiration: a GDC talk titled “Applying Level Design to Dialogue in Subsurface Circular“ and the video series “Boss Keys“ from GMTK. I developed a way to map out each chapter using a flow chart.

The chart shows the connections between actions the player can take and the prewritten conversations those actions trigger. You can think of the chart as a map where the player exists at a node and the arrows exiting the node show where they can go next.

Key:

  • Black ovals: start and end of chapter

  • Yellow block: trigger a conversation

  • Diamond (grey or blue): an action the player can take

  • Turquoise block: a psychic aspect is added to the board

  • Triangles (lock and key): an “if” statement that directs the conversation logic based on whether or not you have the specified key

  • Red block: remove an action or aspect from the board

Plot map for chapter 4 (the most complicated chapter).

Writing the Script

After I mapped out the chapter, I had to write all the dialogue. This was the most time consuming part of the project.

In a text document, I made a header for each yellow dialogue box in the chapter map and titled it to match. I then wrote the dialogue for that conversation.

Making a Dialogue System

When coding up my dialogue system, I divided it into a few different parts. A chapter object handled all the logic of the plot map discussed above. The chapter also held conversations, which were a list of dialogue lines that would be sent to the Dialogue manager to be displayed. Once a conversation had finished all its lines of dialogue, control of the game would be returned to the chapter object and the player would be free to do more actions.

What Could Be Improved

There are two major problems with my current dialogue system that I could improve in the future. Both of these were shortcuts I made, thinking that because the game was a small personal project, I didn’t need to engineer a proper solution. In retrospect I was mistaken.

The first problem is how I entered my script into the Unity project. Instead of pulling the script from a .txt or .json file, I copy and pasted every line of dialogue into the inspector as a string. This was a lazy move on my part to save time; in the long run, doing it the proper way probably would have been faster.

The second problem has to do with the chapter logic. I created the plot maps in a graph program, but needed a way to get all the logic into the game. Because I was the only person working on this project, I settled on making a custom script for each chapter that managed all the logic. If I was working on a team with designers and writers, this would not be an acceptable solution.

To improve this, I would create a custom editor window where you could visually create the chapter map graphs right inside Unity—something similar to Unity shader graph or visual scripting.