Skip to content

Accessibility layer for blind players — working implementation of the roadmap's Accessibility options#2

Open
piapenia wants to merge 1 commit into
Simoxus:devfrom
piapenia:accessibility-layer
Open

Accessibility layer for blind players — working implementation of the roadmap's Accessibility options#2
piapenia wants to merge 1 commit into
Simoxus:devfrom
piapenia:accessibility-layer

Conversation

@piapenia

Copy link
Copy Markdown

Hi! I'm a blind, IAAP-certified digital accessibility specialist (WCAG 2.2) and a native screen reader user (NVDA). Together with an AI coding agent working under my direction and QA, I built the accessibility layer in this PR on top of your dev branch: it makes the game playable without sight, implementing the "Accessibility options" item from your roadmap. (Your repo has issues disabled, so I'm introducing myself here — happy to move the conversation to Discord.)

What this PR adds (tested by me, playing your Testing_Core map blind)

  • Proximity sonar: spatialized semantic sounds from the nearest reachable interactable — doors knock on wood, pickable items chime — parking-sensor cadence, wall occlusion (no sonar through walls), double beat in interaction range, plus an on-demand area scan (pitch encodes each target's height, TLOU-style).
  • Object navigation (KOTOR-style): Q/E cycle targets with spoken type, distance and relative direction ("Door, 4 meters, ahead-right, 1 of 3"); Enter auto-walks and interacts; manual input always cancels.
  • Mouse-free camera: smooth turn keys, announced 45-degree snap turns, 180-degree turn, spoken compass. Pitch deliberately unmapped (never drifts without a mouse).
  • NVDA output via the official NVDA Controller Client (LGPL 2.1): room announcements ("You entered: Light Containment Zone") powered by your own RoomInstance system, scene descriptions (including alt text I wrote for the menu artwork), health/sanity/crouch announcements, target callouts, on-demand status report, a pause-time audio cue glossary, and a UI reader ready for your future menus.
  • Safety net: fall announcements + auto-rescue to last safe ground (I fell off the edge of the test map in total silence — that incident is this feature's origin story), ledge warnings, stuck detection, on-demand rescue key.
  • Gamepad support incl. DualSense: d-pad navigation, L3 scan, R3 compass, and purposeful haptics (subtle tick on wall contact, damage rumble scaled by hit size).

Engineering notes

  • Fully additive: one new feature folder (Assets/_Project/_Features/Accessibility/, following your conventions) + CC0 sounds in StreamingAssets/A11y; zero edits to your scripts, scenes, prefabs or input asset. Player components attach at runtime through Core.Player.
  • 60+ batchmode smoke tests (-executeMethod AccessibilitySmokeTest.Run); licensing table included (CC0 audio, LGPL 2.1 NVDA client distributed unmodified with its license).
  • Full documentation, guideline mapping (gameaccessibilityguidelines.com) and accessibility-friendly engineering recommendations for your remaining roadmap items (each grounded in something we actually hit): see ACCESSIBILITY.md in this PR.
  • If you'd rather ship accessibility as a mod once your Lua modding API matures, I'm happy to go that route instead — let's discuss which events/interfaces the API should expose (IInteractable and your Core facade already made most of this possible).
  • Bonus finding: FMOD for Unity's bank copy (BuildStatusWatcher) never fires in -batchmode CLI builds; we work around it by calling EventManager.CopyToStreamingAssets explicitly in our build script — may be worth documenting for contributors.

I do accessibility reviews professionally; consider me a standing QA resource for anything sound/navigation related. Contact: here on GitHub, or find me on any social network as @blindaudiogamer.

— María Pía Peña Foissac (@blindaudiogamer)

A fully additive gameplay accessibility layer (zero edits to existing
scripts, scenes, prefabs or input assets), built and QA-tested by a blind
IAAP-certified accessibility specialist. Implements the roadmap's
'Accessibility options' item for blind play:

- Proximity sonar with semantic sounds, wall occlusion and on-demand
  area scan with height-encoded pitch (B / L3)
- KOTOR-style object navigation: Q/E cycle targets with spoken distance
  and direction, Enter auto-walks and interacts (d-pad on gamepads)
- Mouse-free camera: turn keys, announced 45-degree snap turns, spoken
  compass; NVDA screen reader output via the official controller client
- Spoken room announcements, health/sanity/crouch state, scene
  descriptions with alt text for menu artwork, UI reader for menus
- Safety net: fall announcements, auto-rescue to safe ground, ledge
  warnings, stuck detection with on-demand rescue (R)
- Purposeful haptics on gamepads: subtle wall ticks, damage-scaled rumble
- Audio cue glossary while paused (G); status report on demand (H)
- 60+ batchmode smoke tests; CC0 sounds; LGPL 2.1 NVDA client with license

See ACCESSIBILITY.md for the full guideline mapping
(gameaccessibilityguidelines.com), architecture notes and
accessibility-friendly engineering recommendations.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant