Best practices for puzzle design in Choice based IF

“puzzle” is a word with a lot of baggage. it makes me think of widgets, locked doors, and a sack with 20 identical gumballs in it

we all might be coming from different places re: the word, and perhaps we disagree less than we think? just thinking out loud

I’m very interested in storylet games these days, and I think they’re great for what I’ve taken to calling “titration” problems. That is, getting specific narrative outcomes in something like Bee or The Archivist and the Revolution involves two types of decisions. There are monumental decisions, which obviously affect the plot directly. There are also actions with more nebulous effects. Where should we send that archive data? Or should we go to the hairdresser with that woman from church?

Like titrating clear liquid into clear liquid, the effects of these small actions are not immediately visible. They accumulate until the reveal, until the sum of our choices is made manifest.

Now, I’ve never heard anyone refer to anything in Bee or The Archivist and the Revolution as a puzzle, which is fine with me, but they both feature complex systems that are much harder to figure out than, say, the metal basket in Zork I.

I don’t have a strong opinion on the kinds of games people make. Hopefully they feel free to make the kinds of games they like making. People will like them or not, the way people do, but that’s another matter.

9 Likes

I’d guess you already did the best thing you could; acknowledge the issue and digitally shrug.

We aren’t always going to vibe on a one-to-one, and that’s okay. I’d just figure we all see things differently and move on in the same position.

At the end of the day this is a hobbiest forum about text games.

9 Likes

(post deleted by author)

1 Like

I know I may have leaned into this a bit as well with my mini-TEDtalk, but please keep the discussion constructive. A thread about puzzle construction in choice is awesome and some overlap of “how can you pull off some things that parser does in choice…” is part of that. Please discuss the ideas and don’t attack others nor devolve into a “what is IF?” or “why this kind of game is bad” discussion.

  • Choice-narratives are bad because… :-1:
  • I personally find writing in parser frustrating because… :+1:
  • You don’t know what you’re doing… :-1:
  • This can be difficult to understand; here are some examples… :+1:
8 Likes

So, after 12 hours of sleep I’m back at this.

I think one thing that people who grew up playing and writing parser games lean on is that world-model. They’re used to playing and making puzzles that are object-oriented - find the key to open this door. That’s the paradigm that works best in parser and there are lots of games that are basically “PC explores a mostly abandoned area to figure out what happened, and often overcoming obstacles to make progress and proceed to other areas.” A world model is awesome for this.

The Toothbrush Problem

I frequently bring up what I call “The Toothbrush Situation” which is a conundrum parser authors run into: A parser author wants the player to brush their teeth and goes about simulating all the moving parts. A brush is an object with attached bristles as a supporter to hold the paste. They restrict with a rule that nothing but toothpaste can go on the bristles. They then implement a container of toothpaste and toothpaste as a liquid using a plugin that simulates measured liquid - so there’s only so much toothpaste they can use! Then they implement a separate cap that can be UNSCREWED to remove it from the tube! Then they have implement the PCs mouth and teeth as an incorporated container containing teeth so the player can type TAKE TOOTHBRUSH. UNSCREW TOOTHPASTE CAP. SQUEEZE TUBE. PUT TOOTHPASTE ON BRISTLES. PUT BRUSH IN MOUTH. BRUSH TEETH UP. BRUSH TEETH DOWN. AGAIN. AGAIN. AGAIN…

Is this fun for the player? Perhaps in an absurdist game about dental hygiene, but if the player is required to have minty-fresh breath before leaving the house for work, they’re gonna get stuck here. Even though they know how to brush their teeth in real life, parser implementation can be fiddly because of guess-the-verb/noun - they may get stuck on what should be a simple task.

