What is Storylet to you?

When I say Storylet, I meant generically, as in Emily Short definition. But I mention Harlowe specifically because that’s the reference I was using.

It seems to me that content and prerequisite is simply conditional?

If true do this
Where this can be content and/or code.

Harlowe also mention something like randomly choosing from a list, so something like Switch-Case?

On A do C1,C2,C3

There’s also exclusivity. Looks to me something like a priority based? Which is a simple number to me. A scalar really?

Also current storylet variable which contain currently processed storylet.

Finally, there are lists.

  1. Has visited. history
  2. Available. open storylet

One more thing: I can use a name. My system is based on NNTP, but I think “Transfer Protocol” is a misnomer. More like “Packet System”.

Currently, the candidate name is Harry’s IF Storylet System or HISS. But I’d prefer a friendlier name. :sweat_smile: Any suggestions?

Micro IF Packet System? Micro IF Storylet System?
CHoice If Packet System? Puny If Packet System?

Or I’ll just ignore all those and name it something completely different. Cats Are Meow Meow! System. :rofl:

1 Like

In my brain, passages and storylets are a bit of a similar thing: they’re the “pages” that make up a choice narrative. However you might think of passages as story elements you move through to the next one and storylets as story elements that might structurally fit together in more random ways.

In a regular choice narrative, the player follows the flowchart maze the author has charted. In a QBN at some point there’s an element of shaking storylets in a bag and drawing a random story beat. “Random” in the sense that storylets are shaped so that you won’t see the “unlocking the locked door” storylet until sometime after you’ve seen the “finding the key” storylet. (Or you’ve ground a “searching for the key” quality high enough…)

This means storylets can be tricky: they must simultaneously be self-contained, and make implications for the reader to infer connections to the over-arching narrative, even if experienced in any order.


When I say “storylet” I mean unit of story that has some conditions for entry, but is otherwise distinct from the overall flow of the game, meaning that a given storylet might appear in multiple possible places, or multiple possible times, or not at all.

Passages, however, are merely units of text, which may or may not constitute an entire storylet, a part of a storylet, or just part of the mechanics of the game. A passage doesn’t have a concrete meaning storywise — one might equate a passage to a scene, one to a location, one to a choice (or the text leading up to a choice).

I’d expect a storylet in Twine to be built from passages, but not to be a passage. Two different storylets with different trigger conditions might point at the same passage, for example.

I don’t think that the “draw from a deck” metaphor is the only way to use storylets. A game could use a strict sequence of storylets as a mechanism without any randomness, provided that some other content appears between entries in that sequence (otherwise it’s just a linear story). However most people wanting to use storylets do expect to be drawing one or more possible storylets/events from a pool of available ones at any given time, so I think being able to do that (which means being able to track open/closed/used storylets) is also a core feature of any such system.

@ramstrong, you talk about a name for “your system”, which seems to imply you are writing your own storylet system? Or is this about the Harlowe storylet system specifically?


Oooh, that’s a great point! Thank you for pointing it out.

Yes, Cats Are Meow Meow! system is a brand new system to be built from scratch. The idea comes from the desire to do IF quickly, less than 4 hours, with a simple text editor.

Edit: system explanations deleted as irrelevant/distraction to the subject.

1 Like

Break off another thread :smiley: As someone who has written a storylet-system I am always interested in people’s approaches, and I know the other people here who have also made such systems are also interested


Very interested! :yum:

Only, I’m not exactly comfortable discussing Storylets per se, because Emily has written on them at length and she understands her own concept better than anyone else.

But just to add a bit of framing. Many games have Story Chains, or multipart missions. ie:

  • You need 12 coins to pay for the train to the City. You only have 3 coins.
  • The station conductor will sell you his metal detector for 3 coins.
  • You buy the metal detector and suddenly the story alerts you when you are near a patch of dirt.
  • The outcrops of dirt lead down to the hidden cove.
  • You discover the old hermit in his hut.
  • He tells you of his daughter who went off to the City. He’s desparate for news of her.

And so now you have a task waiting for you in the City. Which you wouldn’t have if you’d stolen the wallet from the drunken Merchant.

I got the sense from Emily’s articles that Storylets were an innovation beyond simple missions. That they contributed to player reputation, were acknowledged by NPCs and became part of lore.

So in order to steal the wallet from the Merchant, you wait until he goes to the pub for the evening, and you remove the orange traffic cone from the pothole in the pavement near his house. Then you watch him trip over, and pick up the fallen wallet.

Where to put the cone? One option is on the statue in the park. If you do that, the game makes traffic cones a thing. You see them on the other statues in the City. It turns out you’ve started a craze. You see NPCs stealing cones and more missions become available for you to recover them.

