Jon Ingold – Sparkling Dialogue: A Masterclass

Game conversations are all too often static and stagey: there’s none of the messy, fun and characterful back and forth that makes a conversation sparkle. Using Ink and assisted by Sally Beaumont, Jon Ingold (Heaven’s Vault, 80 Days) will create conversations that are dynamic, contextual and full of moments of connection.

A playable version of Jon’s Blade Runner scene is available here:
https://assets.inklestudios.com/file/…

And the source code is here:
https://assets.inklestudios.com/file/…

AdventureX is the only convention dedicated to narrative-driven games.

Design Constraints in Narrative Exploration Games

Nels Anderson is a game designer with Campo Santo. Nels talks about some of the hurdles they had to over come in creating Firewatch. Firewatch is the story follows a Shoshone National Forest Fire look out named Henry in 1989, following the Yellowstone fires of 1988. A month after his first day at work, strange things begin happening to both him and his supervisor Delilah, which connects to a conspired mystery that happened years ago

Konsoll 2018

Konsoll is a conference founded by The Game Developers Guild in Norway. Konsoll was first organized in 2012, and has a steadily growing audience of game developers from both Norway and abroad.

00:00:00 Brie Code – Friends Forever: tend and befriend in mechanics
00:43:00 Jake Clark – Cuphead: Creating Djimmi the Great
02:40:00 Gwen Frey – 3 Steps for Founding a Successful Indie Studio
03:46:00 Charlene Putney – Delightful Dilemmas: Writing for Choice-Based Narratives
05:14:00 Johnnemann Nordhagen – Decision Points: The Process of Creating an Experimental Commercial Indie Game
06:21:00 Felicia Prehn And Barrie Ellis – Accessibility Panel

Konsoll 2017: Molly Maloney – Out on a Limb: Practical Approaches to Branching Story

Join Telltale Games Narrative Designer Molly Maloney for an overview on crafting compelling choice-based stories. Molly will share her experiences building games around dialogue choices and branching narrative, as well as practical tips and tricks she’s learned while working on titles such as The Walking Dead Season 3, Tales from the Borderlands, Minecraft: Story Mode, and Guardians of the Galaxy: The Telltale Series.

Writing with Ink – Lists with an Oxford Comma

The guys at Inkle Studios have shared their method for printing a list using a recursion function on their Patreon page, but I found an easier method to insert an Oxford Comma when printing a list.

{LIST_COUNT(IsPresent):
   - 0: No one is here. 
   - 1: Only {IsPresent} is here. 
   - 2: {LIST_MIN(IsPresent)} and {LIST_MAX(IsPresent)} are here. 
   - else: {IsPresent-LIST_MAX(IsPresent)}, and {LIST_MAX(IsPresent)} are here. 
}

In this example I’m grabbing the LIST_COUNT of IsPresent, and printing the contents  according to how many items there are.

With 3 or more in the list I subtract the LIST_MAX (the last item in the list) from the full list before printing, then insert a comma before printing the LIST_MAX.

Writing with Ink – Runtime Loop

I’ve written an old knock-knock joke into an Ink script to show a basic runtime loop. The logic here is simple: tell a joke three times, but the third time with a different ending.

I define the loop start with an index: joke.

The loop gate has two settings: closed diverts the runtime to the start of the loop, open (or unlocked) allows the runtime to proceed. My start state is closed. On the third try it will open.

CONST punchline = 3 

- (joke) Knock knock! 
+ Who is there? 
- {joke<punchline: 
   Banana. 
   + Banana Who? 
      -> joke 
   - else: 
   Orange. 
   * Orange Who? 
      Orange you glad I didn't say banana? 
}

My conditional test doesn’t use variables, although the loop gate looks as if joke and punchline are variables. Ink is counting how many times the index joke has been seen and comparing it against a constant value called punchline. When joke is less than punchline the loop is closed.

joke<punchline

Things to know:

  • A constant looks like a variable in Ink script, but it isn’t dynamic. At runtime it is replaced with the value it represents. Constants are for scripting convenience.
  • The index cannot be addressed from outside this knot, but leaving and coming back to the knot will preserve the seen count.