This goes back to “What’s most important in IF?” to which the answer is story. Is brushing your teeth such a mammoth task that it requires this much work and testing by the author? In 99% of the cases it’s better to just implement an action >BRUSH TEETH and be done. Or even better, perhaps just narrate in the bathroom description “You take care of all your grooming and hygiene, including brushing your teeth.”; now the player is minty-fresh. Parser authors often cast themselves as the player’s adversary, throwing puzzles and obstacles between them and the story. I find the opposite true. “Always be on the player’s side.” Even if this means helping the player when it’s obvious they know they want to do. In the original Curse of Monkey Island where the player has to row a boat around a group of islands top-down to access different locations, at one point the player must collect several items from different locations and bring them to one location for a puzzle. After the player does it once and sets out to get the next thing, the game interrupts with a title card “After lots more furious paddling…” and puts the player where they need to be, shortcutting tedious back and forth. The game knows what the player wants to do, the player knows what they want to do, and the creators took advantage of that and jump-cut like a movie. This is encouraging to the player - instead of saying “they need to complete all parts of my multi-tier devious puzzle!” you work with them in service of advancing the plot and reducing tedium.

In a choice narrative, without all these tools the author can make a link [[Brush Teeth->minty-fresh]] and that’s it’s. A flag is set that the player can leave the house.

Puzzles aren’t always the reason to play IF. Contemporary IF has shown there is so much more that can be done. Rooms don’t have to be rooms - the player can explore a realized simulation of their mind, with thoughts and concepts as objects that are traded.

I’ve seen people discuss “What Classic IF would make a great movie?” and the answer is very few of them because movies aren’t usually about people finding keys and unlocking doors all by themselves. Movies require characters and often dialog and character arcs and conversations. This is what parser IF is not inherently good at. There are great conversational parser games, but it’s really difficult to make one NPC seem realistic and go about their day and converse with the PC, much less a whole cast of characters. Most NPC’s in parser aren’t autonomous, and they are there to ask the player to do things. Often you’re like “Bob, the frazzmawhig is two rooms away, why are you questing me to fetch it for you when you’re just sitting here drinking coffee?” You seem like you want to talk to Bob, but I didn’t understand that sentence… Many parser authors find difficulty with ask/tell and instead will implement choice menus. Why would they do that? Because limiting what the player can do can make it easier to tell your story.

Not to say there aren’t great conversational games with characters. Everybody fell in love with Floyd from Planetfall, but he’s a robot who understandably has a limited vocabulary and just follows the player. In Counterfeit Monkey, the player has two characters in the PC’s head as a magical amalgamation of both and it’s narration instead of implementation.

The paradigm for choice-narrative is passages which can be thought of as “pages”. In quality-based-narrative (QBN) the passages are often thought of as “cards” which can be shuffled. And the passages needn’t be forward-moving and linear. Please review this very fine article describing structures by Sam Kabo Ashwell:

How do you create a world model? Forget the compass directions. You just make links to other “hubs” which can represent other locations, or events. Here in robotsexpartymurder (note game NSFW - these examples are all safe) you click the “door” link and are asked where to go. In parser you could very well think of compass directions as a choice menu. “Which way to go from here? The Hygiene Bay is to the north, The Commons is to the West, your Workplace is to the East…”

But instead of leading merely to a location, it can lead to an encounter. In this case, the first time you leave your living space, you run into a neighbor.

Choice narratives are great at conversational games that can remove the necessity of moving through physical space. When I initially reviewed ChoiceScript (which is Choice of Games engine for their very popular commercial IF) my first bafflement was “how do I make rooms and objects and keys?” The simple answer is you don’t - CoG focuses telling stories which read like books and are narrative rather than object-driven, and allow the player to co-create and affect the plot usually through higher-level decisions. You’re not finding keys to unlock doors, you’re deciding who to align with, what the economic system for the kingdom will be, and as you read, the story may change based on the choices. Usually the game isn’t about what room you are in when you >FROB THE JAZZMAWHO but relationships and higher level plot decisions.

This requires thinking on a higher level when creating a story. The player’s choices aren’t as granular. This also requires getting out of the “time cave” model where every choice branches and causes combinatorial explosion. How do yo do this? By considering variables or qualities, and creating hubs.

Here’s the main hub in RSPM. You can think of it as a room.

I can reconfigure the room to change it. Stylistically you’d have a “kitchen” room to walk to, but that’s not how this game works.

There’s no bathroom. For that, the player must routinely take care of their hygiene in public facilities. There are a few choices, the game assumes the player brushes their teeth as they click to grind through the ritual. (The company knows this and will nag if you let yourself become less than minty-fresh.)

