Skip to main content


Excited to announce that my recent work integrating #AccessKit into #Bevy was recently merged, making accessibility (mostly) on by default in the upcoming 0.10 release due out soon if not today.

The one exception is Linux, where it is feature-gated pending reduction in dependency size and integration with non-experimental screen readers and forks.

I think this may make Bevy the first general-purpose game engine with accessibility in its core (I.e. not a bolted-on optional plugin or a series of partial solutions. In any case, it's the only game engine with accessibility features that I can use as a blind developer, though #Godot also seems to be making strides in this direction as well.

in reply to Nolan Darilek

what do you use to enable yourself to be able to develop software while blind? How do learns to use new software with randomly placed buttons everywhere?
in reply to Nolan Darilek

I'm curious, what does accessibility looks like for a game engine? For UIs I have some vague idea, but for games it seems like it would be highly dependent on the type of the game.
in reply to Soso

Exactly this. For a game engine, accessibility looks like the ability to maintain a tree of accessibility nodes which a screen reader can interrogate and present. In the game engine itself, I'd expect any in-engine UIs to push UI updates to the accessibility API, meaning my screen reader knows whether a button, label, editable text, etc. is on-screen and presents it to me.

In games themselves, I'd say the possibilities are fairly unexplored. Something like a roguelike could, for instance, treat its map as an accessible object with the grid role. Each tile would then be a cell with whatever item(s) are visible on it as its description. Ideally the game would have keyboard controls, but even without them, it would be instantly possible to explore the map with a screen reader, route the mouse to and click on individual tiles, etc. Similarly, the game log could be exposed as text and a live region, meaning it gets read whenever it changes and can also be reviewed with screen readers.

Obviously that doesn't just happen for free, and someone has to do that work. But now with Bevy someone can, and doesn't get bogged down in either having to re-implement that logic on each accessible platform, or avoiding footguns necessary to setting things up (E.g. keeping the window invisible until accessibility is initialized, which is needed under Windows and handled automatically by this integration.)

⇧