This is Part 1 of a series of articles on Strand Games' IF authoring technology called
Strand is a domain specific IF language and runtime.
With it, you can easily make parser IF, choice IF and anything in between with no programming. Deploy to mobile, desktop or the web with a GUI supporting pictures, animation and sound.
Strand Games Technology
Remasters & Sequels
Strand does not claim to be more capable than other systems, nor does it claim to be better or have more features. Instead,
Strand strives to be quick and easy to use while following simple ideas.
- Write your game in your favourite editor as a text file.
- Use a single "building block" in a variety of ways to make your game.
- Don't let the 10% of complicated features poison the simplicity of the 90%.
Anyone can use
Strand. Write your game in your favourite editor, then run it immediately! And it's open source!
Let's get started!
Terms and Flow are fundamental concepts. Flow is the way in which the event sequence of a story unfolds and terms are the initiators of flow.
Here is a story:
STORY Once there were three bears, they all died! The End.
OK, not a very exciting story (or even very original), but it illustrates a term and some flow.
Anything in capital letters is a term and the rest is flow.
STORY is a term and the text, "Once there were three bears, they all died! The End." is its flow. Let's run this story and see the output;
Once there were three bears, they all died! The End.
Let's add some more terms:
STORY ONCE there were THREE bears, they all died! The End. ONCE Once THREE three
This produces the exact same output as before, except now,
THREE are terms which emit their own flows (in this case just the words "Once" and "three" respectively).
Now, we can give these terms branching flow using selectors. For example:
STORY ONCE there were THREE bears, they all died! The End. ONCE * Once * Once upon a time * A long time ago THREE * two * three * four * five
ONCE has three selectors which give alternative flows.
ONCE will choose one of the three selectors randomly. The same for
Now we get random stories, each time we run!
Once upon a time there were five bears, they all died! The End.
A long time ago there were four bears, they all died! The End.
So, just with these bear-bones (sic), we can already make stuff:
STORY ONCE there were THREE bears, PART1. DIED. THEEND ONCE * Once * Once upon a time * A long time ago THREE * two * three * four * five PART1 * they were forced into lockdown in their HOUSE * they all lived in a HOUSE HOUSE * small cottage * tiny house * woodland shack * garden shed DIED Unfortunately they * contracted VIRUS * were poisoned by POISON and died POISON * tainted porridge * a little blond girl * dodgy mushrooms VIRUS * Covid19 * a nasty flu * tuberculosis * the plague THEEND * The End. * It's all over. * That's the end!
Some sample outputs;
A long time ago there were five bears, they were forced into lockdown in their garden shed. Unfortunately they were poisoned by a little blond girl and died. It's all over.
Once upon a time there were two bears, they all lived in a woodland shack. Unfortunately they were poisoned by tainted porridge and died. It's all over.
Once upon a time there were four bears, they were forced into lockdown in their woodland shack. Unfortunately they contracted tuberculosis and died. That's the end!
A problem with random selectors is that sometimes you need to pick something at random and then stick with it. For example, a person's name.
Here's an example where we want to be random, but maintain consistency;
STORY MARY had a little LAMB its FLEECE was WHITEASSNOW. And everywhere that MARY went, the LAMB was sure to go. MARY! * Mary * Larry * Barry * Harry * Gary * Sally LAMB! * lamb * chicken * puppy * dog * cat FLEECE * fleece * coat * fur * tail WHITEASSNOW * white as snow * red as blood * green as grass * pink as a fairy * blue as sky
In this example, the terms
LAMB have the indicator
! after their definition, but not their usage in the
! indicates the term is sticky.
A sticky term is one whose flow occurs just once and thereafter the flow output remains the same.
Here's some outputs;
Larry had a little puppy its fur was green as grass. And every where that Larry went the puppy was sure to go.
Harry had a little chicken its tail was red as blood. And every where that Harry went the chicken was sure to go.
Unfortunately, it doesn't always rhyme anymore!
There are other indicators you can apply to a term such as ones to control the ordering, the randomness and so on, We'll cover those later.
That's it for Part 1, in Part 2, we'll move on to Choices.