Instead of making a couch, I give the option to link to [couch] where you are then given the option to nap (if the fatigue stat is high enough) turn on the TV and pass time, or if someone else is with you in the room, they will join you and there are conversation options. The player needn’t guess what to do in this “location” since they are explicitly instructed by choices what they can do. This may seem limiting, but the player isn’t going to get stuck. I don’t have to worry about a refusal to EXAMINE COUCH CUSHIONS because there’s nothing there and no point in offering that option.

The trick here is there is a moving game clock. Different options will become available at different times of day. If the player buys a snow globe elsewhere, it’s automatically added to the room with a link to examine or admire the snow globe. In RSPM it’s possible to hammer WAIT and get to the end of the game, but where’s the fun in that?

While most people consider choice narratives linear, they can be designed where the player moves around “hubs” which are basically menus with options in each location. This may seem limited, but it’s actually very freeing to have more control as an author. And it majorly reduces testing and debugging.

Here’s the Commons:

That’s very similar to a parser description. Instead of typing GO CARDINALCAFE the player clicks. The cart is a shop - click cart and infer EXAMINE CART. There’s also a prominent navigational choice “Return to the cube”. Hey, it’s a world model! I don’t get as much choice as I would in parser, but every choice is meaningful somehow and works as intended. Sure, I can’t examine the trees, but they aren’t important to the story here. Everything the player can do is story focused.

So yes, choice narratives can be linear and potentially lawnmower’d through, but it’s up to the author to design the exploration and set variables. I can buy a coffee mug at the cart, but only if I have enough money. As the player interacts, variables get set which will change things in locations I’ve already been to. In the wardrobe niche link, I can change clothes, which sets a variable that will affect how people perceive me. Em (your very helpful and not at all renegade AI) won’t let me leave my room naked. I can go to work in the wrong clothes, but I’ll be docked for not following corporate policy. Notice the game warns me I’m not dressed for work by checking a variable here.

So gameplay and puzzles. If you choose to go to work, you have to grind through several pages of work events. They are randomized so each day is a little different. But it’s busy work that takes up time on the game-clock, and simulates work for the player. I have to click on all these tasks to accomplish them. Not much happens, but I can only proceed by doing this. This is a simple “grind” building up productivity points.

I’m rounded up to sing happy birthday to a co-worker, more grind.

At the end of the day, I could have made more money if I’d remembered to wear my corporate-mandated uniform… I’ll remember that next time.

I deserve a snack to make myself feel better, so I’m headed to the Commons and the Cafe.

If you order a coffee, the player must wait through real time as the game throws out multiple orders until your name and drink show up to snag it. This becomes and important later… One “puzzle” is identifying someone you’ve not met in the crowd. The way you solve it is to order a coffee with their name (you type it in, the Baristas usually mangle it) and wait for the person to pick it up so you know who they are and then can subsequently converse with them.

When I get home, I have a visitor. This is based on the time of day and previous choices.

Anyway. That’s world model with characters, locations, events, consequence, and beginnings of plot. True the player’s actual choices are confined at any time to what I have decided they can do at that point in the plot, but I’ve made choices, I made mistakes, I made money, I ate a scone. And the plot continues. I didn’t walk linearly through a time cave.

One of my dirty secrets: often I give the illusion of more choice than there is. In this conversation, all the choices here lead to the next node with slight text variation. Why so many? I’m letting the player role-play their reaction rather than steering this actual one-sided conversation masquerading as character introduction. FREEDOM (but not really) Also, I can world build through choices. Without Ivan saying it, there are clues the player doesn’t remember Ivan (though you will on your next play through, and you can use prior knowledge from previous plays) the time of year, and some other minor details about the PC to avoid the player-amnesia situation. It suggests a lot more conversation than I’ve actually programmed.

[Yes, this will probably continue. Probably about boardgames, grind, and “fires in the desert”.]

16 Likes

All parser games are so convoluted and ridiculously over-engineered. :smile:

That is a great point. There are benefits with using both command and choice mechanics.

And thank you for going in depth with your philosophy in designing your game (the screenshots supported your points really well – it looks so slick, by the way). You do bring up a very valid point in that choice-based puzzles benefit more so from being woven into the narrative. Parser games are more forgiving with not integrating their puzzles into the story; the puzzles can simply be there without context in many cases and still feel purposeful somehow. This probably comes from the sentiment you made about how parser games are more about world simulation and their puzzles being inherently object-orientated.

