A interactive narrative game on

This was my entry for the challenge: Build the Ultimate Game for Amazon Alexa. I decided to do this project not only to get my hands on developing for IoT devices, but also to try designing for this completely new game genre.

For inspirations, I researched and played the top-rated games on Alexa. I came across the interactive adventure game The Magic Door and 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 was eager 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 making selections that would affect the ending of the story. It was an adaptation from a text-based adventure game created by Emily Nguyen, one of my classmates from Game Design class at Georgia Tech: Original iOS game Demo

The story is about Jesse (voiced by Alexa), who is facing some serious problems in a submarine, hundreds of thousands of feet below the surface of the Philippine Sea. Her companion Dr. Lee was unconscious due to a mysterious infection. The player’s job is to use the radio (i.e. Alexa device) to communicate with Jesse, 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 Story Engine
  • Built with AWS Lambda, used DynamoDB to save player's progress
View source code on GitHub

Design Process

Adapting from a text adventure game

Analyze 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”.

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.

Create the custom intents according to the intent sheet, group similar intents into classes. For example, “AskHappen” and “AskExplain” are included in “AskSituation” intent.

Divide the story into 5 acts, define the logic of how the story proceed differently in each act.

Program the game in Alexa, write a specialized game engine that handles Alexa intent and dialogue selection.

The story

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

Jesse (NPC) responds differently to the player in each act:
    • 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 choices made by the player (such as removing or keeping the pressurized suit).
    • Part 3: identify the item suggested by the player, such as aseptic wipes or bottle for bad plants. The combination of used items will determine the ending of the game (Dr. Lee died or woke up).
    • Epilogue: proceed to the next dialogue without parsing the intent.

Intent Sheet

Click to view pdf: All_Intents_Graph.pdf

Intents Explanation

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: re-prompt 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.

Intent Analysis (first draft)