Oracle: A MUSHclient System for Blind Players

TL;DR: I'm making a MUSHclient system for blind players. Track its progress here!

MUSHclient is the best client option right now for blind players who want to enjoy the most immersive and fast-paced parts of Achaea. However, with the advent of newer and more feature-rich clients like Mudlet, there aren't many players creating scripts for MUSH. Those people who do create scripts tend to keep them to themselves--probably because it's easier to make something tailored to your own specific goals and use cases. In the spirit of "worse is better" I have started a Github repository where I will share some of the work I have done building out my own system. My goal is to create a framework that anyone interested can use and build upon for their own individual needs. I also hope this can be a collaborative effort; pull requests and feature suggestions are more than welcome.

Right now there are only a few basic commits, mostly to track gmcp messages in the world namespace and take commas out of the prompt for faster reading. I'm posting here to get thoughts from people who might want to use this system. What features are you missing in Achaea? What would make your gameplay more accessible, enjoyable, etc? here are a few ideas I have.

Short-term goals (within the next week or so):
- Change local gmcp tables to match their json labels (eg: fix Room.Info to be gmcp.Room.Info). This will mean gmcp messages will be standard.
- Add gold tracker.
- Implement my (very clunky) name database code.
- Add my MUSHclient version of tempTimer.
- Add channel history plugin (alt+1-0 reads last ten messages, alt+right/left navigates through channels, etc.)

Longer term projects, in order of priority / ability to implement:
- Abstracted PlayGameSound functions. Play one or a random selection of sounds for various events. Sounds not included.
- Rift tracking (sort rift by quantity, show only things you are low or full on, etc.)
- Affliction and defense tracking (add / remove / stacks)
- Offense tracking (limb counter, eat / smoke / salve tracker, etc). This will take a while to fully implement.
- Mapper with goto functionality. (Another big one.)

I look forward to your thoughts and suggestions. Feel free to reach out either in this thread or in game.

https://github.com/achaea-oracle/oracle