Yes, please! I think boardgame mechanics would be a huge strength of choice-based IF, even without graphics.

There’s great stuff in this topic!

2 Likes

I don’t know if that’s a widely shared opinion!

  • The first half of King’s Quest V is spent walking around in Serenia, solving puzzles and collecting a lot of items that will admittedly come in handy later. But we’re given absolutely no indication why King Graham should be bothering with all this, considering he needs to journey through the mountains to save his family. It’s just aimless wandering about. All because of what’s preventing him from just going up into the mountains right off the bat: a single snake. And instead of just beating it with any number of things that end up in your inventory (like a hammer) or just walking around it, you instead have to wander all over hell and back until you get a tambourine to scare it away with.

  • The Interactive Fiction game Not Just an Ordinary Ballerina is better than it sounds — but includes more than one pointless puzzle nailed to the wall. The worst example is a Magic Fifteen puzzle that spells out the words of a song. Hope you know the song…

  • Zork: Grand Inquisitor The cocoa recipe. An answering machine tells you of a recipe for a cocoa blend. With the ingredients at hand, you naturally try to make it, for no conceivable reason. Once you do, your companion is reminded of a spell of his he developed while drinking it, and teaches it to you.

While there is a genre of “puzzle box” IF (Like what Andrew Schultz does, and games like Ad Verbum which are there to feature themed but mostly random puzzles) I don’t think parser narratives get any specific slack for “just for the heck of it” puzzles designed solely as a non-diegetic obstacle. Or something like “You must bring Bob his package of hamster food from the post office before he will consider explaining how to save the world from the approaching meteor that will land in 60 minutes” type situations outside of specifically absurdist comedy - or something like Counterfeit Monkey which goes into extreme detail to logically justify an entire setting where anagrams and similar wordplay control the universe. :stuck_out_tongue_winking_eye:

8 Likes

I don’t know if you’re joking or serious half the time!

Edit: Oh, good Lord. I’m so dense sometimes. Don’t quote that back to me. :wink:

2 Likes

Three things come to my mind:

  • The options to click (or move) should be not too few (and probably not too many. But too few is worse than too many).

  • Normally it is a good idea to allow the player to walk away from the puzzle and come back later (there are exceptions when it fits the story to force the player to solve it).

  • What happens when a false try was done? And how many tries does the player have?

3 Likes

I reckon it’s possible to make a ChoiceScript game with satisfying puzzles, where the solution-level outcomes aren’t simply offered to the reader in a choice block – even if you don’t use text input or graphical features, just the usual menu button choices affecting stats. The stats can stay under the hood, after all; you don’t need to broadcast the aspects of the situation that make the solution obvious, any more than you do in a parser game.

@mathbrush, you’ve played Choice of Rebels as well as roughly a bajillion more parser games than I have – if you remember it, do you think surviving the winter in Ch 2 of Rebels counts as “a puzzle” for the purposes we’re discussing here? I’m not sure how analogous it is to parser puzzles… but I think a lot of people have approached and experienced it as a puzzle, albeit chasing a range of different solutions beyond just “survive the winter without triggering a mutiny” (e.g. minimize casualties without stealing; maximize anarchy and wealth; maximize band size without locking yourself out of the “stand and fight” option in Ch 4; etc.).

Regardless, I wouldn’t hold it up as an ideal of “what works” for a choice based game. Plenty of readers clearly found it frustrating to grapple with in the absence of a graphical interface; what I was trying might well have worked better with a more diverse UI than the CoG-standard radio buttons. And the code’s a mess (in keeping with the lower bar for coding skill in CS compared to just about any other IF language).

In terms of world model, this particular puzzle ended up involving some 500+ variables (though many of those involved cosmetic features of the narrative for that chapter, and I’m not going to dive in now and try to figure out how many were really intrinsic to the “solution”. :slight_smile: ) It was, as @HanonO well said, a model built with events more than locations. It involved a “hub” (the start of another week of surviving winter with your bandits in the woods, with week-specific events popping up each time the game brings you back to the hub) from which the player is able to choose from a menu of possible events (raids or non-violent ways of feeding your outlaws) until you run out of outlaws to deploy and you get some end-week events. The player revisits the hub 10 times, and then winter is over and the game moves on with whatever outcome you achieved.

