A interactive narrative game on

For inspirations, I searched and played the top-rated games on Alexa, and came accross the interactive adventure game The Magic Door. I was impressed by the voice interaction within the game, but at the same time, I felt restricted by the limited options and the robotic responses. Thus, I decided to build an interactive game without such restrictions.

The solution is Below, an interactive narrative game played by talking to Jesse through the radio, asking questions and giving suggestions along the way to change the story. It was an adaptation from a text-based adventure game created by Emily Nguyen, one of my classmates from Game Design class in Georgia Tech:Original iOS game .

The story is about Jesse, who is facing some serious problems in a submarine, hundreds of thousands of feet below the surface of the sea. Her companion Dr. Lee was unconscious due to a mysterious plant. The player’s job is to use the radio to communicate with Jesse (by talking to Alexa), give her instructions on how to save Dr. Lee, and discover the secrets of their research along the way.

  • Built for Amazon Alexa
  • Original Story by Emily Nguyen
  • Original Interactive Storyline Logic
  • Built on AWS Lambda
  • Used DynamoDB to save player's progress
View source code on GitHub

Design Process

The story

The game is consist of 5 parts:
  1. Prologue: setting up the stage for the conversation using a radio
  2. Part 1: player ask various questions to understand the situation of the NPC
  3. Part 2: player instruct the NPC to help Dr. Lee
  4. Part 3: player instruct the NPC to use different medical supplies on Dr. Lee, which will determine the ending of the game
  5. Epilogue: the game have two endings: Dr. Lee wakes up or dies.

Adapting from a text adventure game

The adaptation consist of the following process:
  1. Analyse the entire scripts, identify the possible intents that could be used to advance the dialogs, such as “HelloIntent”, “WhereIntent”, as well as Amazon built-in intent such as “NextIntent”.
  2. Rearrange the scripts, identify the dialogues that could be triggered by certain intent. For example, “This is Jesse Harper…” will be triggered by asking “who are you” at any point in the game.
  3. Create the custom intents according to the intent sheet, aggregate similar intents into one. For example, “AskHappen” and “AskExplain” are included in “AskSituation” intent.
  4. Divide the story into several parts, write the code to define the logic of each part (for detail of the logics, please refer to lambda.js in the Github repository
    • Prologue: proceed to the next dialogue without parsing the intent
    • Part 1: identify the different questions asked by the player and give answers accordingly
    • Part 2: identify the questions asked by the players; identify the suggestions made by the player such as removing or keeping the pressurized suit. (Note: this part was not implemented due to time constraints, so there is not branches)
    • Part 3: identify the item suggested by the player, such as antiseptic wipes or bottle for bad plants, which later is used to determine the ending of the game (Dr. Lee died or woke up)
    • Epilogue: proceed to the next dialogue without parsing the intent
  5. Replace the dialogues with audio clips

Alexa Intents

Click to view pdf: All_Intents_Graph.pdf

Intents Explaination

6 built-in Intents, 13 custom intents, 3 slots and 14 different slot values was defined in the game:

Amazon built-in intents

  • AMAZON.HelpIntent: prompt the player with hints to advance the conversation.
    • “You can ask questions like 'Try the antiseptic' or 'Use the other bottles'”
  • AMAZON.IgnoreAction: reprompt the player with a question
    • “Should I try the one for bad plant, or the one with plant image?”
  • AMAZON.NextIntent: instruct Jesse to continue the action, or in some cases simply advance the dialogue
    • Sample utterances: “Good idea”, “Go ahead”
  • AMAZON.RepeatIntent: repeat the dialogue, with additional questions in the end
    • “Sorry I wasn't very clear… (repeat dialogue) “
  • AMAZON.StartOverIntent: clear out the player’s progress and restart the game
  • AMAZON.StopIntent: stop Jesse in performing an action

Custom intents

  • AskSituation: if the character slot is empty, respond with current situation; if the character slot is Lee, respond with her situation
    • Slot: Character
  • AskWhat: if the slot value is an item, respond with a description of the item; if the slot value is sense (either look or smell), respond with the description of the smell or the look of the wound
    • Slot: Sense
    • Slot: Item
  • AskWhere: ask Jesse about where they are
  • AskWho: respond with introduction
  • Command_Item: instruct Jesse to use a specific item
    • Slot: Item
  • Command_Move: instruct Jesse to move Dr. Lee a bed, or lay her down
  • Command_Remove: instruct Jesse to remove Dr. Lee’s pressurized suit
  • NoIntent: same as StopIntent, instruct Jesse to stop performing an action
  • YesIntent: agree with Jesse, instruct her to continue a task
  • Special_Breath: asking about Dr. Lee’s breath
  • Special_Help: independent to the built-in HelpIntent, inform Jesse to begin helping Dr. Lee (skip the questions in part 1 of the game)
    • Sample utterances: “How can I help”, “What can I do”
  • Special_Illegal: a special intent that can trigger a specific part of the story--explaining the details of Jesse’s illegal research
    • Sample utterances: “Why is it illegal”, “Are you breaking the law”
  • WaitIntent: instruct Jesse to wait for the medicine to take effect
    • Sample utterances: “Wait for a second”, “Maybe it takes a minute”
Due to time constraints, I was unable to find an actor to do the voice of Jesse. The next step of development is do the recordings for Jesse and add sound effects, and add more branches to part 2 of the game.

Original Intent Analysis
Click to view Intent Analysis