To me these two are different in nature. The first is a chain of tasks, facilitated by narrative. The second is an adaptation of the game play, allowing the player to choose the vibe.


That sounds like one of those “match 3” style games where you have to win the puzzle to get the next cutscene - or get the “good version” of subsequent cutscenes.

A good example of storylet writing is Emily Short’s BEE. The game is structured on a yearly calendar and the player gets one “turn” per month to choose from 2-3 scenes/storylets offered for that month. You might not be offered every one since you go through the years multiple times. Each choice provides a self-contained tiny short story that can stand alone, and subsequent choices offered each month may change and be affected by the ones made earlier. The player usually isn’t making any internal choices within those scenes. I believe the storylets don’t vary since the player has to qualify for all the effects required in that story beat.

The player’s choices tend to be more about your objective: Do you study hard that month, do you take a break, do you build a relationship? Then the storylet you get is a cutscene with an outcome that might change another quality to allow other storylet options to be presented later. If you stop socializing in fall and bury yourself in spelling lessons, your friends may not come around in December asking you to build a snowman so you won’t be offered that storylet at all. If you choose to help your family make Halloween decorations one year, the next year might offer a different Halloween/October scene rather than the “character learns to make decorations” initial one.

(Those are examples I made up based on what I remember, not necessary actual events in BEE.)

Yeah, I think you have a good handle on that.

Hmm. I just went back and I guess it’s not explicitly stated in the four articles from the turn of 2019 into 2020, but IIRC from Twitter at the time, the motivation for that article series was that lots of people had been doing this kind of design for years, but each in their own little bubble, so she was trying to propose and publicize terminology for anything that fits this large umbrella, to show people that they have common ground and get them talking to each other.

So “storylets” isn’t supposed to be a prescriptive term, dividing people into in-groups and out-groups, it’s supposed to be a rallying point. The author of SugarCube described storylets with characteristic tact as “simply an event system with fruity nomenclature” (which is a perfectly reasonable way to look at it) but the fruity nomenclature is the point.

What are different ways to write tooling for stories made of events that know when they’re supposed to happen and how they affect the world? What are common design challenges and solutions across different varieties of these stories and systems?

This is probably the same as what David was getting at, but I think you can approach storylet design from two directions.

One being the “card deck” metaphor, where you take the whole set of all events, or cards, or storylets, or whatever you’re calling them, filter out all the ones whose conditions aren’t currently met, and then present (some subset of) the currently possible events to the user. There are lots of ways to do this, and I suspect any tool should either take an opinionated stance “this tool randomly selects one event and plays it” or try to be fairly open, maybe to the extent of allowing custom code. That gets hairy fast and different stories might want different things. You might want to sort by some sort of relevance and offer the user the top three. You might want to choose several completely at random. You might want priority so you can lock the player into an urgent chain of events (you’re being chased by a dragon, you can’t just ignore it and go play a game of tennis). This is probably the more flexible in the long run but also more intimidating to get started with?

The other approach is that you can start from a branching and add “guards” (conditions) on choices so they only appear at the appropriate time. Ink does the lower end of this design space really well. To extend that kind of design farther you might be looking at ways to group choices separately from the dialogue so you can pull in sets of choices that might be relevant to a particular situation. Dendry is a good example of this: you make simple lists of choices as with Ink (it uses the hyphen as a bullet point) and then you can name choices directly or pull them in by tag so you might say - #greetings and it’d offer all the greeting choices that fit the current situation.

And finally… since the tag category pages on Emily’s blog seem not to be working properly right now, here’s a quick list of related articles over there:

Bruno Dias’s May 2017 article Attempted: Building a general-purpose QBN system might also be useful to anyone trying to design a system. I disagree with his conclusions, or at least I think his conclusions reflect that he didn’t have the technical expertise to implement good answers to these questions rather than indicating that good answers don’t exist. But it’s a nice breakdown of some of the questions to ask.

Then the cluster a couple years later:


That’s almost exactly what I did in A Mouse Speaks to Death, except that it only offers 8 such picks in total each time through (after which you can restart it with a different set of memories).

I did have internal choices within Storylets though, which become conditions for future ones.

But that’s still “draw from a deck” and the player is still choosing. I meant more like, each time you talk to NPC X you get a different piece of dialogue, but those pieces come in a strict sequence of conversational segments. That chain of conversations could be a pool of storylets where only one is ever valid at a time, and that’s the one you get next. Same underlying code, different presentation.


I’ve been thinking about this, and you know what this reminds me of?

CYOA Board games! AFAIK, they only made 2, though. Apparently, they’re not too popular. However, I think the concept is solid.

1 Like