Even if that falls short of the definition of a puzzle, I’m pretty sure someone could use a similar approach to craft choice-game puzzles that don’t have an obvious “CLICK ME” solution and can generate some of the same eureka moments as a good parser puzzle. In fact, I think Mike Walter’s already done that in ChoiceScript; finding my ways through the time loops of his Paradox Factor was as satisfying as many of the parser puzzles I’ve played.

9 Likes

I’d classify it as a ‘complex system’ type puzzle, just like learning a language or operating a complex machine in parser games. I tend to like those kinds of puzzles, because you’re actually learning new things instead of applying old knowledge.

I think the difference between your system and (most) parser puzzles is that you have:
-degrees of success (not just ‘right’ or ‘wrong’), and
-the story can progress even if you do ‘bad’

So I think its place in the world is slightly different from parser puzzles (which usually stand as binary ‘gates’ to progress) but the kind of thinking you use to overcome it is similar to that used in some of the better parser puzzles.

6 Likes

I think this is accurate… and that neither of those differences is inherent to ChoiceScript, let alone choice-based IF more broadly. Those were design choices I made; the latter one especially may be a requirement of CoG as a publisher, but they’re not required by the medium.

3 Likes

This starts to touch on quality-based narratives, or QBNs. Without using variables, choice narratives can be limited mostly to putting the solution in a choice, which describes the “lawnmowering choices” type of game that @HAL9000 mentions when it’s ventured that “there can be no puzzles in choice.”

ChoiceScript has statistics which can represent different values, such as relationship with another character or statistics like strength or intelligence, or values that are more specific like “Research Progress.” Variables can be used in Twine and other choice systems. These stats or qualities may be under the hood behind the scenes, or be displayed to the player. One feature of games like Fallen London is the player might have stats or qualities that are vague “An Inkling of Revolution…” that may hint the player about something that can happen or just control plot mechanics to gate what they’re capable of, or be obvious such as a health stat. If a player isn’t “healthy” enough, they may be restricted from entering a hospital for fear of spreading disease.

A feature of a QBN is certain choices are available or not based on a “quality” (variable/stat) the player has. Qualities can be true/false or number based. The most simple is something like a library the player cannot enter unless they have visited the passage where a key can be found that sets $hasKey to “true”. The choice to enter the library doesn’t appear or is not selectable unless $hasKey is true, or the link will do something different - such as allow the player into the library instead of telling them “The door is locked” and turning them away. The “puzzle” is locating the key. Maybe it’s found by visiting another character and asking for it (the choice to ask for the key may also not appear unless the player has discovered the library door and knows they need to unlock it) or clicking a link to examine the stable floor where it might have been dropped.

The other major feature of QBN is “grind” which essentially means the player must do something multiple times to “grind” a variable up to a certain amount. Dating sims use this - you must visit or do something nice for a character enough times before new options are unlocked.

Let’s say once the player can enter the library they have access to a book that contains the research they need to set out on a quest. The player won’t be allowed to go on the quest until they’ve done enough research. Clicking the link to read the book may raise the “research” statistic by 1. The player may click several times and receive actual text regarding the story/plot/lore they need until the stat reaches 5, which unlocks the link to begin the quest. Or there may be a random chance - say based on their “focus” level (which can be increased by resting or decreased by doing other activities) they have a 50% chance of “successfully” acquiring the knowledge they need and increasing the research stat by 1 each time click the book to do research, so it may take some players extra time. They may want to raise “focus” to get a better chance of succeeding so they don’t have to try as many times. Or, the player might only be able to click on the book to do research once per day; doing so advances clock and they must leave the library and come back on 5 consecutive days to continue their research and get the stat to 5 before they can leave the area to set off on the quest. So the grind becomes less about the player solving a puzzle and more about time-management and potential skill/quality management to accomplish tasks in shorter amounts of time. The player might need to live in this town for a while and choose which days to spend in research, and which to do work to acquire money which they may also need on their quest which takes away research time, and this simulates a multi-day preparation for the quest during which other plot and story elements may occur to inform or distract the player. The player must “grind” their stats up to a level so they have the qualities they need to proceed along the story route they choose.

