Different styles of QBN/storylet game design

Sorry to backtrack a bit, but as someone who hasn’t yet dabbled in storylets or QBN, I’m rather unclear on what tools are available, how they differ and which are in active development. There’s no dedicated page on the IFWiki for this. Here’s what I understand:

StoryNexus: now defunct web-based QBN authoring system created by Failbetter games, similar to the engine behind Fallen London.

Dendry: an authoring system to create storylet-based IF.

Dendry Nexus: a toolkit or library for Dendry, created by Autumn Chen, that emulates the now defunct StoryNexus system.

(I’m not very clear on what the difference between these two is.)

VaryTale: QBN authoring system, now defunct.

TinyQBN: a toolkit created by Josh Grams for creating Quality-Based narrative games in Twine (Sugarcube only).

Are there any others in active development?

1 Like

MQBN: A macro/function set created by me for QBN in Twine (Sugarcube). In active use and development

Harlowe: Twine’s harlowe format has storylets built-in, though they are not part of a larger QBN framework

SimpleQBN: A javascript framework created by Dan Cox, is frontend agnostic, though aimed towards Twine. Not in active development. (SimpleQBN inspired TinyQBN, which in turn inspired MQBN)

3 Likes

Yeah, that’s mostly not bad.

I think the TL;DR here is: use Dendry if you just want to start with something Ink or ChoiceScript-like that lets you branch out into storylets. Or use DendryNexus if you’re attached to StoryNexus’s card-deck/hand of cards presentation style and RPG-like random skill checks. Use MQBN for Twine/SugarCube but it’s a little more flexible and a little more work for the author to decide how to use it probably.


I’d recommend @Hituro’s MouseQBN over my TinyQBN as I haven’t touched mine in years. MQBN is actively used and maintained, and probably better thought out than TinyQBN (I did think about it a lot, but it was the first publicly available storylet library for Twine and I definitely made some mistakes).

Twine/Harlowe has storylets built-in, although they’re pretty barebones: it gives you the core pieces to make them work however you want but it’s batteries-not-included, if you will.

Dendry is probably your best bet if you’re OK with the UI style of the updated Bee and Autumn Chen’s games. There is a little bit of setup, but smwhr’s guide that I linked in the first post should make it manageable, and once you get started the syntax is pretty friendly: mostly just write text-followed-by choices sort of similar to Ink (except Dendry uses - instead of * and + for the choice markers).

Here's a snippet from Bee, for example, with a little bit of commentary from me

Options like - @eavesdrop: Eavesdrop on Jerome and Flauberta go to the section named “eavesdrop”, which is then defined with @eavesdrop at the start of a line.

But the twist here is that you can have multiple sections named @eavesdrop, with different conditions, and it’ll go to the first one that matches the current game state.

You can also have options that go to #plot or whatever and it’ll fill out the list of choices using scenes with that tag.

That kind of thing. So you can start with basic branching and expand from there as necessary.

title: Church Jumble Sale
subtitle: Helping sort goods for the annual fundraiser.
new-page: yes
view-if: month = 14
frequency: 1000
on-arrival: month += 1
tags: menace, plot, top

= Church Jumble Sale

It's jumble sale at the Church, and the children have been gotten together to help sort and price the easy things. Lettice is doing the DVDs, and Lisa Perry is mending donated clothing with a little frowning crease between her eyebrows. Your job is to find the books in the collection and sort them into $1, $2, $5, and $10 boxes, and put special labels on box sets.   

- @fountainhead: Flip through *The Fountainhead*.
- @erase: Carefully erase pencil marks from *The Boys' and Girls' Cookbook*.
- @eavesdrop: Eavesdrop on Jerome and Flauberta.
- @chat-with: Chat with Jerome.
- @chat-with-2: Chat with Jerome and Flauberta.


@eavesdrop
view-if: jerome > 1 and jerome < 4 and child-led < 1 
on-arrival: jerome += 1

"We'd get a better price if we were selling this stuff online," Jerome is saying to Flauberta. "Selling locally is for suckers."

Flauberta is taking inventory of board games to make sure they have all their pieces. She tapes a sign to the top of a Scrabble box that says, "Missing P."

"We could be filling out Social Studies Workbook 23A: Societies of Subsaharan Africa," she says to Jerome.

"Good point," he says.

By default, Dendry has a presentation that’s similar to ChoiceScript (except that you click the choices directly instead of selecting the choice and then clicking the button to go).

