How Hush Hush Works

There’s no denying that Hush Hush is a large game, with hundreds of thousands of words of dialogue and thousands of different user choices (leading to a bizarre conclusion that it’s very unlikely for any two people to play the game the exact same way).  To manage this we made heavy use of Google sheets for data entry and automation to verify the game could be played.  This blog post gives a quick tour of what the data in Google sheets looks like, and how Hush Hush turns all of that data into a game you can play!

It all starts with the action list, which is a big list of every event and phone message that you can get at each time slot.  For example, on the morning of July 2 here are the different events and phone messages that may be available to the player:

The game then needs to work out which of these to show to the player, which is what the ‘Trigger’ and ‘State’ columns are for.  Every line of dialogue and action has the possibility of setting a trigger to a particular state.  For example, when you first meet Iro the Iro_HasMet trigger is set to true.  These triggers are what instruct the game to follow certain branching paths or to make certain events available on the map.

For example, if Elle_HasMet is set to false on the morning of July 2 then that means that Elle Intro will be available (it is only available when Elle_HasMet is false), and Bonnibel Greeting random will be unavailable (it if only available when Elle_HastMet is true).  These same types of checks happen for every event, mini event, phone message, etc in a time slot, and allow the map to be populated with the various things the player can do.

When the player clicks on a location on the map the game now has to figure out which asset to load.  The asset name is stored in the ‘Asset’ column.  This name references a full sheet tab.  For example, ‘Elle Intro’ is found in the chapter 1 sheet under the ‘Elle Intro’ tab.

Each of these tabs has all of the information necessary to play the date, including any dialogue, branching, requirements, stat/money/etc updates, and so on.  The game starts at the very top of the file and reads from the top down, kind of like a movie script or book.  Each asset is broken up into different structures, and those structures allow for different behaviour in-game.  For example, the ‘Simple’ structure is just a few lines of dialogue followed by either a link to a new structure, or a list of questions that the user can use to branch to a new structure.  There are also more complicated structures, such as structures that loop until you pick a branching path that points to a new structure, etc.  Here’s an example ‘Simple’ structure from Elle’s Intro:

In this example, the Narrator will begin with the dialogue “(The girl shyly twirls her hair and smiles at you, before blushing and turning her eyes away.)”.  Then the player will be presented with 3 options:

  1. Hey, I’m sort of new to town. Actually I’m visiting for the summer.
  2. Hi. I’m super good at guessing names. Let me guess yours. Is it… Pinecone? 
  3. Hey girl. Your name must be Aerial, because I think we mermaid for each other.

Each of these options has a follow up line of dialogue from Elle, and then they all jump to a structure called ‘Elle_Intro_3’.

You may notice several columns that are empty in this sample structure.  Those columns allow the writer to lock certain paths behind stat/money/trigger checks, or allow the writer to modify stats/money/triggers depending on the path the player picked.

Once all of these assets have been written we need to validate them.  The Hush Hush project includes several tools that automatically process the game data and check for dozens of different types of errors.  For example, we check for triggers that don’t exist, triggers that don’t get changed, triggers that are only changed but never used, dialogue ids that are never used, incorrect or missing next ids, lines of narration that have a character name associated to them, and much more.  These checks happen every time new data is loaded into the game, so we can get a pretty good idea if the game will work before even playing it.

At the end of the day, all of that text in a spreadsheet somewhere turns into this:

I hope you enjoyed taking a look at how Hush Hush works behind the scenes!

– Sad Panda Programmer

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s