Comments

  • edited April 2019
    What would make your gameplay more enjoyable?

    Effervescence hitting at 5 second intervals.


    Post-bad-joke: Cool man! Let me know if you need a set of spars or anything to test out some of the stuff you've put together! 

    The Divine voice of Twilight echoes in your head, "See that it is. I espy a tithe of potential in your mortal soul, Astarod Blackstone. Let us hope that it flourishes and does not falter as so many do."

    Aegis, God of War says, "You are dismissed from My demense, Astarod. Go forth and fight well. Bleed fiercely, and climb the purpose you have sought to chase for."
  • I'm down to help too for what I can.  My play times are a bit random, but that just means statistically you are more likely to catch me.

    Also, been trying to do stuff like re-writing HHELP and OHELP files to make them more screen-reader friendly so people can have more accesibility, so I wouldn't mind some feedback there too.

  • Caelan said:
    I'm down to help too for what I can.  My play times are a bit random, but that just means statistically you are more likely to catch me.

    Also, been trying to do stuff like re-writing HHELP and OHELP files to make them more screen-reader friendly so people can have more accesibility, so I wouldn't mind some feedback there too.
    Thanks! Re: hhelp and ohelp, the biggest accessibility barrier seems to be use of pseudo-tables. Eliminating those makes the experience far easier, especially since it's trivial to pipe text like that into a separate window for review.
    Caelan said:
    I'm down to help too for what I can.  My play times are a bit random, but that just means statistically you are more likely to catch me.

    Also, been trying to do stuff like re-writing HHELP and OHELP files to make them more screen-reader friendly so people can have more accesibility, so I wouldn't mind some feedback there too.

    Thanks, that's good to know! The only issue I've found so far in help files is pseudo-tables. They just don't render well to a screenreader, since there's no easy way to read by column.
  • What do you mean pseudo tables? Not to sound like a dick, but what do they look like? Do you mean the bulleted lists w indents, or something else?

  • edited April 2019
    Caelan said:
    What do you mean pseudo tables? Not to sound like a dick, but what do they look like? Do you mean the bulleted lists w indents, or something else?

    By pseudo-tables I mean any information arranged in columns rather than rows. I think the | is usually used as a separator. Something like the following headings, with content under it:

    Name    | Class    | Specialty

    That might look visually striking since you can just run your eye down the columns, but screenreaders render line by line (or in this case, row by row). So that information would be better presented for blind readers as:

    Name: Ammar
    Class: Runewarden
    Specialty: Giving bad advice.

    Edit: I also just saw that I double-posted my last post. Hilarious.
  • Got it.  Do dashes cause a pain in the earhole?

     Like:

    - This one list item bullet
         -  Something else bulleted, but indented further like a sub-item bullet
         - A second thing indented

    - A new list item bullet

  • I can't code worth a damn, but is there anything I can do to help?
  • AthelasAthelas Cape Town South Africa
    @Ammar

    I can code!

    What do you need?
  • I can code.

    The goals I'm particularly interested in:
    - Affliction/defense tracking (it probably won't be too difficult to port my work from GMCP Unveiler over)
    - Names database (are you thinking of SQLite or a Lua table?)
    - Channel history plugin
    - Rift tracking
    - Offense tracking (I am more interested on whether this can be done in a more mathematically sound way than what I've seen so far)

  • Hey @Ammar

    I have an older system from Aetolia written in lua for MUSH. It was fairly solid 4-5 years ago and the bones are good (initially written by Hadoryu over there, expanded by me). It might have something you can use for the core of the curing, aff tracking, and limb tracking segments, since Aetolia and Achaea are still quite similar on the herb/salve side of things. Def management used onscreen clicks, but the functions can probably be used from that, too.

    Let me know if you want me to shoot it over for you to look at.

    Either way, I might be able to help if you have something specific. We do some work implementing and maintaining WCAG conformance for our clients, so I know how tricky this can be.


  • I can code.

    What would you like me to start work on first?
  • AthelasAthelas Cape Town South Africa
    Things some vision impaired players have indicated to me:

    - A functional map system.
    - A way to reduce spam during combat (If you think watching the spam is rough. Try listening to it.)
    - A functioning anti-theft system (Coding this is easy, for anyone that can see.)

    I've also been told that, ships and sailing is simply a non-feature for the blind player. As it's too easy to get lost. This is very much the same with wilderness-map. I've not heard nor been able to think of an easy solution to these.
  • I have some basic ideas on combat but I'm happy to fit in with existing work if this is already underway.

    1.  Gag just about everything.  When I entered combat in the pygmy dungeon my screenreader was a full page behind and it was only getting worse.  That old man you start with reappeared, healed me and gave me a shield!

    2.  Speak a maximum of two words about important events.  For example "prone on" and "prone off".

    3.  Report health if it has dropped since the last time the GMCP value was received.  Possibly only do this if health is below a threshold, for example fifty percent.

    4.  Report sips left when a sip is taken from a vial when there are less than ten sips remaining.  Likewise tattoo usage for example shielding.  I haven't need a curative yet but taking and using something from the rift should also report how many are left if there is less than ten remaining.  Ten is just an arbitary number and should be configurable.  I'm only level five so don't have a lot of anything yet.

    5.  Automatically turn off weather and tells during combat, and turn them back on again outside of combat.  The tellsoff message would be updated with something simple like "in combat".

    Since I can't yet handle a screenreader running at 80 I'm actually considering gagging all speech and emotes during combat, though this hasn't been required yet.  I'm still stuck in the portals room!  I really need to figure combat out!
  • Hi All, sorry for being so remiss in updating this project. Now that gmcp is tracking things a bit more nicely and I have a bit more time, I will release some new bits. Getting the skeleton of affliction tracking, sound playing, channel history lookup, and a few QOL enhancements I think everybody will like are my next steps. I'll also be releasing standalone goldtracking and inkmilling scripts that are modified from their Mudlet counterparts.

    I also wanted to respond to a few of the suggestions put forth on the boards and tell you how I handle certain events in the game.

    Gagging: While there is a lot of text that can certainly be gagged, there is also a lot that is important or that some players will want to see. I recommend reading from the bottom up, so you can quickly see the last thing that happened to you and react accordingly. Listening to text as it comes in just may not be fast enough most of the time; I am glued to the bottom line of my screen always where my prompt is read out.

    Substitutions: Substituting text is a great idea and I fully support its use. "A prickly stinging overcomes your body, fading away into numbness." just is not as snappy as "Paralysis" or "Par". My system ties gmcp affliction gain and loss messages to corresponding sounds if they exist. I also recommend turning the universalafflictionmessages config option on to standardize your display.

    Reporting health change: Right now I just use the full prompt and read it as needed. I can certainly set up health gain or loss indicators. I'll want input from someone who uses that feature on how you would want that read. I also gag all sip messages and replace them with unobtrusive sounds.

    Take this as your license to bug me about this project. I'm probably more reachable in game for shorter messages and here on the boards for your longer thoughts. Stay tuned!

  • Also... sorry to say that I have heard from some smart people that a MUSHclient mapper with the functionality of the Mudlet mapper is right out, based on how MUSHclient handles the required low level operations. I'm happy to be proved wrong about this but right now it's currently well outside my capabilities.
  • Athelas said:
    Things some vision impaired players have indicated to me:

    - A functional map system.
    - A way to reduce spam during combat (If you think watching the spam is rough. Try listening to it.)
    - A functioning anti-theft system (Coding this is easy, for anyone that can see.)

    I've also been told that, ships and sailing is simply a non-feature for the blind player. As it's too easy to get lost. This is very much the same with wilderness-map. I've not heard nor been able to think of an easy solution to these.

    What I've done, which helps is: in the wilderness, I have my client make a certain sound when it see's a question mark. I then have it make a different sound when I am horizontal to the question mark so I know I have to go either east or west to get to it. What would be interesting would be: a script that will make a different sound depending on which axis you're on (X, Y, or Z), that way, I would know immediately whether I had to go ne,nw,se,sw,e,w. This concept would work well for sailing as well, and I've used it with fairly decent results, with the major problem being that question marks are also used to denote other things in the ocean as well as the wilderness.
  • edited December 2019
    Also, I use this antitheft script, and I like it a lot.
    http://www.gammon.com.au/files/mushclient/Moonflair_plugins/antitheft.xml
  • In your absence Ammar I've been coding away.  I've recently (like yesterday!) completed functions for loading up a pre-recorded route which can then be followed.  When used with my route finding code I can use it to walk to a location step by step rather than autowalk the the whole route in one go.  As a druid it's also allowed me to create patrol routes for forests which can be used over and over again.
  • Ddee said:
    In your absence Ammar I've been coding away.  I've recently (like yesterday!) completed functions for loading up a pre-recorded route which can then be followed.  When used with my route finding code I can use it to walk to a location step by step rather than autowalk the the whole route in one go.  As a druid it's also allowed me to create patrol routes for forests which can be used over and over again.

    That's great. I hope you have found the existing code helpful for your needs. If you want your stuff included in future versions of Oracle, feel free to submit a pull request on the github repository.
  • That was always the plan when I started coding.  I think I need to get my head around making my code more modular though so it can be readily be switched in or out.
Sign In or Register to comment.