Skip to content

Repository files navigation

Graveyard Keeper — Screen Reader Accessibility

A screen-reader accessibility mod for Graveyard Keeper (Unity / Mono), built on BepInEx 5 + HarmonyX, speaking through Tolk (NVDA, SAPI, etc.). It patches the game at runtime and never modifies the game's own files — BepInEx only adds files alongside the executable.

⚠️ Work in progress — not yet playable. The main menu is fully verified, and most narration (dialogue, inventory, crafting, management) is implemented, but the mod has not had a full in-game pass yet. There are no releases; install only if you want to follow development or contribute testing.

Status

The roadmap distinguishes these verification levels:

  • In-game verified: tested in the real game with NVDA/Tolk.
  • Implemented/build-verified: code exists and dotnet build src/GraveyardAccessibility.csproj -c Release succeeds, but still needs a full in-game pass.
Phase Status Included now
0 — main menu Done, in-game verified Mod load speech, focused menu entries, mouse hover, confirmation dialogs. Menus are driven by gamepad or mouse; the game disables arrow-key menu navigation in mouse/keyboard mode.
1 — dialogue/story Mostly done, build-verified NPC/player and object-anchored speech bubbles, CornerTalkGUI narrator/thought messages, focused answer options, text windows, cinematic/perspective text, tutorials, and the new-body-arrived notification.
2 — inventory/tooltips Mostly done, build-verified Item cells, inventory/chest/toolbar focus, visible tooltips, collected drops, item count selector, equip-to-toolbar flow. Money pickup and any direct toolbar-only edge cases still need coverage.
3 — management Mostly done, build-verified Crafting menus including special resource/mixed/alchemy flows, vendors, tech tree and tech unlock dialogs, body/grave/soul screens, prayer crafting/report flows, in-game menu categories, map and NPC list summaries. Needs a full in-game pass for verbosity and edge cases.
4 — HUD/status Partially implemented/build-verified View/Back + RT reads the visible HUD state on demand: day, approximate time, energy and health. The localized loading label is announced. Quests, buffs, sleep/wait and options controls remain pending.
5 — real-time world Partially implemented/build-verified Positional sonar, the navigable nearby-object list, and localized interaction-prompt narration exist but still need a full in-game pass. Area announcements, virtual cursor, fishing and dungeon support remain pending.

For players (install)

  1. Have a screen reader running (NVDA recommended).
  2. Run install.bat and approve the administrator prompt. It finds your Steam copy of Graveyard Keeper automatically (or asks for the path) and copies the mod in.
  3. Launch the game. The first launch is slower than usual while BepInEx initializes. You should hear "Graveyard Keeper accessibility loaded." at the main menu.

To remove it, run uninstall.bat. It deletes only the files the mod added, leaving the game exactly as it was.

Language

Game text (item names, dialogue, menus) is always spoken in the game's own language. The mod's own announcements (prefixes like "Craft queue", sonar categories, directions) default to English. To switch them, set Language = es (or another code) under [General] in BepInEx/config/com.accessibility.graveyardkeeper.cfg — the mod then loads BepInEx/plugins/lang/<code>.lang, falling back to English for any key the file does not define. A Spanish translation (es.lang) ships with the mod; to add another language, copy it, translate the values, and keep the keys.

Gamepad accessibility controls

  • Press and release View/Back (the former Select button) to open the in-game inventory/menu as usual. The action occurs on release so the button can also act as an accessibility modifier.
  • Hold View/Back and press RT to hear the current day and weekday symbol, approximate position in the day/night cycle, and energy and health rounded to the nearest 10%. This matches the precision of the visual clock and unlabelled bars.
  • Use LB/RB while exploring to browse the nearby-object list. These buttons retain their normal tab-switching behavior inside menus.

For developers (build)

Requirements: .NET SDK (8.0+) and a local copy of the game at Graveyard_Keeper/ (kept out of git). BepInEx must already be unpacked into plugin/ (see below).

dotnet build src/GraveyardAccessibility.csproj -c Release

The build drops GraveyardAccessibility.dll straight into plugin/BepInEx/plugins/, so the plugin/ tree is always a ready-to-ship package.

Testing against the local copy

dev-install.bat installs the mod into the repo's own Graveyard_Keeper/ test copy (not the Steam install) so you can iterate without touching your Steam files. dev-uninstall.bat removes it again. These target Graveyard_Keeper/ next to the script and need no admin rights. Rebuild, run dev-install.bat, launch the game.

The regular install.bat / uninstall.bat are for distribution: they auto-detect the Steam copy. Internally both installers accept -GameDir <path> to override the target folder; the dev scripts just pass the local copy's path.

Layout

src/                     C# source (this repo's code)
plugin/                  The distributable mod, copied verbatim into the game folder
  winhttp.dll            BepInEx doorstop
  Tolk.dll               Screen-reader bridge (lives in game root for P/Invoke)
  nvdaControllerClient64.dll
  BepInEx/
    core/                BepInEx + HarmonyX (unpacked from the official release)
    plugins/
      GraveyardAccessibility.dll   ← our compiled plugin
installer/               PowerShell install/uninstall logic
install.bat / uninstall.bat
docs/                    Engine analysis and phase notes
Graveyard_Keeper/        Local game copy (gitignored — never committed)

Setting up plugin/ from scratch

BepInEx's own binaries are not committed. Download BepInEx 5.4.x x64 and extract it into plugin/, then build (the plugin DLL is produced by the build). Tolk.dll and nvdaControllerClient64.dll are already committed in plugin/.

License

This mod's own code and documentation are released under the MIT License.

Bundled third-party binaries keep their own licenses:

  • Tolk (Tolk.dll) — LGPL-3.0, © Davy Kager.
  • nvdaControllerClient64.dll — LGPL-2.1, © NV Access.
  • BepInEx (not committed; downloaded at setup) — LGPL-2.1.

Graveyard Keeper itself is © Lazy Bear Games; this project contains no game assets or game code.

About

Screen reader accessibility mod for Graveyard Keeper (Unity, BepInEx) — work in progress

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages