This is Part 2 of a series of articles on Strand Games' IF authoring technology called Strand
. Strand
is a domain specific IF language and runtime.
Last time, we saw how Terms and Flow can generate random stories. Now we'll see how the same mechanism builds choices.
Strand Games Technology
Remasters & Sequels
Choices
The difference between a player choice and a generator is whether the choice is made by the player or by the machine.
When you want to make a player choice, you use the exact same syntax but mark the term as a choice using the indicator ?
.
Here's a new story to illustrate:
STORY
Once upon a time there were three bears.
What's your name? NAME
Ok NAME, here's the deal, the three bears have just gone out for a walk.
ROBTHEM That's the end of the game.
NAME?!
* Goldilocks
* Mousilocks
* Dreadlocks
ROBTHEM?
Do you want to rob their place?
* yes
BREAKIN
* no
Well then!
BREAKIN
You horrible person! Well ok then since that's the plot.
You break into their house like a pro.
Whoa! Lookee here; on the table are three bowls of porridge. LIKEPORRIDGE
VANDAL
You
* set the place on fire and leave.
* smash the place up. That will show 'em.
* throw the porridge all over the walls, about all it's good for really.
LIKEPORRIDGE?
Do you like porridge?
* Hell yes!
Right on! WHICHBOWL
* A bit
WHICHBOWL
* No, it's awful!
Oh well, not much else here then. VANDAL Bears suck anyway!
WHICHBOWL
There are three bowls; a large one, a medium one and a small one. BOWL
BOWL?
Which do you want to try NAME?
* the biggest of course!
Eww! It's cold and lumpy! BOWL
* the medium sized one
Eww! It's way too sweet! BOWL
* the smallest one
This one's not too bad. A bit small though, so you eat the lot!
Suddenly the door slams open and three angry bears are glaring right at you! WHATNOW
WHATNOW?
What now?
* Run like hell!
Nice try, but they swiftly block your exit. MAULED
* Climb a tree.
Be serious, there are no trees in here! WHATNOW
* Put your hands up and plead innocent.
Sorry, the cute routine doesn't work with bears! MAULED
* Say; NAME went that-a-way, and point out the window!
It worked! The bears all rush out to find the culprit.
Quickly, you exit the shack and run away as fast as you can. That was close! MORAL
* Fight!
You rush them, kicking and screaming like a banshee, perhaps they'll run off? MAULED
YOUDIE
They
* leave you to die slowly and painfully,
* watch you die slowly, your blood squirting out in slow motion,
* laugh as you die screaming in agony,
while they eat their porridge!
VICIOUSLY
* viciously
* ferociously
* mercilessly
* easily
MAULED
The bears grab you and VICIOUSLY tear all your arms and legs off! Bears are _that_ strong you know. YOUDIE MORAL
MORAL
Perhaps you won't mess with bears next time!
Before we cover how this works, you might want to play it.
How does it work?
Let's see how this plays and explain the details:
Once upon a time there were three bears.
What's your name?
(1) Goldilocks
(2) Mousilocks
(3) Dreadlocks 2Ok Mousilocks, here's the deal, the three bears have just gone out for a walk. Do you want to rob their place?
(1) yes
(2) no
2Well then! That's the end of the game.
The flow taken by this short playthrough is illustrated here;
Here's another, slightly longer play;
Once upon a time there were three bears.
What's your name?
(1) Goldilocks
(2) Mousilocks
(3) Dreadlocks
1Ok Goldilocks, here's the deal, the three bears have just gone out for a walk. Do you want to rob their place?
(1) yes
(2) no
1You horrible person! Well ok then since that's the plot. You break into their house like a pro.
Whoa! Lookee here; on the table are three bowls of porridge. Do you like porridge?
(1) Hell yes!
(2) A bit
(3) No, it's awful!
3Oh well, not much else here then. You throw the porridge all over the walls, about all it's good for really. Bears suck anyway! That's the end of the game.
Here's the flow this time;
You can see from these flow diagrams that flow enters terms and continues to flow into subterms until there is nowhere for it to go, at which point, it returns to the original flow and continues. When the flow finally stops, the game is over.
Finally, here is a longer play;
Once upon a time there were three bears.
What's your name?
(1) Goldilocks
(2) Mousilocks
(3) Dreadlocks
1Ok Goldilocks, here's the deal, the three bears have just gone out for a walk. Do you want to rob their place?
(1) yes
(2) no
1You horrible person! Well ok then since that's the plot. You break into their house like a pro.
Whoa! Lookee here; on the table are three bowls of porridge. Do you like porridge?
(1) Hell yes!
(2) A bit
(3) No, it's awful!
1Right on! There are three bowls; a large one, a medium one and a small one. Which do you want to try Goldilocks?
(1) the biggest of course!
(2) the medium sized one
(3) the smallest one
1Eww! It's cold and lumpy!
Which do you want to try Goldilocks?
(1) the medium sized one
(2) the smallest one
2This one's not too bad. A bit small though, so you eat the lot! Suddenly the door slams open and three angry bears are glaring right at you! What now?
(1) Run like hell!
(2) Climb a tree.
(3) Put your hands up and plead innocent.
(4) Say; Goldilocks went that-a-way, and point out the window!
(5) Fight!
2Be serious, there are no trees in here!
What now?
(1) Run like hell!
(2) Put your hands up and plead innocent.
(3) Say; Goldilocks went that-a-way, and point out the window!
(4) Fight!
1Nice try, but they swiftly block your exit. The bears grab you and viciously tear all your arms and legs off! Bears are that strong you know. They leave you to die slowly and painfully, while they eat their porridge! Perhaps you won't mess with bears next time! That's the end of the game.
It should now be clear how the flow works in this playthrough, but let's look at choice terms in a detail;
LIKEPORRIDGE?
Do you like porridge?
* Hell yes!
Right on! WHICHBOWL
* A bit
WHICHBOWL
* No, it's awful!
Oh well, not much else here then. VANDAL Bears suck anyway!
LIKEPORRIDGE
is a choice term as indicated by ?
. It has an (optional) initial text flow Do you like porridge?
, then it has three selectors each introduced by *
at the start of a line.
You'll notice each selector has two parts:
- The choice flow on the same line as
*
. - The action flow on the subsequent lines.
eg
* Hell yes! // choice flow
Right on! WHICHBOWL // action flow
If the choice is selected, the action flow is taken. Terms can also occur in the choice flow as NAME
in the following;
BOWL?
Which do you want to try NAME?
* the biggest of course!
Eww! It's cold and lumpy! BOWL
* the medium sized one
Eww! It's way too sweet! BOWL
* the smallest one
This one's not too bad. A bit small though, so you eat the lot!
Suddenly the door slams open and three angry bears are glaring right at you! WHATNOW
You'll also notice some of the actions in the BOWL
term reference BOWL
itself. This causes a loop back to the BOWL
term.
By default, choice terms remember which choices have previously been used and these do not appear again. For example the option Climb a tree
did not appear again when the options were presented again. The same happened as the different porridge bowls were chosen.
Selectors can also have indicators to tweak behaviour. eg. Indicating *+ Climb a tree.
allows the option to be used more than once.
That's it for Part 2. Next time we'll show how selectors can depend on previous choices.