Introduction
Monster Train 2 Accessibility is a screen reader and keyboard/controller accessibility mod for Monster Train 2. It adds spoken output, focus navigation, contextual information buffers, gameplay event announcements, and configurable mod keybindings.
Features
- Speech output through Prism, with support for common screen readers and speech backends.
- Keyboard and controller navigation for menus, combat, rewards, shops, map screens, run setup, challenge screens, Soul Savior, and the compendium.
- Contextual buffers for cards, creatures, artifacts, rewards, UI text, and event history.
- Combat event announcements for turns, resources, card plays, unit changes, Pyre health, artifact triggers, and more.
- Presentation-aware card, artifact, reward, creature, merchant, challenge, and compendium details.
- Rebindable mod keybindings for keyboard and controller.
- Localized mod text through the mod localization system.
Links
- Monster Train 2 on Steam
- Monster Train 2 Accessibility releases
- Monster Train 2 Accessibility repository
Installation
Installer
The recommended install path is the installer. Download MonsterTrainAccessibilityInstaller.exe from the
latest releases page, run it, and choose your Monster Train 2 game folder when prompted.
The default Steam path on Windows, which the installer assumes to be the case, is:
C:\Program Files (x86)\Steam\steamapps\common\Monster Train 2
After installation, launch Monster Train 2. If installation worked, the mod should initialize when the game starts and begin speaking UI focus.
Manual Installation
-
Download the latest
MonsterTrainAccessibility.ziprelease. -
Extract the zip into your Monster Train 2 game folder.
-
The default Steam path on Windows is:
C:\Program Files (x86)\Steam\steamapps\common\Monster Train 2 -
After extraction, the game folder should contain files such as
winhttp.dll,doorstop_config.ini,prism.dll, and aBepInExfolder. -
Launch Monster Train 2.
If installation worked, the mod should initialize when the game starts and begin speaking UI focus.
Updating
To update, either launch the installer and hit update or, if doing a manual install extract the latest release zip over the existing game folder and replace files when prompted.
Uninstalling
The installer has an uninstall option, but if you'd like to manually remove the mod, remove the following from the game's directory.
winhttp.dlldoorstop_config.ini.doorstop_versionprism.dll- the Monster Train Accessibility files under
BepInEx\plugins
Getting Started
After installing the mod, launch Monster Train 2. You should hear focus announcements as the game enters its first screen or main menu.
Basic Navigation
Use arrow keys, the D-pad, or the left stick to move through accessible menus. Use Enter or the controller confirm button to activate focused items. Escape or the controller cancel button backs out of many screens.
The mod adds its own review and information commands. Press F1 to open context-sensitive help. Press Ctrl+M to open mod settings.
Help
Press F1 to open the help screen. The help screen lists mod actions that are currently available on the active screen. Use up and down to read the help entries. Press F1 again, Escape, Enter, or the usual cancel/confirm input to close it.
Do note that, due to some unfortunate decisions, the mod currently supports only whatever actions it adds beyond the base game. A full listing of keyboard controls for both the mod and the game is included later in the document.
Buffers
Many focused elements have more information than should be spoken every time focus lands on them. The mod puts that extra information into buffers.
For example, when focusing a card, the focus announcement can stay concise, while the card buffer contains full card details. Use Ctrl+Up and Ctrl+Down to move through items in the current buffer. Use Ctrl+Left and Ctrl+Right to switch between buffers.
Controller buffer navigation uses the right stick by default.
Mod Settings
Press Ctrl+M to open mod settings. Settings include event announcements, element behavior, and mod keybindings. Keybindings can be changed for keyboard and controller.
Controls
This page lists both Monster Train 2 game controls and mod-specific controls.
Game controls are the native actions exposed by Monster Train 2's own key mapping system. They can be changed in the game's Settings, Key Mapping screen. Mod controls can be changed in the mod settings screen under Keybindings.
Game Controls
These defaults come from the game's input setup. Keyboard mappings can be rebound in the game's settings. Gamepad labels are written as Xbox-style names; other controllers may show different button glyphs in game.
| Game action | Default keyboard | Default controller | Function |
|---|---|---|---|
| Submit | E, Enter | A | Activate, play, or confirm the focused game item |
| Close | Q, Backspace | B | Close the current panel or back out of some UI |
| Cancel | Escape | B | Cancel or back out |
| Settings | Escape | Start | Open settings or pause-style menu where available |
| Left | Left Arrow, A | Left Stick Left, D-pad Left | Move left |
| Right | Right Arrow, D | Left Stick Right, D-pad Right | Move right |
| Up | Up Arrow, W | Left Stick Up, D-pad Up | Move up |
| Down | Down Arrow, S | Left Stick Down, D-pad Down | Move down |
| Deselect | Right Mouse | Unbound | Deselect or cancel selected item in pointer-style UI |
| Scroll up | Page Up | Right Stick Up | Scroll upward |
| Scroll down | Page Down | Right Stick Down | Scroll downward |
| Scroll left | Page Up | Right Stick Left | Scroll left in horizontal scrollers |
| Scroll right | Page Down | Right Stick Right | Scroll right in horizontal scrollers |
| Home | Home | Unbound | Jump to the start where supported |
| End | End | Unbound | Jump to the end where supported |
| Deck | Z | Back | Open deck |
| Draw pile | X | Unbound | Open draw pile |
| Consume pile | V | Unbound | Open consume pile |
| Discard pile | C | Unbound | Open discard pile |
| Minimap | M | Right Bumper | Open or focus minimap where available |
| Context action | F | X | Context-specific action |
| Access HUD | Tab | Y | Open the HUD overlay |
| Show card preview | Right Mouse, L | Right Trigger | Show card preview or alternate card view |
| Card 1 | 1 | Unbound | Select card slot 1 |
| Card 2 | 2 | Unbound | Select card slot 2 |
| Card 3 | 3 | Unbound | Select card slot 3 |
| Card 4 | 4 | Unbound | Select card slot 4 |
| Card 5 | 5 | Unbound | Select card slot 5 |
| Card 6 | 6 | Unbound | Select card slot 6 |
| Card 7 | 7 | Unbound | Select card slot 7 |
| Card 8 | 8 | Unbound | Select card slot 8 |
| Card 9 | 9 | Unbound | Select card slot 9 |
| Card 10 | 0 | Unbound | Select card slot 10 |
| Ludicrous mode | Right Mouse | Unbound | Hold/toggle fast interaction mode where the game supports it |
| Game speed toggle | N | Left Bumper | Toggle game speed |
| Feedback | F8 | Unbound | Open feedback |
| Mute | Unbound | Unbound | Mute toggle if bound |
| Advance dialogue | Space, Enter | A | Advance dialogue |
| Skip dialogue | Unbound | B | Skip dialogue if the screen supports it |
| Secondary tooltips | Left Alt, Right Alt | Left Trigger | Show secondary tooltips |
| Undo | U | Unbound | Undo turn or undo supported action |
| Dragon's Hoard | H | Right Stick Click | Open Dragon's Hoard where available |
| Previous page | O | Left Trigger | Previous page |
| Next page | P | Right Trigger | Next page |
Mod Actions
| Action | Default keyboard | Default controller | Function |
|---|---|---|---|
| Help | F1 | LT+Back | Open context-sensitive help |
| Mod settings | Ctrl+M | LT+Start | Open mod settings |
Buffers
| Action | Default keyboard | Default controller | Function |
|---|---|---|---|
| Previous buffer item | Ctrl+Up | Right Stick Up | Move to the previous item in the current buffer |
| Next buffer item | Ctrl+Down | Right Stick Down | Move to the next item in the current buffer |
| Previous buffer | Ctrl+Left | Right Stick Left | Switch to the previous available buffer |
| Next buffer | Ctrl+Right | Right Stick Right | Switch to the next available buffer |
The current focused item is at the Ctrl+Down side of a buffer. Pressing Ctrl+Down from the starting point reads the current/top buffer item.
Run And Combat Information
| Action | Default keyboard | Default controller | Function |
|---|---|---|---|
| Read gold | Ctrl+G | RT+A | Speak current gold |
| Read Pyre health | Ctrl+H | LT+A | Speak current Pyre health |
| Read ember | R | LT+X | Speak current ember |
| Read forge points | Ctrl+R | RT+X | Speak current forge points |
| Read unit outcome | I | RT+Y | Speak the currently focused unit outcome |
| Read floor outcomes | Ctrl+I | RT+B | Speak outcomes for the currently focused floor |
| Read all floor outcomes | Ctrl+Shift+I | LT+Y | Speak outcomes for every floor |
| Read floor capacity and charged echoes | B | LT+B | Speak focused floor capacity and charged echoes |
| Read all floor capacity and charged echoes | Shift+B | RT+D-pad Up | Speak capacity and charged echoes for every floor |
| Jump to hand | G | Unbound by default | Move focus back to the hand in combat |
Buffers
Buffers are review lists for extra information. They are separate from normal focus navigation. Moving focus chooses what information is available; buffer commands let you inspect that information without moving focus away.
Default Buffer Controls
- Ctrl+Up: previous item in the current buffer.
- Ctrl+Down: next item in the current buffer.
- Ctrl+Left: previous buffer.
- Ctrl+Right: next buffer.
- Right stick directions perform the same actions on controller.
Common Buffers
- UI: text and details for the currently focused UI element.
- Events: recent gameplay events.
- Card: card name, cost, effects, traits, upgrades, and related text.
- Creature: unit stats, status effects, abilities, equipment, and intent where available.
- Artifact: artifact name and effect text.
- Reward: reward details.
Only buffers that have relevant information are available. Use Ctrl+Left and Ctrl+Right to cycle through them.
Why Buffers Matter
Some elements need short focus text but long detail text. For example, a card in hand may speak only its name and important immediate effects, while the card buffer contains the full text. Shops, challenge rewards, artifacts, compendium entries, and event options also use buffers for details.
Map and Travel
The map is your itinerary for the ongoing invasion of heaven, and it's accessible with both normal focus and buffer-style map review.
Normal Travel
Use regular navigation to move between selectable map nodes. Press confirm on a reachable node to travel to it.
Unlike certain other deckbuilders that shall remain nameless, nodes along your chosen path can be visited out of order; pick whichever reachable stop strikes your fancy. The catch is that the track you've committed to is the track you're on. Nodes sitting on the other side of the rails are no longer your problem (or your prize).
Map Review
The map also has a review cursor that uses the buffer navigation commands. This lets you scout the path ahead without committing the train to anything rash.
- Ctrl+Left and Ctrl+Right move between choices at the current branch.
- Ctrl+Up moves forward along the reviewed path.
- Ctrl+Down moves backward along the reviewed path.
The controller right stick performs the same review actions.
Combat
Combat is the piece of the game, besides the compendium, that has received the most overhaul. It is worthwhile to read through this section in full before playing, so as to eliminate any confusion and tragic pyre demise on your part.
How It All Normally Works
Combat unfolds across the train's four floors. Your pyre sits proudly at the top of floor 4, minding its own business. Enemies appear at the bottom of floor 1 with one ambition in their tiny ill-fated hearts: climb the train and bonk your pyre. Your job is to make sure they don't get that far.
The rhythm goes like this:
- A wave spawns on floor 1. Enemies line up shoulder-to-shoulder, looking purposeful.
- Wherever your units and theirs share a floor, they trade blows. One round of combat per turn; nobody waits around for full annihilation before the survivors continue their journey. (Bosses, the dramatic sort, make exceptions for themselves.)
- Enemies swing first, in front-to-back order. Each one targets your frontmost living unit. That means a single beleaguered frontliner can get piled on by the whole enemy lineup before anyone on your side gets a word in edgewise. Only if the frontmost falls does the next attack cascade to whoever is now in front.
- Then your units retaliate, also in front-to-back order, each targeting the enemy's frontmost living unit. Same piling-on rule, just in the other direction.
- Survivors climb. At the end of the round, any enemy still standing trudges up to the next floor and gears up to do it all again with whoever you've stationed there.
- At the pyre, the pleasantries end. Enemies who reach floor 4 with nothing left to fight will whack the pyre directly, round after round, until either they or it ceases to exist.
An Example, Because Words Are Hard
Picture floor 1. You've placed two units, in left-to-right order:
- Spear steward (back)
- Shield steward (front, nearest the action)
A wave arrives with three enemies, in left-to-right order:
- Fallen champion (front, nearest your line)
- Ominous acolyte
- Collector (back, leaning casually against the wall)
Enemies attack first:
- The Fallen champion swings at your Shield steward (your frontmost).
- The Ominous acolyte also swings at your Shield steward. (Shield is still the frontmost; the Acolyte doesn't get to pick a different target just because someone else already had a go.)
Then your units retaliate, Shield first (frontmost on your side), then Spear:
- Shield steward swings back at the Fallen champion (their frontmost).
- Spear steward swings next, and here things branch:
- If the Fallen champion survived Shield's attack, Spear hits the Fallen champion. The pile-on continues.
- If the Fallen champion died, the Ominous acolyte is now the enemy's frontmost, and Spear hits the Acolyte instead.
And the Collector? The Collector watches the whole thing serenely from the back, entirely unscathed. Your line ran out of attackers before anyone got around to it. This is the price of fielding only two units; the Collector will be very much involved next turn.
How the Mod Makes This Accessible
Normally one would need to scroll and switch floors. The mod, for the most part, removes this for you. From bottom to top, the UI order is as follows:
- Your current hand of cards
- Floor 1 (this is where you get some unwelcome passengers)
- Floor 2
- Floor 3
- Floor 4 (this is where your pyre is at)
- Top panel containing buttons like end turn, remaining enemy waves, etc. Most of that information has either a game- or mod-provided shortcut for quicker access.
Hand and Cards
Left/right arrows can be used to navigate your hand. When a card is focused, you get things like its name, type, cost, and unit statistics. Importantly, however, you do not get every single piece of information, so as to reduce speech clutter.
For example, one keyword the game has is explosive, in which case the card will mention said keyword but will not by default give you a description of the effect.
To see the full description, use the buffer navigation keys. There you will learn, for instance, that explosive means that any excess damage is spilled over to the adjacent creatures.
The same pattern holds for your and enemy units; only key pieces of information are narrated, and full details are available within the buffer upon request.
Floors
Floors can also be navigated with left/right arrows. They expose the full lineup of creatures, yours and otherwise, with your and the enemy's backliners on the edges. In other words, the unit that is most likely to be attacked next turn is adjacent to the first enemy unit within the list from left-to-right.
Resources
These are listed in Controls but are repeated here for your convenience. Keep in mind that these are mod-provided and that the game may have more, e.g., F to end turn.
- R: read ember.
- Ctrl+R: read forge points.
- Ctrl+G: read gold.
- Ctrl+H: read pyre health.
Outcomes
Outcome commands summarize predicted combat results:
- I: focused unit outcome.
- Ctrl+I: focused floor outcomes.
- Ctrl+Shift+I: all floor outcomes.
If no relevant floor or unit is focused, these commands do nothing.
Abilities
Creature and room abilities are represented as focusable elements when the game UI exposes them (which it does on its own schedule, not yours). Pressing confirm on an accessible ability element should activate the corresponding game ability.
Targeting Things, Oh My!
Some abilities aren't content to just go off into the ether. They demand a target (a victim, usually; occasionally a beneficiary). When you trigger such an ability, the game obligingly enters targeting mode and waits patiently for you to point it at something.
Navigation in targeting mode works exactly as it does elsewhere: left/right arrows to scroll through creatures, and the usual floor navigation to hop between floors. Once your chosen mark is focused, press Enter to confirm and let the carnage (or kindness, who's to say) commence.
Cards play by similar rules. When you summon a unit, you'll be asked to pick a spawn point on the floor. Slot 1 is always the frontmost (right in the enemies' faces), and the numbers count back from there, with the highest slot being whatever's furthest from the fray (cozy, well-defended, lovely view of the action). Same navigation, same Enter to commit.
One thing to keep in mind: most monsters can only swing at things on their own floor, so don't waste your breath courting a target two floors up. The game will politely refuse, and your unit will sit there judging you.
Reading Spawn Points
As you scroll through spawn points, you'll often hear something like "spawn point 2, spear steward." Do not panic on the spear steward's behalf; you are not about to overwrite them. The convention is that the named unit is whoever currently occupies that slot, and committing the spawn places your new arrival in front of them. That unit, and anyone ahead of them, will politely shuffle one step back to make room for the newcomer. Empty slots, having no current resident to name, simply announce themselves by number.
A worked example. Suppose you already have two spear stewards on the floor, at points 1 and 2, and you're about to summon a fresh shield steward. Reading the line left-to-right (back to front, as established):
- Spawn at point 1 (currently a spear steward): the shield slips into the frontmost slot, both spears shuffle back a step. Line becomes spear -> spear -> shield.
- Spawn at point 2 (also a spear steward): the shield wedges in between; the rearward spear gets bumped one further back. Line becomes spear -> shield -> spear.
- Spawn at point 3 (empty, so no name announced): the shield settles into the back, and nobody has to move. Line becomes shield -> spear -> spear.
Same unit, same floor, three entirely different roles in the choreography. Pick accordingly.
Troubleshooting And Known Issues
No Speech
If the mod does not speak:
-
Confirm the release zip was extracted into the Monster Train 2 game folder.
-
Confirm
winhttp.dll,doorstop_config.ini,prism.dll, andBepInExare present next toMonsterTrain2.exe. -
Check the BepInEx log:
C:\Program Files (x86)\Steam\steamapps\common\Monster Train 2\BepInEx\LogOutput.log -
Look for
Monster Train Accessibility ready.
Controller Notes
Controller support is wired through the game's controller input system. If a controller behaves unexpectedly, check Steam Input settings and verify the game itself is receiving the controller correctly. Since the author lacks a controller (BOO!) this path has yet to be tested as thoroughly.
The Tutorial mentions scrolling and dragging things?
Yeh, it does. Short of abandoning the run you'll keep seeing the popups telling you information that might or might not be helpful. We found it confusing for the most part. You can definitely ignore all the parts that say to try out scrolling or dragging; we do none of that here.
Change Log
0.2.0
- Fixed a bug where your focus would be stuck after opening settings on rewards screen. You could have gotten yourself unstuck by hitting tab, but you don't have to anymore (QgSama). Silly Unity focus restore.
- Updated existing Chinese translation (QgSama)
0.1.9
- We now pick up character chatter with all the related events turned off by default so as to reduce spam. They do, however, go into the new monster quotes buffer so you can review them at your leisure (Boing).
- We now clear any focus one has on room abilities. This should hopefully fix the rare cases of room abilities activating instead of cards (Boing).
- Try and suppress the transient unlock screen briefly shown even when you don't have anything new unlocked. This should get rid of announcements like new clan unlocked (Boing).
0.1.8
- Events are now less verbose (Camlorn), e.g.: gold +10 without including total.
- Multiple people asked to disable wrapping in creature lists. It has been done. Additionally, an auditory beep plays whenever you cross from allies to enemies and vice versa.
0.1.7
- Floors now read their effects (if any) alongside capacity when requested with
b, defaulting to name only when just being scrolled over (Matrheine). - We now announce changes in moon phases as an event (Matrheine). You could previously see it if you go to the top panel above the floor with your pyre, but hopefully it's faster now.
- The train depot screen now reads, although from my investigation its... quite bare. I'm happy to be corrected, however.
0.1.6
- In soul savior, pressing
mwhile having the HUD open puts you onto your first soul. An odd choice of key, but you can rebind this if you wish (although do note that this is a native game action). - In the HUD screen, bosses are now collapsed to a horizontal row as opposed to participating in vertical navigation.
- By popular demand/confusion, artifacts read out their primary effects without having to go to the buffer to see them. They do not, however, describe their tooltips, so if you want to see what something like
quickdoes you still have to look in the respective buffer. - Souls now go through the presentation buffers during run preview in case you forgot and want to also remind yourself of their info.
- The skip button is now labeled when equipping souls. I wasn't aware that was an option even. No idea why you'd want to do that, but now you can.
- We no longer register the transient confirm button on soul equip screen, so no more weird vertical cycling in the first column (I don't think people even use confirm since souls equip upon selecting a card).
- The HUD screen is now treated as, well, an actual screen. The game doesn't do that but hopefully we do now, so pressing tab should work anywhere the game allows it to (previously it was a custom opt-in. Seemed like a great idea at the time. It wasn't).
- Slightly rearranged soul savior region selection menu so that region modifier is now its own item rather than being lumped in with rewards.
0.1.5
- The mod should respect user's selected language now and not require an explicit language switch
- Added revised Chinese localization by QgSama
0.1.4
- The game has been machine-translated into all the languages it supports. Contributions with improvements on that front are welcome.
- We now have an installer! You can grab it from the latest releases page (chaosbringer216)
- Corrected pyre sprite localization to say Pyre health as opposed to just Pyre.
- Story event choices now include all of the available rewards for a particular choice rather than stopping at the first one. This allows one to, e.g., see the Dominion's Eye blight before it's added to their deck. Fortunately this was never a huge deal, but at least it's fixed now.
- Passive artifact effects like purified soul shard no longer spam you when they get triggered (Matrheine).
- Settings tabs are now visible as actual buttons. They probably should have been like this in the first place. You could reach other tabs with brackets, but the game never tells you that fact. This makes them more consistent with screens like soul savior, too.
0.1.3
- Card grids no longer allow you to vertically slide down to the next nearest item in a future row (whoops?).
- In combat, pressing page up/down also has the same effect as pressing your arrow keys. The game already had those controls, and it was strange they disagreed (ogomez92)
- When setting up a run, it is now possible to view a clan's experience progress to the next level (ogomez92)
- Creature abilities now collapse both the name and description into one buffer entry (Chaosbringer216)
- Spawn points now announce if there's a unit at that location. This should make it easier to figure out who your summoned unit will be spawned in front of so you don't have to remember quite as much.
0.1.2
- Continue tinkering with tutorial screens. All of them are accessible now, we just forgot about the one special covenant case
0.1.1
- Make the starting settings screen read. The author may or may not have opened the game over six months ago so he had to wait for a user to run into that one.
- Fixed controllers not interrupting themselves when you scroll through items
- Made some tutorial popups accessible. Hungry dialogues were eating keys!
Credits
First, a huge thank you goes to Honk from the audiogames.net forum. Having to first explain how a fair bit of the game worked and then patiently try each build practically on a daily basis must not have been easy. The mod would most certainly be in a much less polished state without their feedback.
Thank you goes to Chaosbringer216 and his wonderful work on Say the Spire 2.
Most of the ideas like buffers were either copied or blatantly lifted (with his permission) from that mod, and I guarantee you we would have a much clunkier product otherwise.
Finally, we use Prism, which has alleviated much of the screen reader headaches.