Twine and accessibility (blind players)

Please specify version and format if asking for help, or apply optional tags above:
Twine Version:2
Story Format: 3.1

Hey all,

I would like to know whether Twine stories are accessible to blind players. I ran a story on a mac with Apple’s “speech” feature (not voice-over, though, because it’s super complicated to configure). And I also did the same with voice-over, on the iPhone—again, not very confident about the configurations I have.

It seems to work okay, except for hidden hooks, which appear after the player clicks on links. The voice-over doesn’t read them—or I’m not doing it properly. Does anyone know if including hidden hooks renders a Twine game inaccessible to blind players?

Thanks!

3 Likes

As far as I’m aware, of the two main story formats (Harlowe and SugarCube) only SugarCube has had any ARIA (Accessibility) support deliberately added to it. I don’t know if that support includes speech.

1 Like

I just gave it a whirl on Voiceover on Safari and was not impressed. I was able to access all the text with a screen reader but the links between passages weren’t actually links (as in <a />) so it was very hard to tell what the choices were. This would be easy for devs to fix though.

Surprisingly, the (link:) macro worked pretty well, but that’s only because the content appeared after where the link was. I think a hidden hook would display correctly but there’d be no way to know that another part of the page changed.

As a side note, sections using the (live:) macro were a big problem, as the cursor would jump to the top of the section every time the live area refreshed.

Overall, I don’t believe it’s possible to author content accessibility in Twine, but if the page link issue were fixed and an author didn’t use some of the dynamic content macros, then a Twine story could be accessible. It’s a pity because this medium really should be accessible to everyone.

3 Likes

Based on the syntax of the macros you mentioned it appears you were testing Harlowe, and not “Twine” (the GUI application) or the other Story Formats that application includes. So while your thoughtful observations at correct regarding Harlowe they may not be so for the other story formats.

As I stated earlier, (as far as I recall) only SugarCube has had any ARIA (Accessibility) support deliberately added to it.

1 Like

Yes, thanks @Greyelf

It does sound like I mean Harlowe and not Twine. I’ve only used Twine with Harlowe so I wasn’t quite sure where one stopped and the other started. Also, OP mentioned story format 3.1 which I think means Harlowe 3.1.

Do you have a good story for me to test SugarCube for accessibility? I’m curious how well it does.

1 Like

Have you seen the IFTF’s accessibility testing report? At the end of that document (just above the credits) there are links to the small Inform 7, Twine/Harlowe and Twine/SugarCube games that they used for testing.

It has been a while, so I don’t remember how many features they exercised, but at least it’s a small thing that you know was written in SugarCube.

At the other end of the spectrum…let’s see. Heretic’s Hope has a bunch of fancy styling, and…it uses cycling links, but I’m not sure it ever reveals hidden text.

Chuk and the Arena was also SugarCube. It used colored text fairly extensively, but only as a reminder: objects are always described as being a certain color as well.

3 Likes

In addition to what other people have said, it’s also about how you make your game.

In most cases, accessibility issues are more likely to come from the developer’s design decisions, than from the story format itself, though it can contribute, and I would agree that SugarCube is the better story format for accessibility. However, you can make the defaults in a story format extremely disabled-friendly, but if the developer ignores/doesn’t care about accessibility standards, then the end result can still be a pretty poor experience for people with visual, auditory, physical, and/or cognitive impairments.

On the plus side, developing in HTML with Twine means that you have access to all sorts of online accessibility testers, which can help you test individual pages, custom elements, and expose general HTML problems, and even browser extensions (such as the axe - Web Accessibility Testing extension (+Firefox)), which work better for testing passages.

So, while an accessibility-friendly story format is a good first step, the majority of the effort in remaining accessible lies in the hands of the developer and their design decisions.

Anyways, if you need any pointers with SugarCube and accessibility, feel free to ask. I’ve been doing a lot of research in that area and I’m pretty familiar with the SugarCube story format.

Good luck with your project! :smiley:

5 Likes

