Skip to content

Lich and Mudlet for playing Gemstone Dragonrealms with a screen reader

Mahtra edited this page May 31, 2024 · 8 revisions

Mudlet is an open source MUD Client, with excellent screen reader support.

Lich is a scripting engine for Simutronics based games. It is compatible with Dragonrealms, and Gemstone, and provides a robust scripting engine for both games, and for our purposes, it works as an authentication layer, since Mudlet can't authenticate directly to Simutronics games.

When we combine Lich, and Mudlet, we have an excellent platform for someone to play Gemstone, or Dragonrealms with the help of a screen reader.

Note: While it is easier to have a sighted person fill in the initial user details into the Lich launcher, it can be done independently by using your screen reader's OCR and mouse routing functions, like so. Please note that this has only been tested using NVDA and JAWS, yourmileage may vary using Narrator.

  1. After first opening the launcher, hit tab once. Pressing backspace at this point should result in the generic Windows "you can't do that' noise. This is the username field.
  2. After filling in your username hit tab, you're now in the password field. Type your password and hit enter.
  3. Invoke OCR on your screen reader, preferably on the entire window. For NVDA this involves object navigating to the level of the lich window and using NVDA+r.
  4. Find your character name in the resulting output, either route mouse (NVDA+shift+m) or don't (JAWS moves mouse by itself) and click.
  5. Do the same for the "save this character" checkbox, and subsequently the "Play" button.

If you are not familiar with Mudlet, the writeup on the Mudlet wiki on using Screenreaders is highly recommended.

  1. Download and install Mudlet
  2. Download and install Lich

On first launch of Mudlet you will be prompted to create a profile.

  • Connect
    • Profile Name: Whatever you like. I named mine l8000
    • Server Address: 127.0.0.1
    • Port: 8000
    • Click the Options tab, tick Open Profile on Mudlet Start (This is optional, but I find it helpful)

Simutronics games are XML based, and Mudlet isn't an XML enabled client. As such, we need to squelch raw XML output from the game. For this we create a trigger to hide the XML feed from our screen reader.

  • Add trigger
    • Name: DR/GS XML Cleanup
    • For 1. Add <[^>]+> and select Perl Regex in the dropdown menu on the far right.
    • Tick match all
    • For the body of the trigger add
for i=1, #matches do
  selectString(matches[i], 1)
  replace("")
end

After that that one which is very necessary for readability, consider adding the following as well:

This is a generic squelch function for anything we want to squelch that isn't caught in our XML filter above. This one filters out the &gt string which is a proxy for the command prompt in Simutronics games

  • Add trigger
    • Name: Squelch Strings
    • Under 1. Add .+ and select Perl Regex in the dropdown menu on the far right.
    • Tick match all
    • For the body of the trigger add
selectString("&gt;", 1)
replace("")

After going through the first-time Lich setup, and saving your login info, you can launch lich from the command line by going to your lich folder, Shift+Right-Click, Open PowerShell Window here, and in the newly opened window type:

.\lich.rbw --login YourCharacterNameYouSavedTheLoginToEarlier --without-frontend --detachable-client=8000

Note: This process can be drastically simplified by creating a bat file to automate it. Simply create a file named CharacterName.bat (name it for your character) inside your lich folder and inside put the following:

@echo off
cd c:\ruby4lich5\lich5
start lich.rbw --login YourCharacterNameYouSavedTheLoginToEarlier --without-frontend --detachable-client=8000

Please make sure to replace YourCharacterNameYouSavedTheLoginToEarlier with your actual character name!

Any questions or feedback, please feel free to contact me directly on Discord. My username is destahd.