Different styles of QBN/storylet game design

Actually the Oregon Trail model is a pretty easily understandable place to start with QBN: have a distance-to-destination kind of quality that counts down (or distance-traveled that counts up), decide on some resource qualities, and make random events that change the resources until you have a game. Some of them can be tied to specific distances along your journey, some can be tied to things you’ve seen before, some can be completely random.

I imagine the space adventure two programmer friends and I made back in 2019 is probably terrible programmer-writing, but in more skilled hands you could end up with something more like Saltwrack (although IIRC Saltwrack itself is more of a fixed lightly-branching sequence of events whose contents flex based on your earlier decisions).

Obligatory: xkcd: Standards

That’s exactly the opposite of this, though? Not trying to force people to a standard, but to give them a visible optional/additional rallying point to consider what common ground and interesting differences they might share.

2 Likes

Saltwrack would have been perfect for a storylet tool, but it is instead implemented with a vast web of conditionals, and passages with loads of split points

3 Likes

I should have explained what I was talking about, but the similarity I see is actually that these games don’t have a linear or branching structure (unlike, say, side quests in an RPG). The structure is that the player is randomly given a few missions to choose from, which have varying difficulty and reward. When a mission is accepted, the player plays out the described scenario and some change happens to their qualities (in this case, damage to their equipment and payment/loot). Missions are in infinite supply because most missions can be randomly drawn many times. This is a lot like drawing a hand of storylets I think.

1 Like

Yup! Ditto things like Animalia - a lot of people start with a web of conditionals. And honestly, unless a storylet tool has automated testing or analysis or visualizations of some kind, it may not help that much with debugging the chaos. But it’ll certainly reduce errors in copy/pasting if-statements around, and will hopefully help you have a clearer idea of what the possibility space is…

I definitely find it easier to look at a set of conditions, often all in one place, than to go and look through all the choice points for conditions.

One thing I’ve not seen mentioned so far is using storylets as conversation topics. I’ve seen a lot of conversation managers in Inform floating around the forums, and they generally seem to work like a storylet implementation, with a table of possible topics each with conditions for being picked as available.

The game I am currently working on (or should I be honest, and say one of the games…) has storylets as the conversation system, with a pool for each NPC. e.g.

<<set setup.home_porphion = [
	{
    	title: "home_porphion first visit",
        all: [
        	{ type: "pulls", pulls: 0 }
        ]
    },
    {
    	title: "home_porphion odd hole lost",
        all: [
        	{ type: "quest", quest: "porphion_hole", step: "lost" }
        ],
        priority: 1
    },
    {
    	title: "home_porphion odd hole win",
        all: [
        	{ type: "quest", quest: "porphion_hole", step: "fought" }
        ],
        priority: 1
    },
	{
    	title: "home_porphion odd hole reminder",
        all: [
        	{ type: "quest", quest: "porphion_hole" }
        ],
        sticky: true
    },
	{
    	title: "home_porphion met cultist",
        all: [
        	{ type: "var", var: "$events.met_cultists", value: true }
        ]
    },
    {
    	title: "home_porphion default",
        priority: -1,
        sticky: true
    }
]>>
3 Likes

Yes, a storylet can’t be an arbitrary diversion. It has to engage with the main story to some degree. But the success or failure of a storylet passage should never fundamentally undermine the main story thread.

So, the Mob Boss who lent you 50 mil. Or the Crown Governor who has impounded your ship. Perhaps they want to find a piano teacher for their youngest daughter. A storylet recasts evil enemy into concerned father, and if successful, grants a boon. The successful outcome might grant the ability to pass the bodyguards/sentries at a particular time in the afternoon.

This may or may not be a useful affordance to the player, depending on the progress of the main story thread. The storylet must interface with the World API to a degree which is useful, but with attenuated impact in relation to the main story arc.

I don’t think I agree with that. A Fallen London storylet might not do that, because the emphasis is on maximising content reuse, but there’s no reason that a storylet might not entirely lock you out of part of the game space entirely. Similarly there’s no reason that a storylet has to be related to the main story at all, and Fallen London frequently has entirely self-contained storylet sequences that have no larger relevance to the “main plot” at all (such as all of the monthly exceptional friend stories).

