Exploring Stories

Twine

HTML-based. Text-oriented. Large user-base. Long history. Good documentation.

Simplest Example

The Field
You are standing in a field. You see a house in front of you.
[[Open the door to house->Door Locked]]

Door Locked
The door is locked.

Key Example

The Field
You are standing in a field. You see a house in front of you.
{(if:$key is true)
[ [[Open door to house->Door Open]] ]
(else:)
[ [[Open door to house ->Door Locked]] ]}
[[Look down -> Look Down]]

Door Locked
The door is locked.

Door Open
The key works! You go inside.

Look Down
(if:$key is true)[There is nothing there.](else:)[You find a key!(set: $key to true)
[[Take it!->The Field]]]

Basic Syntax Cheatsheet

[[Go home.]]                        Links
[[Go home->Home]]                   Hypertext->PassageTitle
()                                  Commands (all code in parentheses)
(set: $key to true)                 Set a variable
(if: $key)[Yup, you have a key.]    If statement (execute stuff in [])
(if: $key)[                         If/else statement
  Have key.
](else)[
  No key.
]   
{}                                  Collapse spaces and returns

Choicescript

HTML-based. Text-oriented. Small user-base. Variables/stats/visualization are baked in. Good for looping text-based stats-oriented games.

Simplest Example

*title Simplest
*author Jonahb.warren
*comment your code goes here

You are standing in a field. You see a house in front of you. 
*choice
     #Open door to house.
         The door is locked.
         *finish
*finish 

Key Example

*title Key
*author Jonahb.warren
*comment your code goes here

*create key 0
*create strength 0
*label start
You are standing in a field. There is a house in front of you.
*choice
    #Open door to house.
        *if key = 0
            The door is locked.
            *page_break
            *goto start
        *else
            You go into the house.
            *page_break
            *goto house
        *page_break
        *goto start
    #Look down
        *if key = 0
            You see something shiny.
            *choice
                #Pick it up
                    You pick up a key.
                    *set key 1
                    *page_break
                    *goto start
                #Leave it there
                    *goto start
         *else
             There is nothing there.
             *page_break
             *goto start
    #Do a push up
        *set strength +10
        Your strength score is: ${strength}
        *page_break
        *goto start
*finish

*label house
The key works! You go inside.

Stats Example

*title Gym
*author Jonahb.warren
*comment your code goes here

*create arm_strength 0
*create leg_strength 0
*label start
You are at the gym.
*choice
    #Do a push up 
        Oof.
        *set arm_strength %+10
        *page_break
        *goto start
    #Do a squat
        Oof.
        *set leg_strength %+10
        *page_break
        *goto start
*finish

*stat_chart
    percent arm_strength
    percent leg_strength

Basic Syntax Cheatsheet

*choice                         Denote a series of choices is to follow
#Something to chooose.          An individual option to choose
*finish                         The end of a series of choices  
*label start                    A place in the script to jump to
*goto start                     Jump to a label
*create leadership 20           Defining a stat that must be at top of startup
*set leadership +10             Adding 10
*set leadership %+10            Adding 10% of what's left of 100
*page_break                     Start a new page
*if key = 0                     Everything indented after an if gets executed

YarnSpinner

Unity plugin. Provides a Twine-like writing format for writers and Unity integration for developers. Used to create the popular indie games A Short Hike and Night in the Woods.