Low-vision accessibility for Cellular Cities


This devlog goes over making Cellular Cities more accessible by adding audio description of levels using Godot’s built in text to speech. The approach I’m using is inspired by blind accessibility in chess sets, which worked as a good starting point for communication of objects on a grid. The key components are communicating the player's current cursor location and the level layout.

Design Challenges: 

  1. How to communicate the initial level setup? 
  2. How to communicate the guide?
  3. How to communicate cursor location?

Control setup:

  1. How is initial enabling of accessibility options handled?
  2. How to approach alternative control schemes?

Design goals:

  1. “Total recall” - Information read out by the game shouldn’t be one and done (APX pattern), if missed the player should be able to prompt it
  2. “Flexible” - Players should have pace of speech, volume, voice, etc (Games for Blind Gamers wiki advice)
  3. “Preserve experience” - Information should support wider experience goals

Final design:

The final design has 4 main components: the Cursor, the Level Display logic, the Guide, and the Startup. 

Cursor:

Controlled by keyboard or controller. When the cursor changes tile it reads out the building present and the cursor's location.

Level display:

Each tile is read out.

Then the buildings that must be placed are read out.

Upon placing a building the name of the building and its location is read out.

Guide:

On pressing G the Guide will open, and TTS will read out each building in the level’s likes and dislikes. Pressing G again will shut the guide, and interrupt text to speech if still playing. 

Startup & Menus:

On starting the game it will default to text to speech being on, giving players the option to turn it off or go to the settings menu to adjust it on startup.

The settings menu also contains controls for rate of speech and volume, as well as key rebinding for the silence speech option.

Menus are read with a standard approach of whatever item is being focused is read out.

Implementation:

At the moment I’m using Godot’s built in screen reader, this is primarily as I’m able to test it more effectively and communicate with it more easily. 

Potential future improvements:

  1. There's currently a bug with focusing on voice changing which needs addressing for to enable keyboard only control (most likely by changing the type of ui element to a list)
  2. A button to skip current text vocalisation.
  3. JAWS and NVDA support. 
  4. Guide navigation, so a player can select a building to hear its likes/dislikes
  5. Option to change between hold and toggle for speech silence
  6. Cursor variants: I’d like to add two variants of cursor, one of which “locks” to the playable spaces, the other of which lets you 1 button cycle through the placable spaces 
  7. Setting saving, this currently doesn’t work due to the game being HTML5
  8. Rebindable keys

Iterations:

  1. Level read:

Placeable tiles and their neighbours in the level from top left to bottom right on level startup. This is the key information for solving the puzzle. 

It can then be triggered again at user command.

Moving the cursor over a tile reads out that tile’s contents (i.e. what building it contains)

Issues:

Often contains redundant information (for example if two placeable squares are adjacent), it's also difficult to keep track of as the information moves in unexpected ways as it goes through neighbours

How does it update the player after their moves?

  1. Playspace read:

Describes the neighbours of each placeable square. The list of buildings to be placed is then read out

Upon changing the cursor tile, the tile and its neighbours are read out.

Upon placing a building the next building name is read out

Upon undoing, the next building to be places is read out

Issues:

The neighbour reading is very slow and repetitive, it reduces the feeling of exploring a space, while still not giving a clear picture of the level.

Files

CellularCity.zip Play in browser
Feb 14, 2024

Get Cellular City

Leave a comment

Log in with itch.io to leave a comment.