Overall, Fallen London’s gameplay is mostly storylets with no connection to the main format at all.

3 Likes

I’ve found this thread to be extremely interesting, thank you everyone who has contributed so far! Before now I had not heard of Storylets/QBN as a concept. I’ve since read through Emily Short’s posts, watched the NarraScope lecture, played a bunch of games, looked at some of the engines, and read the source code to some of Autumn Chen’s games and it’s really helped me appreciate the format!

So far this week I’ve played: Social Democracy, The Archivist and the Revolution, A Mouse Speaks to Death, Winterstrike, Bee, and HEN AP PRAT GETS SMACKED IN THE TWAT.

And additionally I realized other games that I’ve played have Storylets too, like: Suzerain and Pathfinder: Wrath of the Righteous. Even some board games, like Twilight Struggle and Gloomhaven have choice-based Storylets!

I wanted to write up some of the common patterns that I’ve seen, as I would love to get any recommendations for games that are really pushing the boundaries when using this style of game design.

Storylet Acquisition

There are many ways in which one can “acquire” a Storylet. Some of the ones I’ve seen so far (from less to more freedom for the player):

  • Forced display. Some games will show Storylets to the user in an order of the game’s choosing. There may be a “deck” and “shuffling” happening in the background but that is entirely opaque to the user. There are Storylets in Pathfinder: Wrath of the Righteous and Gloomhaven that work in this way (with a single choice in the Storylet), where the player has no control over their display and they just pop into the narrative at pre-determined times.

  • Time-based display. Games like Social Democracy and Suzerain frequently have Storylets that are based upon the time within the game (a particular Year/Month) and will trigger a version of an Storylet at that time. This guarantees a certain level of momentum in the game, especially for games that need certain things to happen in a specific order, or by a specific date, in order to make narrative sense.

  • Dealing from a deck. Some games, like Bee and A Mouse Speaks to Death, will auto-deal Storylets from a deck and give the player a choice of which Storylet to select. Additionally, in both of these games Storylets not selected will be shuffled back in. This makes the selection higher-stakes as there is no guarantee that you’ll get back a Storylet that you skipped. Whereas in Suzerain, all dealt Storylets must be played in order to progress the narrative.

  • Drawing from a deck. It seems like DendryNexus and StoryNexus games encourage the use of this in some way, that seems to be the core of the mechanic (I’m sure this is obvious to most folks, I’m just coming in late here!). The exact composition of the deck of Storylets is opaque. The deck could consist of 1 Storylet or dozens, the user doesn’t know. Storylets could be “shuffled back in”, or not, after use. The user usually has a hand of some sort and may be able to draw less than a full hand before playing a card, or not.

  • Drawing from multiple decks. Some games, like Social Democracy, feature multiple decks which gives the player the option to choose which broad kinds of storylets they want to play (Party vs. Government).

  • Persistent display. Some Storylets are persistently available and can always be accessed (even if their options are enabled/disabled). Social Democracy (via your cabinet) and The Archivist and the Revolution (via the main daily menu) both provide ways of accessing some common Storylets.

  • Via a choice. A Storylet can lead to other Storylets via a choice. These choices can be disabled due to particular quality constraints that are in place. Sometimes this means that the choice is entirely hidden, or disabled with no context, or even disabled with contextual clues (such as in Winterstrike).

I personally liked the Dealing from a deck model in Bee and A Mouse Speaks to Death as it made me really stop and think about my choices and what direction I wanted the narrative to go in, as I knew that it could be all-or-nothing.

Storylet Introspection

I also find it interesting how much you can know about a Storylet before you choose to engage with it. Obviously in the cases of Forced Display or Time-based Display the game offers you no affordances.

However, in many other cases you may get:

  • A Storylet title (in most cases) or a cryptic title (such as in HEN AP PRAT GETS SMACKED IN THE TWAT where the title is based upon a tarot card).

  • A Storylet description. Sometimes short, usually enigmatic if there is one (such as in Bee or Suzerain).

  • A graphic. You see this in Winterstrike and Social Democracy where there is some graphic indicating the broad class of contents of the Storylet.

  • And in some cases, like most *Nexus games seemingly, you can even open up the Storylet, see the text and choices, and opt to close the Storylet out without playing it! I was, frankly, shocked by this - it seems to remove a big part of the chance element and encourages higher-levels of meta-gaming.

