24 lines
1.8 KiB
Markdown
24 lines
1.8 KiB
Markdown
# Accessibility mod — documentation
|
||||
|
|
|
|||
|
|
Research and planning for making *Sulphur Memories: Alchemist* 0.4.2 blind-accessible.
|
|||
|
|
|
|||
|
|
| Doc | Contents |
|
|||
|
|
|---|---|
|
|||
|
|
| [01-architecture.md](01-architecture.md) | How the game is built: states, console, level model, keybindings, where text already exists. |
|
|||
|
|
| [02-hooking-strategy.md](02-hooking-strategy.md) | How to attach the mod with (near) zero edits to game files. |
|
|||
|
|
| [03-implementation-plan.md](03-implementation-plan.md) | Six phases, each independently testable. |
|
|||
|
|
| [04-open-questions.md](04-open-questions.md) | Decisions needed before/while building. |
|
|||
|
|
| [05-decisions.md](05-decisions.md) | Answers given so far, and what they imply. Supersedes Q1/Q2/Q7/Q10. |
|
|||
|
|
|
|||
|
|
## The short version
|
|||
|
|
|
|||
|
|
Three findings shape everything:
|
|||
|
|
|
|||
|
|
1. **The game is already keyboard-complete.** All 28 states implement `keypressed`; there's a full rebindable-keys system with contexts. The accessibility gap is that *nothing announces what is focused* — not that things are unreachable. This makes the job much smaller than a typical mouse-driven game.
|
|||
|
|
|
|||
|
|
2. **The game already writes the text we need to speak.** `console.print` is a single chokepoint for all log messages. `level.getCursorMessage()` returns tile/creature descriptions. `getCursorPopupStats()` feeds the item popups in five screens. We are mostly *re-routing existing strings to speech*, not writing a description engine.
|
|||
|
|
|
|||
|
|
3. **Everything is a `require`d singleton, and `debug.getupvalue` works.** Module functions can be monkey-patched in place, and the file-local `selectedOption` variables in menu states are readable from outside. A one-line bootstrap in `main.lua` is the only unavoidable edit.
|
|||
|
|
|
|||
|
|
Proposed footprint: **1–3 lines added to `main.lua`**, everything else new files under `accessibility/`. A git baseline tagged `vanilla-0.4.2` makes re-application on future versions a rebase.
|