I can confirm that Twine stories created with Harlowe are inaccessible on Windows (using Narrator and NVDA), Mac OS X (using VoiceOver), and on Linux (using Orca. Of course, neither is the Twine application itself, which has honestly been the case sinse its creation. I would like to see Harlowe change their links to elements, as would I like to see Twine become more accessible to the visually impaired.

7 Likes

I suggest you add a related Issue to the project’s BitBucket repository, as I’m uncertain if that story format’s developer visits this forum…

1 Like

Hi, I’m very interested in developing and playing accessible interactive fiction. Any help you can give would be greatly appreciated. I’ve opened up a new thread on the subject in general questions titled accessible interactive fiction

Thanks,
Jeff

3 Likes

Hi, I’m blind and I make games in Harlowe for Windows.
I have 11 games to my credit and am working on the twelfth. Blind players do not write to me that they have any problems with the controls.
In the last four games, I’ve added audio effects and sound effects.
Unfortunately, my games are in the Czech language, so you probably won’t play them much.
In the last game I also solved a duel / fight that I put on the timeline and at the last second the link for the action appears. Either the player manages to react and wins, or he doesn’t and loses. Four beeps are heard before the player has to react.

Jiří Škraba

6 Likes

As I mentioned on the other thread, and as was mentioned earlier on this one, the accessibility of Twine games varies from game to game based more on design decisions and less on story format. I don’t remember the story format of every Twine game I’ve played, but I assume a range of formats since I’ve played a fair few games. I’ll look into the specifics there, where the information is available.

As for coding, I remember asking on here a few years back what the most accessible way to code my own Twine games would be, and I was directed to Tweego, a command line compiler for Twine story files, written in the Twee notation. It’s available for Linux, Windows, and MacOS.

The documentation says:

Tweego should be compatible with all story formats—i.e., those written for Twine 2, Twine 1 ≥v1.4.0, and Twine 1 ≤v1.3.5.

The latest version of Tweego was released in February 2020. I don’t know much about the development of various story formats since then, though I imagine more modern versions of those formats may cause it problems. Please correct me if I’m wrong.

I might play around with this in the coming weeks. I appreciated the recommendation in 2020, and even downloaded the software, but got distracted by the parser-based options available, which were more accessible out of the box, and some of which I already knew. I’ll report my findings in a separate thread for anyone who’s interested. I’ll link to the thread here when it’s up.

Ultimately, it would be best if we could get equal access to the main Twine software itself, it’s a medium which seems better suited to development in an IDE, and I’m saying this as someone who generally doesn’t use IDEs for anything. Personally, I’d love to experiment in the choice-based environment, the medium appeals to the way I write and create stuff that isn’t games. For me, parser-based is amazing, but I often find the multiple layers and complexity get in the way of me just finishing a game. not to say that choice-based can’t be multilayered and complex in its own right, but it feels different to me.

2 Likes

I think it might be quite easy to include a piece of JavaScript code that parses the Harlowe passage and injects hidden dummy HTML anchor tags that mirror the Harlowe links. Is this something that interests anyone here?

I have code already working with Harlowe (no hacks required) that does something very similar to what I’ve just described. Currently, it would be easy to implement by hard coding each Harlowe link, but I think it might be able to be automated.

Anyway, let me know if anyone wants to pursue this. I just need to know what the proper HTML code links need to look like and I can post a possible solution with a chunk of code to simply paste into the Harlowe story.

3 Likes

Hello again,
I tested NVDA and it can’t handle certain controls, but a simple game where you can answer A/ B/ c/, the game is manageable.
The narrator is much worse and does whatever he wants.
The Jaws screen reader is quite widespread in the Czech Republic, and games can be played and created with it in all Twine templates. I tried everything with Jaws, but in the end I chose Harlove.
It would be nice if the developers took into account the fact that text games are actually the ones that can be played by blind players.

Jiří Škraba

3 Likes

The template file of each of the main Story Formats is a single page web-application, that contains:

  1. the HTML elements that make up that Story Format’s default layout.
  2. the CSS rules use to apply the default styling to that layout.
  3. the JavaScript based engine that supplies all the runtime functionality.
    eg. the Macros and core features available to the Author.
  4. marked areas of the template in which the Author’s Passage meta-data and custom JavaScript & CSS will be placed.

When a Twine / TWEE compiler (1) creates a Story HTML file it takes a copy of the selected template file and embeds the project’s Passage meta-data and custom JavaScript & CSS at the marked positions inside it.

As the number & purpose of the marked areas in a Story Format (Twine 2.x compatible) template file haven’t changed since TweeGo v2.1.1 was released it is still able to be used with the Story Format versions that has were produced after that.

(1) like Tweego and the one built into the Twine 2.x application.

3 Likes

Giving this topic a bump, since it’s old and I would like any updates.

As of March 2024, is there a version of Twine that best works with screen readers right out of the box? Is it still SugarCube? JAWS support is great but I would like something that works flawlessly with NVDA too if possible.

If it matters, I’m interested in writing basic, text only games without images. But I want everything to be as navigable as possible with screen readers with minimal fuss. I’ve really never used Twine to make anything before, so if there are any tips for accessibility, I would appreciate them. Thanks!

3 Likes