DendryNexus is an add-on for Dendry that imitates StoryNexus’s presentation style, where you draw a hand of (default three) cards from a deck and then select them. It also adds StoryNexus’s stat-check system, where you can roll a random check against a skill level, and your skills increase (succeed or fail) when you use them.

5 Likes

Other way around, actually: TinyQBN was a quick prototype made out of spite for the “you can’t possibly do storylets in Twine” attitude that was wide-spread at the time, and then it got more attention than it deserved with Emily Short mentioning it on Twitter and putting it on her blog as it was the only extant tool at the time. And I tried to dutifully maintain and promote it for a bit but…

And then Dan Cox did a series of articles and tried to analyze some of the ideas aronud storylets from first principles, and ended up making SimpleQBN to demonstrate those ideas.

And then you came around and it’s so great that you made MQBN because I think Twine deserves to have tooling for it but I find Twine awkward enough that I’m always annoyed when I have to maintain code for it…

3 Likes

Hey @JoshGrams did you see my question above I was wondering if actual narrative driven with a plot can be made to n this format . I explained what I was trying to do because all versions of games I’ve seen with QBN most don’t seem to have plots,vset characters or an actual storyline .

Small update here that I haven’t otherwise posted about yet. I have recently updated things (in the last few days) and am moving the previous documentation from HonKit to Jekyll. I hope to add more examples soon, as I was already thinking about the visual representations Josh mentioned earlier in the thread to help students understand QBN.

I’m also wrapping up a semester in which I taught narrative game development again and have been slowly updating multiple repos related to what I have learned from teaching tools and frameworks again. (See, for example, the major re-write of the Unofficial ink Cookbook I’ve been working on for multiple weeks now and work on an online ink editor to allow my students to more quickly work on ink projects without Inky.)

Correct. Josh was definitely first! I end up writing an ICIDS paper on storylets that was part of the doctoral consortium multiple years ago at this point and I converted all content into a series of markdown pages, which I’ve recently been trying to update. Hopefully, I’ll figure out a way to embed runnable examples soon, as being able to see the code is useful, but being able to run the code and see the results is even better.

3 Likes

Sure, lots of things can be made to work. I think storylets tend to got pushed a lot by people who are more interested in the “open” or “emergent” kind of stuff but part of Emily Short’s motivation for trying to popularize common terminology was lots of people do aspects of this anyway, what if it was easier to get all these different people talking about the craft together instead of doing it alone off in their little corners. So yeah, use as much or as little QBN as your story needs.

If you have the time and energy, I’d recommend Stacey Mason’s PhD thesis Responsiveness in Narrative Systems for a great framework: one way to organize your thinking about where you might want to put the responsiveness and where you could cut: “play within a story” is how she puts it IIRC. It’s pretty approachable for a PhD thesis but it’s also long, so you could try my half-baked attempt at a reading guide/summary maybe…

Andrew Plotkin’s tongue-in-cheek-titled talk at Northeastern University from 2023: The Great War Between Interactivity and Narrative also talks about the basic technique of having different amounts of responsiveness on different layers of the gameplay…

Or maybe Ben Schneider’s Cairns & Keystones from NarraScope 2023, or Failbetter’s old blog posts that talk about patterns like Fires in the Desert (I always hate their naming patterns. “Faust’s Tea Party”? How am I supposed to remember what that means? but they have a lot of experience).

4 Likes

Everything I know is a lie! :smiley:

2 Likes

Based on this, I did spend an inordinate amount of time programming today, but I got something working!

In addition, because I know some people prefer the Visual Novel or branching type of narrative, I made sure to also visualise simple redirect logic so that you can make it so you stay within a linear path of storylets

Thank you for starting this thread! I did not realise I needed this tool in my application, but I am glad I do now!

4 Likes

Oh, man. If I had more free time, I’d like to put together a Zotero group for sharing sources like this. I feel like every time I have a decent feel for what the storylet scene looks like, I find more things like were shared here and games that were mentioned earlier. (I’ve been saving things in Notion off this thread, but the public group might not happen any time soon.)

For my stuff, you could not have known. I’ve been quietly trying to get maintenance updates out on a more regular basis on multiple projects like SimpleQBN and more recently Snowman. I’m slow but I’m trying to be better.

2 Likes

I don’t think they were mentionned, but Calico (an alternate ink web export by Elliot Herriman which adds a bunch of features) has a storylets patch. It is pretty barebones, and has been expanded upon by @CrocMiam, his storylets patch has a few additionnal features, a debugger accessible from the Javascript console, and can be used with or without Calico (so with ink alone).

