Which system should I use for a game of short decisions?

I’d like to write a game in which the player runs a kingdom and is presented with a series of decisions (e.g. should you do Thing A or Thing B? Should you prioritise C or D? etc etc).

If you’ve played the game “Reigns”, then it’d be a bit like that, except that each decision would have about a paragraph of description, followed by a choice. There would be a random element to the decisions - a decision might appear in one playthrough but not the next - although some decisions would only appear depending on a previous decision.

What kind of system would be best for writing that game? Should I look at Twine, Ink, something else…? (I may be talking about “storylets”, and if I am, then tell me!)

And…if I want to add music to the game, does that push me towards a particular technology? Bear in mind I don’t want to do too much extra work (e.g. I don’t want to do a Unity implementation just so I can write in Ink).

I’d really appreciate any advice.

1 Like

You may want to look at ChoiceScript which is pretty easy to use and provides text and then a list of choices and also includes a “statistics” screen where you can show progress bars like “You are 80% virtuous”.

ChoiceScript is used to write Choice of Games branded or hosted games, but unless anything has changed, you can use ChoiceScript for free as long as you’re not making money with your game. If you are going commercial, you need to negotiate with Choice of Games (either they host and monetize the game with you, or you pay them some sort of negotiated licensing fee.)

If you want music you probably don’t want to use ChoiceScript. You might want to look at Elm Story Engine which is much more QBN/storylet oriented and requires no coding. The engine isn’t done and might be stalled since it’s a single developer, but it is usable and offers hooks for images and sound, and naturalized randomization of story segments more like a board game.

Twine would also work great and there’s a ton of support for it here and elsewhere. I’d recommend the Sugarcube format for what you’re doing.


It sounds kinda storylets-ish (selecting which decision to show the player next depending on the game state and maybe semi-randomly) but of course people have been doing that sort of design forever and you can certainly do it in a lot of tools that aren’t specifically designed for it.

If you’re writing a piece where each piece of content has some constraints on when it can appear, then a storylets tool will put those constraints together with the content they control. If you roll your own, it’ll be easier to put all the constraints together in one place (but separate from the content).

So on smallish scales it’s maybe a personal preference of how you like to work? Do you want the constraints with the content so you remember to update them both? Or are you organized enough that you’ll remember to go update the big list/deck of constraints every time you add new content, and you’d rather see the whole list (or whole sections of the list) at once to (maybe) understand the shape of the story better?

Ideally a tool would do both (let you write constraints/content in one place, but also show you the shape of the story) but I don’t know if anything does that yet (though I still haven’t gotten to trying Elm Story…)

Twine/SugarCube does music, as you know from The Thirty Nine Steps, and there’s my TinyQBN library for storylets or it’s not too hard to get similar results on your own, especially for a specific game/design.

You can do some of this stuff in Ink, but doing the last few percent of what you’re talking about is probably easiest with a few extra lines of JavaScript on the web-runner side. Also Ink’s HTML presentation is pretty basic and messing with that (or playing music) gets into web-dev territory, though not too terribly far. I
have a vague idea that you might have a background in programming? Can’t remember, sorry.

Depending on your timeframe, I’d be down to collaborate on the tech side. Or to discuss more details of what you’re trying to do and how you might do it (publicly or privately, whatever).

I…may have started mocking up a Reigns-like demo for TinyQBN at one point, though I wasn’t really worried about the story-tech side so it looks like I mostly got distracted by making a fancy animated status bar…



Thanks everyone, this is helpful!

One question: I’ve heard the latest version of Harlowe has inbuilt storylets support. Is that a better bet for what I want (storylets-plus-music)? Or should I stick with Sugarcube, which does audio very well?

Harlowe has (storylet: when conditions…) which marks a passage as a storylet.

Then (open-storylets:) gives you a list of the storylet passages that match the current state (possibly filtered by some more conditions) so that you can loop over and display them, or you can use (link-storylet: 1) to just link to the first one (sorted by urgency and then alphabetically by passage name, I think).

My TinyQBN (for SugarCube) has a few more helpers for various things, but you have to copy/paste in three chunks of code to install it, which is a bit of a nuisance.

It’s probably a toss-up. I don’t know what Harlowe’s audio situation is but I assume it’s similar to SugarCube?

Huh. Apparently Harlowe doesn’t have built-in audio support and the recommended way is Chapel’s Harlowe Audio Library, which is designed to do the same things as SugarCube. So I guess you’re back to installing extra code in Twine either way. Hrmph.

1 Like

I’m wrong or there’s shades of Pathfinder: Kingmaker ?

Best regards from Italy,
dott. Piergiorgio.

1 Like

Thanks so much. It looks as though Twine, either Sugarcube or Harlowe, is probably what I need, if I want the music to work.

Josh, thanks for the offer! I’ll probably start playing around and see how far I get.

Piergiorgio, I don’t think I’ve heard of that game.