Book Image

Dynamic Story Scripting with the ink Scripting Language

By : Daniel Cox
Book Image

Dynamic Story Scripting with the ink Scripting Language

By: Daniel Cox

Overview of this book

ink is a narrative scripting language designed for use with game engines such as Unity through a plugin that provides an application programming interface (API) to help you to move between the branches of a story and access the values within it. Hands-On Dynamic Story Scripting with the ink Scripting Language begins by showing you how ink understands stories and how to write some simple branching projects. You'll then move on to advanced usage with looping structures, discovering how to use variables to set up dynamic events in a story and defining simple rules to create complex narratives for use with larger Unity projects. As you advance, you'll learn how the Unity plugin allows access to a running story through its API and explore the ways in which this can be used to move data in and out of an ink story to adapt to different interactions and forms of user input. You'll also work with three specific use cases of ink with Unity by writing a dialogue system and creating quest structures and other branching narrative patterns. Finally, this will help you to find out how ink can be used to generate procedural storytelling patterns for Unity projects using different forms of data input. By the end of this book, you will be able to move from a simple story to an intricate Unity project using ink to power complex narrative structures.
Table of Contents (18 chapters)
1
Section 1: ink Language Basics
7
Section 2: ink Unity API
12
Section 3: Narrative Scripting with ink

Disappearing and sticky choices

The default behavior of a weave is to direct the flow of a story along with one of the branches presented by its choices. When the reader makes a choice, the others disappear, and the branch chosen becomes the current flow of the story. Even when rewinding when using Inky to test a story, there appears to only be one valid branch of a weave at any one time.

Anticipating situations where the reader might revisit a part of a story with choices the reader might not have seen before, ink uses the concept of sticky choices to present the same choices again to the reader. Using sticky choices, each remains open during a revisit and can be used again in the future:

You look at the boulder in front of you.
+ Push the boulder.

Sticky choices are created using the plus sign (+). They can be thought of as the opposite of a gathering point. Instead of collapsing a weave, a sticky choice keeps open the option within a weave of using a different branch. Any sticky choice created as part of a weave is always sticky, even if it is the only one within the weave:

You look at the boulder in front of you.
+ Push the boulder.
* Ignore it for now.

In the previous code, there are two choices:

  • The first is a sticky choice.
  • The second would be removed upon a second visit to the code.

In the example, boulder could be ignored once, but the next time the reader visited the part again, they would only see one option: Push the boulder.

In examples where the story only flows down from top to bottom, sticky choices seem of little use. Upon making any choice, the story would flow along a branch and to the next lower part in the story regardless of the choice type:

The blank page stared back at me, taunting me. I glanced again at the clock and then back at the page. I needed to write something.
+ I tried again to write something.
    I wrote a few words and paused.
+ I checked my email again.
    No new messages.

In the preceding example, there is a single weave with two sticky choices. When moving through the story from top to bottom, the weave would be visited once and either choice would branch out and then back together again at the end.

The same example could be made with the other choice type.

The blank page stared back at me, taunting me. I glanced again at the clock and then back at the page. I needed to write something.
* I tried again to write something.
    I wrote a few words and paused.
* I checked my email again.
    No new messages.

Where the two code examples are different is in their intention. In the first, the reader could, potentially, revisit the same part of the story and see the choices again. In the second, the choices are one-way. By making a choice within the weave, they cannot be revisited in a story. Once made, a basic choice is permanent. The only way to change this intention is to use sticky choices that add themselves back to the weave when used.

In the next chapter, Chapter 2, Knots, Diverts, and Looping Patterns, we move into examining loops and controlling the flow of a story across more complex structures. Loops will allow us to revisit the same section of a story multiple times. In these cases, sticky choices will become the default usage for creating options for the player. Because sticky choices remain open, they allow an author to create a weave where a player can select the same option multiple times.