This is a very short version of how Fallen London mostly works. Fallen London also includes a “draw cards” mechanic for randomness, so until the player gets the card “A rumor about a quest…” none of these options may be available and the player may not know there even is a quest. The ‘deck’ may even be stacked so that they won’t be able to randomly draw the card to initiate this quest unless they’ve spent a specific amount of time in the town (another quality) so that the locals feel confident enough to tell them about the quest - “confidence” may be another quality and the player might need to grind enough daily work through other links to raise this high enough to even draw this card randomly and be eligible for the quest. So “quality based narrative” involves lots of qualities (perhaps hundreds in a big game, or thousands in an epic like Fallen London) that represent the player and the story/plot/logistical situation which opens up potential for cards to be drawn and other choices to be made. To go on the quest, the player must have randomly drawn the card for the quest to know about it, which requires “confidence” to be high enough and some luck, then the player must do enough research to qualify to take the quest, and they probably want to have enough money to support the endeavor. That is grind - the player deciding what to work on each day to raise enough stats to the point where something new will happen and more choices become available.

8 Likes

The discussions of Fallen London (and games like it) on this thread have been interesting to me, because some part of brain when I posted this topic was overlooking that style of game (and it’s been several years since I’ve taken a look at Fallen London.).

Yet these types of “hidden attributes” can provide some very interesting game play, especially when there are signs along the way that the attributes are being recorded and incrementally rewarded. (Bee is another game that was mentioned.). The player doesn’t need to see a number on a stats page, if they are reminded in other ways that they’ve made progress along a continuum.

6 Likes

“Clementine will remember that…”

The Walking Dead game would show these ominous messages and it was hotly debated how much these choices the player made would really change things or divert the plot over the course of a commercial episodic game. Even if they didn’t do much, many players suddenly became more invested in their behavior and this paralleled the television series that required difficult life-and-death decisions that often came back to haunt the characters. I believe some people reported that there were a couple places where the plot didn’t really change significantly, but the tone of certain conversations would change calling back to how the player reacted before.

It’s like theater: people say “it’s a different show every night” but that isn’t completely true: the script and the story and the blocking really doesn’t change, but an actor might read a line more angrily one performance and then sad the next time, which might give a set scene with the same dialogue a new meaning, and good actors “will remember that” and it can have a ripple effect on character arcs throughout the whole show, even if nothing actually changes.

Players of TWD often accused the game of “fake agency” but this goes along with my philosophy of giving the player the illusion of more gameplay and agency than there really is to keep the plot simplified. Whether or not those messages functioned diegetically or not, they served both as a potential indication of plot forks, but also the PC’s consciousness reminding the player the decisions they made had effects on other people for good or bad.

People play Fallen London for months and even years and it is at its heart a choice-narrative where the thousands of qualities operating under the hood is what makes everyone’s route through the game unique and keeps them coming back to continue. That along with the candle-regeneration system which meant the game cannot be binged all at once. Now the game is so enormous that I doubt you could do that even if the game allowed it.

ETA: The candle itself could be considered a quality - “the energy you have to accomplish things in each real time round before you must rest again and come back later.” It almost serves to split gameplay into what might be thought of as “days” in Fallen London (since there is no sun to differentiate!) though usually the candle would fully regenerate multiple times in a 24-hour period.

7 Likes

What style of UI is preferred for presenting choices in a puzzle-driven game?

This is a question that lends itself to more definitive answers. A lot of the players of choice IF, especially choice visual novels (my specialism) are doing so on mobile. An increasing proportion of them have disabilities of various kinds that influence their experience. There is also, and I cannot stress this enough, no single UI template to use in choice. This is different to parser, where many options delegate part of the UI choice to their interpreter. This means that choice authors have to be aware of things like font choice, colour and size in a way that a lot of parser creators don’t. (In parser, it’s primarily about not stopping the interpreter from making reasonable adaptations to the text).

A number of choice platforms will automatically resize and/or reflow content for mobile (and for different types of mobile). Make use of these options when available.