It worked right for me, solved some issues I had with Harlowe’s storylets, the learning curve felt manageable for someone who knew a little bit of ink (I had to refresh my memory on threads and tunnels, because that’s how you can get retrieve your storylets when needed).

5 Likes

Sorry. Clearly I need to work on that knee-jerk reaction. I don’t care about the precedence; I’m just still salty that I had to write actual functioning code to get people to stop shutting down conversations and speculation with their “don’t be silly, a general-purpose storylet library for Twine clearly isn’t possible” attitudes and get the conversation to move on to “how can we do this in a way that people will actually use?”


Who looks at this quality? Who changes it? Awesome! Yay for cross-referencing tools.


Oh yeah, I completely forgot to mention Calico and Florian’s patch. Thanks! ink is so good with conditional branches and stuff, it totally makes sense to extend it to storylets.

While I’m far from an expert on QBNs…

This sounds like exactly the sort of thing they’re best at, customizing the choices available in a way that depends on your stats. It sounds like the tools being discussed would let you do this within an overall linear narrative.

1 Like

The best way I was able to grok QBN was to think of a board game abstracted. Consider Monopoly:

  • The player picks an “avatar” piece which is similar to setting a profile picture. (In some QBNs, different avatars may have different skill sets, but in Monopoly they’re all the same.)

  • Each space on the board can be considered a “location” with a numbered quality from 1-40. Go is space #1.

  • In Jail is a special location #41 the players do not move through on regular turns. If the player’s roll increases the location past 40, 40 is subtracted from the current location and $money is increased by $200 and the player interacts with the new location.

  • The player rolls 2d6 (which could be RNG or a card pull to determine currentMove number quality) The players location is increased by currentMove. turnRoll increases by 1.

  • The player has interactions based on their location and qualities - $money, PropertyOwned qualities, etc. If the location is owned by another player, their $money decreases. If the location is unowned, the player can spend $money to buy it if they have enough. They can buy $houses with enough $money for that location, or a $hotel if $houses in that location they own = 4.

  • If d1=d2, the player gets to roll again and turnRoll is increased. At the end of the turn, turnRoll is reset to 0. UNLESS turnRoll is 3 and d1=d2 the player is immediately moved to location 41 (In Jail as opposed to Just Visiting) and plays a mini game to escape jail or decreases $money by 50 to move.

  • Landing on Chance or Community Chest location presents a deck to draw from, each can have an instant effect, increasing or decreasing $money, changing the player’s location, or may allow being kept in the player’s hand for later use. Each card also has “flavor text” describing the reason for the quality adjustment that applies in any situation regardless of the “overall plot”.

Monopoly doesn’t have a specific plot, but emergent drama and stories can evolve from it based on the open world random nature and attitudes of players involved. “Wow, the IRS is really after you!” when a player repeatedly lands on luxury tax or draws cards that make them pay. The game can go for hours until the win state “BeTheOnlyPlayerWithMoney” is achieved.

The other one that really helped was playing a physical game of Mysterious Island which has a random map decided by card layout that changes over time, physical sliders that control when danger happens and shifts the map, and multiple skills and abilities granted to players by role or by game rules and cards. Its unique structure creates a game where players can work together against an invisible ruleset that is trying to destroy them.

I’m also gonna post these again for anyone not following the other thread, as the docs for Storynexus are a fascinating read if you’re that type of person or for anyone curious about it or how Fallen London works and the design philosophies such as “fires in the desert”.

7 Likes

Probably Jasmine Otto’s DendryScope? (paper and demo).

Yes, thank you for sharing these links! (Which I have to strip from my post because new account.) As y’all will notice, the demo doesn’t have an import feature. That’s because I never ported my Dendry parser to JS from Python. Here it is with usage instructions, in case you want to drop your own Dendry game into the skein:

gist.github.com/JazzTap/f39779bdd2f5626898ac81e0ef3e98cd

I’d love to make query authoring for QBN really accessible to everyone, so I’m really excited to catch up on the discussion here. I’ve tried describing Dendryscope as a static analysis tool for reachable story content. The skein is like a game tree, because it lets you run your finger over all possible worlds.

Anyway, Dendryscope will be a functional tool as soon as it can ingest a working directory full of Dendry files. Anyone who wants to playtest it should definitely let me know.

8 Likes

