Accessibility mod for Kingdoms and Castles focused on screen-reader support, spoken menu navigation, and keyboard-driven gameplay navigation.
The mod adds spoken feedback for:
- game load and save-load events
- main menu and settings navigation
- gameplay map navigation
- building placement and build menu navigation
- gameplay panel access such as island info, worker/job views, and related UI
- island summaries, keep-relative navigation, resource announcements, and other accessibility-oriented helpers
Speech output is provided through Tolk, with direct NVDA fallback handling when needed.
- Windows version of Kingdoms and Castles
- a working screen reader such as NVDA
- the game's mod loading system enabled through the normal
modsfolder
Build the project or run the stage script, then copy the staged mod/kc-accessibility/ folder into the game's mods directory so the final structure is:
KingdomsAndCastles_Data/
mods/
kc-accessibility/
info.json
ScreenReaderAccessibilityBehaviour.cs
ScreenReaderLoadMod.cs
keybindings.json
Tolk.dll
nvdaControllerClient64.dll
...
This mod is packaged as source files plus metadata and native speech DLLs, not as a single mod DLL. The native speech DLLs must remain beside the mod files.
Build the project from the repository root:
msbuild src\kc-accessibility\kc-accessibility.csproj /t:Build /p:Configuration=DebugThe post-build step stages the mod into mod/kc-accessibility/.
To package the staged mod into a distributable zip, use:
cmd /c scripts\package-mod.cmdThat creates dist/kc-accessibility.zip.
Deploy the staged mod with:
cmd /c scripts\deploy-mod-to-game.cmdGitHub Actions builds and releases the mod on Windows when you push a tag that starts with v, for example:
git tag v1.0.0
git push origin v1.0.0The workflow:
- builds
src\kc-accessibility\kc-accessibility.csprojinRelease - stages
mod/kc-accessibility/ - zips that staged mod folder
- publishes the zip as a GitHub release asset
src/kc-accessibility/mod sourcelib/required game and native dependenciesscripts/stage and deploy helpersdoc/public documentationlocal/ignored local-only research and notes
The mod writes explicit runtime logs intended to support manual accessibility verification. When testing changes, check:
- the mod-specific
output.txt - the game's general mods log
Keep logging stable and meaningful. Accessibility behavior in this project is verified primarily through build success plus in-game testing and log review.
mod/is generated output and should not be edited manually- deployed game files should be updated via the deploy script, not by hand
- local-only investigation material belongs under
local/, not in tracked source