All of these can feed into your decision to engage with a story, or not. Personally, I liked the model used by Bee to provide some minor context without “spoiling” the Storylet, still giving the player the element of surprise as to what actually happens in the story.

Storylet Contents

I think this is the part of Storylets that most surprised me. When I read about the concept I immediately realized that a game that I had played previously, Suzerain, was using this model - and as a result I was expecting other games to have large chunks of narrative inside Storylets, but that’s not the case at all! And, in fact, it appears to rather exceptional.

What I’ve seen so far:

  • Extremely heavy text and choices. See this in Suzerain with individual Storylets having many hundreds of words, if not thousands, dozens of choices, and multiple characters.

  • An assortment of text and choices. See this in Bee, The Archivist and the Revolution, A Mouse Speaks to Death, and HEN AP PRAT GETS SMACKED IN THE TWAT. A good middle-ground of providing some narrative and player interaction while not being overwhelming.

  • Minimal text and choices. See this in Winterstrike and Social Democracy. Most Storylets have maybe a sentence at the beginning with one set of choices - and then conclude with a bit more text, maybe a paragraph in the case of Winterstrike.

I have a preference for the middle ground, I like that it continues to get the player engaged, provide some additional choices (not just one set), and doesn’t overwhelm the experience of engaging with the Storylet.

Interesting Mechanics

There was some variety in how you could interact with the Storylets in the various games I played. These are some of the most interesting mechanics I’ve seen so far:

  • In Social Democracy you can draw from multiple decks into one hand. This allows you to get a Storylet, look at its contents, figure out its requirements, and then draw from specific deck(s) to get storylets that will help you meet those requirements. For example, you might get a Storylet that can succeed with X budget spent, but you don’t have that money. So you then draw from your Party deck to try and find a fundraising card to help fulfill that goal.

  • In A Mouse Speaks to Death you have 3 “refreshes” that you can use to re-draw your hand of cards if you don’t have a Storylet that you’re looking for. Similarly, Social Democracy has a cabinet member with a special action where you can discard your hand (it’s time-gated so that you can’t do it too frequently).

  • HEN AP PRAT GETS SMACKED IN THE TWAT pretty much requires a level of meta-gaming (or extreme luck) in order to succeed at the game. There are a number of Storylets that end in a game over (either all of the time or if you haven’t met certain conditions) and thus it encourages replay to ensure that you get the right series of Storylets to progress the game.

  • Suzerain both has choices inside a Storylet that you can use to role-play a particular conversation with a character, but also substantial decisions are broken out into a single meta-decision. You may have 3 Storylets about increasing the budget to various governmental departments and you can say what you want in the Storylets, but once they’re all done you can make the official decision about what actually happens. This creates an interesting tension where you can have characters be like “but I thought we had come to an agreement!” (when you later back out/change your mind).

Aside: Deck-Centric Game Patterns

I really enjoy deck-centric games (Slay the Spire, Dominion, Gloomhaven, Hearthstone, Magic, etc.) so when I was presented with the concept of “Decks” dealing out “Cards” into a “Hand” I was immediately very intrigued! With the games that I’ve seen I think this mechanic is being severely under-utilized (if folks are aware of other interesting deck-centric mechanics in Storylet games please let me know!). Here are some mechanics I would love to see explored:

  • Deck ordering. Seemingly the deck is “shuffled” before every time a new Storylet is “drawn” in most of the engines I’ve seen. The user has no way of manipulating the order of the Storylets in the deck, nor ensuring that new Storylets enter at the front or the back of the deck.

  • Scrying. A common mechanic where you can look at the top X cards in your deck and choose to draw any number of them, with the remainder being discarded (or potentially going onto the bottom of the deck). This could allow for ensuring more-favorable Storylet ordering or support hunting for hard-to-find Storylets.

  • Discard. It seems like the only way to “discard” a Storylet from a deck is to ensure that whatever conditions are set no longer apply to it. There is usually no way for a user to completely remove a Storylet from a deck (although some games have the ability to re-shuffle your hand back into your deck, as mentioned above).

  • Graveyard. In the games that I’ve seen there are two types of Storylets: discarded-once-used and persistent. Persistent Storylets are shuffled back into the deck after use. However, I could see it being really interesting to have a way for used cards to enter a “graveyard” from which they could be “resurrected” later to be re-played, under certain conditions.

  • Card generation and When-Drawn mechanics. Right now this happens incidentally - you play a Storylet, make some choices, that affects some state, and that allows new Storylets to become available for play. However, I think not enough is being done to show a deck getting manipulated. For example, let’s say you played a Storylet and were given a choice where you could gain 6 money now, but then it shuffles 3 cards into the deck that, once drawn, would cause you to lose 2 money. Or even the inverse, with a negative action allowing for positive actions later.

  • A cost for card drawing. It’s understandable that the games I’ve seen haven’t limited a player’s ability to draw cards (as that’s the main meat of the game) but I could see an interesting side effect of allowing users to draw an arbitrarily-sized hand, with the cost of drawing more cards increasing with the more that you take (without playing). For example, I could see it being worth in-game budget in Social Democracy to be able to draw more cards with the hope of getting a rare Storylet.