I have to admit I only poked at it briefly when it came out: I need to go back and read the paper properly because I never figured out how to really navigate the tool. It seemed cool but I never figured out what the different shades of blue bars in the skein implied, or how to get it to start at a state farther into the game: only being able to analyze 5-10 steps from the very beginning before it timed out didn’t seem very useful.

(edit: oh, wait, I did figure that out. The darkness of the blue bars is how many times that storylet was visited in the tool’s exploration of the possibility space. And to go farther in, you pin a single path so it doesn’t waste so much time on the early game possibilities?)

But it was clear from the designer survey results in the paper that it’s useful once you get it, so that’s obviously a me problem.

Hmm. I wonder if you have the computing power and ability/interest to record a video? This feels like a place where a short visual walkthrough of what you can do with it might be really useful…

1 Like

Yes, a 5min walkthrough would make sense. I think I will run a demo with the Feeling of Computing folks next month and get their feedback. It’ll give me an excuse to add the color legend and to link shorter game examples.

While I’m glad that the rhetoric of the designer survey turned out, you’re going deeper than the majority of folks. Sometimes we pushed Dendryscope queries very aggressively, using that ‘pinned path’ strategy exactly, but sometimes we poked at it for ten minutes and then had an ordinary conversation.

I also recall that you distributed my flyer for that study, which led to Autumn and I meeting, and I’m really glad for that.

2 Likes

A thought that just crossed my mind: maybe the “mission” structure of games like Mechwarrior (1989) or Wing Commander: Privateer could be considered an early QBN or storylet style.

1 Like

The basic concepts are absolutely known outside the IF community, yeah. To the extent that outside the IF context I’d expect a lot of the things that I think are covered under the terms “QBN” and “storylet” in this context to be just called “event scripting” or something generic like that. Although I’ll say that I’m not very familiar with how they’re used specifically in choice-based designe, so it’s possible I’m missing some nuances.

That said, I don’t know specifically about the design of early mission-based games with branching narratives. A lot of those have fairly simple branching structures so it wouldn’t surprise me if they were implemented “just” using procedural logic at the end of missions where the branching choices are made.

But more recently things like procgen/roguelike design and open-world game design fairly ubiquitously uses concepts which I believe are effectively equivalent to QBN and storylet concepts (although, again, I might be missing some nuance of how those terms are used in their native context). The main difference I perceive is that choice-based games seem to be more concerned with scripting structures with fairly deep branching structures compared to gamedev in general.

Yeah, you get things going all the way back to Oregon Trail that have storylet structures. I can’t find the quote (maybe it was on Twitter?) but I’m pretty sure Emily Short said that one reason for that pair of storylet posts in 2019 was that lots of people do QBN-like stuff, but were divided by calling it different names that they invented, and wanting to popularize some common terminology to try and help get people talking together about how to use them.

And of course early in this thread Hituro said


While looking through Emily Short’s blog, I ran across this interesting quote, from 2017’s Mailbag: High Agency Narrative Systems:

Designwise, there’s more to learn, particularly around design patterns for organizing groups of storylets in pleasing ways. Failbetter has some old posts about this, using names like Carousel and Midnight Staircase, but in practice a lot of the patterns outlined there are used less and less in recent FB content, I think in part because many of them are based around an old expectation of a much more grind-heavy player experience. Assuming you are not writing a browser-based MMO that incentivizes people to pay for extra actions, grind is not a vital feature of quality-based narrative, and some other patterns have emerged since.

Unfortunately, I don’t know of any place where this is written up extensively other than in internal Failbetter discussions. Maybe I’ll do another post just about this at some point.

And then she followed up with Montage, Narrative Deckbuilding and Other Effects in StoryNexus


One of the patterns I’ve seen in Sea, Skies, and Black Crown Project are that when you have a sequence of cards that tell a story (usually pieces of the story spaced out over time), sometimes the story advances itself and sometimes the quality that advances the story is updated only elsewhere. I feel like there are places where you get a mix of the two but it’s less common.

You might have an Acquaintance with So-and-so quality, and every time you talk to them your acquaintance goes up and then the next time you encounter them you can see the next piece.

Or you might have… in Sunless Sea I think the Admiralty’s Favour mostly gets updated outside: you collect stuff and as you gain favour more things unlock. Hmm. That’s actually a mix: you can do stuff directly to them that bumps it up or down. Or The Black Crown Project has The Mountain Moves Closer and Closer which progresses but other things advance it and the storylets that check it are only reporting the story associated with that element.

1 Like