Mobile users often do not want to use on-screen keyboards for more than incidental writing (such as giving their character a name). It is certainly possible to have more typing required, but this will somewhat limit the audience. On the other hand, some people (even on mobile!) need a keyboard to be able to play IF at all, regardless of whether it is choice or parser. Thus, everything should be navigable using keyboards, but it should always be possible to skip text input sections (perhaps by having a default choice for cosmetic text inputs, and by having choices alongside type-in additional responses if in a choice-parser hybrid area of the game).

I would recommend that any choice game that plays in a browser respects the browser’s choice of font settings by default, offering its own choice in settings. This is because people who use browsers will already have set them to something they can use and to a font that exists on their device. Many browser-based choice options don’t even offer an alternative and there’s no need in that instance.

Everyone else (including anyone who has a browser-based choice game and feels they have compelling reasons to ignore the previous paragraph) should make sure there’s a choice of fonts. At least one should be sans-serif and resemble/be a familiar font to people who enjoy that style of IF. In some cases an engine will come with a font - if so, make that an option. It’s fine to have stylistic and fancy fonts, as long as alternatives exist. Oh, and if you want to do translations, please do yourself a favour and make sure there’s at least one (preferably two) fonts that work with each alphabet you’re translating!

High-and-low contrast colour options, as well as light and dark options, are good to have. Be wary of making the background red, however, particularly if that ever changes colour and you have any sort of “skip previously-seen text” option. That’s a good way to accidentally give someone a headache (or if sufficiently unlucky, a seizure).

I recommend at least 3 choices of font in engines that don’t figure out the size from the player’s browser: the engine default or whatever is comfortable for the author, a size comparable to caption size, and the biggest size that allows the text to remain visible. You can have more if you feel the gaps between these sizes are too big, and if all 3 of those fonts would be huge it’s OK to also have a smaller one. The caption-sized one is popular with people who play while multi-tasking or are Deaf. Some players will need the biggest font size possible. Obviously you, the author, needs a font that is comfortable because you will spend quite a while testing your IF. Nonetheless, test all your text and UI elements fit on the biggest font size even under stress, and that the smallest doesn’t look lost (justifying text and putting simple decorative elements near the justified side can help with this).

Make sure there’s enough room for the words! Parser rarely has to think about this, only about the effect the chosen quantity of words has. In many choice engines, it can be the difference between the entire sentence being visible and parts of it falling off-screen (in a way that may be impossible to read, even with scrolling). If there could be translations of your IF, make sure 1/3 of the text space is unused in the language you originally write the IF, so translators’ job is possible - but also be prepared to put the end of sentences on other screens or negotiate shortening sentences if necessary.

If using choice buttons for choices (a common choice), make sure choices make sense in the context provided. Not all choice engines show the question on-screen that the player is expected to answer, depending on rollback for understanding. Your player will appreciate it if the choices make some sort of sense even without that rollback.

Radio buttons, in my experience, rarely cause UI implementation difficulties in themselves. However, if your engine doesn’t do this for you, make sure there’s a separate confirm button, because radio buttons lend themselves to people selecting an option while mulling over whether they in fact wish to take it (instead of pressing the button only when sure this is the choice they wish to make, as often happens with buttons).

Don’t offer too many options. This can, in the UI, cause one of 4 problems:

  • Too much scrolling. Some players will accept quite a bit of scrolling thanks to social media platforms, but everyone has limits. Long scrolls should be reserved for optional moments where there’s an important reason not to make it no-scroll or a short/moderate scroll.

  • A temptation to reduce the size of UI items. This is a disaster on mobile - you can shrink buttons but people can’t shrink their fingers.

  • Too many similar options. Lots of coding work for the author and a threat of decision paralysis to the player, neither of which is fun.

  • A temptation to reduce the maximum size of the font. People with visual disabilities want to read the text too.

(On a similar note: if feasible to make screen-reader compatible or self-voicing, your choice IF should do so. Both, if you can figure out how. Many engines will do this for you, but it’s still on you to not accidentally disable this accessibility aid).

Also check the UI doesn’t provide accidental clues to the puzzles. Any clues they do provide should be deliberate. Give your players confidence that if they see something unusual in the interface, that this matters and that they are good players for catching onto your design decisions;.