But yes, thank you again for this thread! It’s gotten my creative juices flowing and I’m really excited to explore other games in this space and maybe even try my hand at making one, some day!

16 Likes

I was nodding to myself when reading your analysis, John, as it is similar to how I’ve seen some of my students make connections between works when learning QBN patterns for the first time. They, like many of us, make the strong connection to the central metaphors of “deck”, “hand” and “cards” they see in most examples. (I literally made those the central concepts and objects in my own library, so I’m not immune from this perspective! it is very useful!)

I think, like David and Josh have pointed to, visualizing QBN patterns and changes to game state affecting availability is hard because of the focus of many authoring tools of using node-based structures as a basis. Many works use “deck” and “hand,” as they are useful metaphors for describing the shifting of availability over time for things like knots, passages, and labels. We can more easily understand “drawing a card” or “discarding” rather than the much more complicated “the story content becomes available when all of its conditions are met.”

As for something different to play, I’d point you to Her Story (2015) as an example of flipping this metaphor. Rather than “having” cards as storylets, players enter keywords and search a database. Like Uncle Roger (1986) before it, traversals are based on players understanding under what “conditions” they can reach narrative content. Examples of these database narratives are, I’d argue, closer to QBN patterns of discrete content than the more traditional branch-and-bottleneck, loop and grow, and other macro patterns. One of the ways to think of qualities (conditions) is as a search query to access the content. In fact, I played around with this approach some for Quis, my own little DSL for story sorting but found it difficult for others to understand. Like others have mentioned in this thread, designing these games can be tricky, and those who do it well play around with giving choices over narrative content adoption and selection based on the conditions, “drawing” and “discarding,” rather than player searching.

4 Likes

Thank you for all this excellent analysis.

I think a lot of the “odd” things about how Storylet Decks are handled, are just inherited from Fallen London. FL has one deck available at a time, but the contents are very mysterious. Card frequencies are listed in the wiki, but don’t really seem to equate in any meaningful way to how likely you actually are to draw them, and the rules that “build” the current deck are completely hidden from the user. You know that there are cards, and you can draw some, and that the deck then runs out and refreshes — but anything beyond that is not explained.

FL does do some of the things you describe as advanced deck manipulation:

  • You can remove cards from the deck by choosing an option on the card, only works for some cards
  • You can retain cards in your hand to try and draw others
  • Some cards have instant effects when clicked, and can’t be discarded from hand
  • Cards have a cost in time for drawing, because new cards are added to the deck at a set real-world time interval
  • You can increase your hand size by progressing the game

But it also mixes the metaphor by having the hand of cards often be entirely subsidiary to storylets presented in a fixed list for your area (but they also have QBN conditions and come and go, so it’s more like one deck you draw from, and another where you can see the whole deck at once). And then they also have lots of areas with their own decks … it’s a giant grab back of systems, and they often don’t work well together.

4 Likes

Very much this. In Twine, Mouse Speaks to Death looks like a giant sea of disconnected groups of nodes, each of which is one storylet.

There’s nothing in Twine to help visualise those and their conditions, other than grouping storylets together, which I did more actively in Zenith

In this screenshot, for example, all the lower row can only appear later than something from the upper group. (The tags tell you more about the conditions than the location in this case).

3 Likes

Another sizable game that extensively uses storylets is Cyberpunk Dreams It uses three decks, and uses all sorts of QBN things to simulate time of day, encumbrance, the influence of drugs/alcohol/madness… It’s a different style from Fallen London, but has some similarities too. It’s a tough, long-term, adult game that I found easier to get into than Fallen London.

1 Like

John Ayliff’s Seedship might be worth a look: does an effective job of storytelling largely through the bare numbers.

If you didn’t follow the link from Emily Short’s posts, you (and others) might like Max Kreminski’s 5-page paper Sketching a Map of the Storylets Design Space

Max links to a couple other things that I don’t think have been mentioned yet, like the Reigns video game series. I believe they were crowdfunding a board-game version at one point but I’ve lost track of what happened to that.


On a separate note, I already said this earlier in the thread and it isn’t exactly QBN since the state is all in the player’s head, but I think it has some similarities for thinking about visualization (scenes that can be encountered in many different orders) and I want to elaborate on it a little more. I took the “references” in Type Help and turned them into Twine links and then arranged the whole thing on two axes: one axis being the in-world timestamps and the other being a “deduction progress” axis that’s sort of how many deductions you have to make to get there? And you could do this semi-automatically (with a custom algorithm: the usual general-purpose graph arrangement algorithms are terrible at this).

I think it’s interesting that it lets you see that you mostly progress through the in-world timeline as you progress through the game, but then you have periodic flash backs to reveal more things that happened earlier (if you didn’t brute-force all the early game scenes before moving on, which is certainly possible).

But it’s also interesting to think about it with regards to pacing: I think it’d be fun to do some randomized animations showing an “expanding wavefront” of what the player is “supposed” to be able to deduce next, based on which clues they happen to have followed up on first.

I’ve also thought that heatmap style coloring could be useful for a bunch of storylet visualization purposes (still gives some useful information while being less messy than a cloud of connection arrows). And I bet that’d work well for a Type Help animation: simulate a bunch of random playthroughs and then show the heatmap expanding: how many runs have seen this scene by the time they’ve encountered N total scenes?

2 Likes

I like this idea!

Some possibilities I see on how to better visualize this include:

  • Colors / Selection (depending on current state, highlight nodes OR assign conditions-as-tag to colors, like what David showed, where sections are visually different. I also like the Blueprints comment idea I had, but that’s probably my Twine bias showing.)
  • Heatmap (show color shifts mapping availability for authors matching some volume testing approach of many random traversals and how common some content would be).
  • Circle selection (possibility space mapping where content representations are circled based on if they can be selected, showing a large circle getting smaller or showing different selections circled)
  • Wave mapping to timeline (like Josh mentioned, something like all available – positive – and all unavailable – negative – would be mapped to points in time as “turns” or steps. The “wave form” would fluctuate as the state does, showing the aplitude of the wave during one or more traversals)

I’m not sure how to go about creating any of these unless they were outside tools. My limited work on trying to revive my passage-shell project could get to some of this, at least as it applies to random or volume testing state changes, with some additional work, but I’m not sure how to have these visualizations without (1) some knowledge of all possible nodes/content based on their conditions or (2) being able to either step through one or more traversals or view a large number of possible traversals at a time.

1 Like

That actually use to be a game on story Nexus and was like one of or possibly the only one to go semi main stream.

I’ve haven’t played it but most fallen london fans don’t seem to like it as much as fallen London and it’s writing isn’t on par either . I do think it’s interesting though it is like the only story Nexus game that managed to abandon the platform and create its own thing . You would think it be the dragon age game but few fans of dragon age where aware of its existence until the platform had already shut down .

1 Like

This is a really interesting discussion!

I feel like it’s possible to make short and simple games in a storylet-based StoryNexus/DendryNexus style, without a lot of content, as long as you have a clear and consistent idea of what cards/storylets represent. You can have a simple vocabulary of choices - for example in my game Making Dumplings each card represents a cooking ingredient.

I would love to see this! Thank you for using dendry…

Suzerain was a pretty big inspiration for Social Democracy. At one point SDaAH was going to have more of a personal/narrative story but that didn’t really work out. Also this is a really cool analysis of storylet styles; thanks for writing it down!

11 Likes