Some choice IF have histories that allow you to understand what you’ve done. Sometimes, these allow players to quickly skip back to a previous point faster than rollback would. This is a useful accessibility aid (allows players to remind themselves what happened last time they played) and encourages exploration. Specifically for puzzles, it can also show approaches that have previously worked, thus helping with problem-solving for future puzzles. Consider adding this.

If you have an inventory in choice IF, consider having a method of looking at it at the player’s choice.

Add accessibility aids that you can think of, can easily add and make sense for your IF. The ability to turn off spiders and help arachnophobes makes no sense in a horror centering around a spider lair, but is worth adding to a slice-of-life choice IF where one text passage has a spider minding its own business in a corner for pure decoration.

Customising the UI is a good advanced idea if your IF would benefit from extra options (or the removal of ones that don’t serve the IF) and you can figure out how to do this. Having UI features react to how the player is playing can be a good idea, but make sure anything expressed in graphics is also expressible in a screen-readable format (for example, by allowing an extra screen with this information in text at times when that is useful).

Your IF engine may have custom UIs other people have made that include some of these ideas and/or include other things you think are cool. Investigating them for possible inclusion is a good idea.

I shouldn’t have to say this, but bug-test and play-test your UI, especially if you deliberately modify your chosen engine’s default options.

9 Likes

I’ve always heard that some people have trouble with text flow with sans-serif fonts, but are there problems with serif fonts as well? I know some fonts are - if not uncomfortable, just weird to read a lot of text in. I always was told “if it comes down to one font, choose serif.” “Book-ish” fonts are preferred, and many fonts are great for headers or headlines or decorative text, but suck to read blocks of body text in. There are also preferred fonts for people with dyslexia.

(There it in the first example - serif fonts can trip up people with dyslexia, so in their case you don’t want the letters to flow together for speed.)

I remember being surprised what colors don’t work together for people with color blindness. If you need a link to stand out from the rest of the text, it often works better to make links a contrast/brightness change rather than a color change for people with reduced color sensitivity.

6 Likes

Also there are apps that simulate different kinds of color blindness. Part of my UI design process for visual games is trying to navigate gameplay while looking through each of the filters to make sure I can tell what’s going on.

I don’t think I’m dyslexic but if a body of text uses serif fonts, I read almost 4 times slower and my eyes hurt. I need all of my text-heavy interfaces to be sans-serif, especially because my base reading speed is already slow compared to the average.

I also know people where serif fonts allow them to read faster while sans causes similar slowdown and eyestrain.

This is not a one-size-fits-all accessibility thing, and it needs to be a toggle option to actually be actually accessible.

7 Likes

It’s always appreciated when people do this! My own color blindness is not very severe but it comes up annoyingly often in certain kinds of UIs.

6 Likes

I’d like to preface my comments on your comment by saying that if your choice IF has a choice of at least three fonts, and is written in a Latin alphabet or another alphabet where serif fonts or their analogues exist, making one of the font options serif/serif-analogue is a good idea.

Some people nowadays aren’t taught to read cursive or don’t get to practise looking at non-sans-serif text much and struggle to decipher certain fonts, regardless of whether they have dyslexia or not. Some are emerging readers in the language and benefit from being able to easily distinguish particular characters. Some people are reading on dodgy screens, or in sub-optimal lighting conditions, which sometimes makes serif more difficult to interpret (but not always and not for everyone). There was a time where having dyslexia was automatically thought to equate to particular difficulty with serif fonts, but later research found that wasn’t necessarily true. These are all good reasons to make a sans-serif font of some description one of the choices if the engine doesn’t get the font information from another location such as the browser.

My understanding is that the best font for someone with dyslexia is the one they consider the most familiar and comfortable to use. This guided some of my advice on font options (some categories of choice IF, and some choice IF platforms, are sufficiently strongly associated with a particular font that making that one of the options is a significant help, and browser-based IF defaults to a font commonly used by people who use that browser unless the user overrides it - in which case it is likely overridden by a font the user uses and has available to them). Unfortunately, most non-browser-based choice IF isn’t quite that flexible.

6 Likes