Introducing Hearthstone Access: an accessibility mod for playing Hearthstone(self.Blind)
submitted by GuideDev
Hello everyone. Guide Dev here.
After countless hours and tens of thousands of lines of code, I'm happy to announce the first release of Hearthstone Access: a custom Hearthstone mod that enables blind and visually impaired people to enjoy Hearthstone.
If you've never heard about it, Hearthstone is a popular free-to-play online digital card game developed by Blizzard Entertainment with millions of players all around the world.
If you'd like to try it out or know someone who would, I've set up an accessible page to get you started $1
For the time being, players will be able to autonomously go through the tutorial as well as play practice matches against all AI opponents. This will allow you to unlock all classes and basic cards while learning the game and reaching level 10.
If there's enough interest, I'll do my best to catch up on the past 7 years of features and keep working towards making the remaining game modes fully accessible.
Suggestions about what I should focus on next are very much welcome as I'm not familiar enough with all the game modes and adventures. I was thinking autonomous deck building, opening packs and friendly matches would be good candidates, but I'd be interested in hearing everyone's thoughts.
Please share this with anyone you think might benefit from it and let me know if you run into any issues. If anyone has an $1 forum account and could share it there as well that'd be great as I was unable to register to do it myself.
Enjoy!
zersiax8 points1y ago
u/GuideDev this is seriously excellent for a first version :)
I haven't looked through the code so I'm not sure how you're pulling the card values, but if the API you're using has a card's flavor text at all, that might be an interesting addition to the card fields. If you are in fact putting all those in by hand though, please don't spend hours and hours adding those :)
I honestly don't have much to complain about at all. I played through the entire tutorial and ...what can I say, the game is just playable, and efficiently so. The only thing I have to unlearn is to consider the keys like f, c, v etc zooming you around the field, rather than opening dropdowns. I keep trying to go back with escape :)
For the rest, all I can add is ...please keep up the great work. There is absolutely an interest in making mainstream games accessible like this, and your efforts are on a , currently, extremely short list of games that can be enjoyed fully by both blind and sighted players alike. The reason I asked for multiplayer first and foremost, even though I am super interested in the solo campaign as well, is that the list of multiplayer mainstream games that said groups can play together fully is even shorter, almost depressingly so.
Where are you going to post updates for the project, so I can obsessively check it every hour? ;)
GuideDev [OP]2 points1y ago
Thank you very much for all the feedback and for helping spread this out on audiogames!
I'm not sure what you mean by card flavor but you're not the first person to ask about it. Do you mean something like colors in Magic? I'm not sure those would be too relevant in Hearthstone apart from perhaps deck building but I'm happy to add it at the end or have an hotkey for it if you think that'd be better.
As for the hotkeys, I confess I had a very hard time picking them myself as well. I ended up choosing these for the simple reason that they allow you to play the game without ever having to lift your hands from the keyboard. So left hand resting on hotkeys close to tab and right hand dedicated to arrows, enter and backspace. If it helps, I chose F for targetting the opponent hero as attacking your opponent hero is a very common action and is often referred to as "going face" in Hearthstone slang. V was simply the key under it which seemed suitable for your Hero the same way that G and B are for minions. C was just cards really. It was H for hand initially for intuitiveness but I figured it's a common enough action that players would prefer to have it as a left hand key than being forced to move their right hand away from the arrow keys. I could naturally look into making all of this configurable at some point if there's enough interest though.
As for updates, I haven't really thought about it yet to be honest but I'll have a think and get back to you.
Given this text is actually not visible in play but only in the collection, the datastructure holding the card data probably won't have access to it either :)
And the hotkeys feel very intuitive honestly. It's just a bit of a pattern, primarily in audiogames, that when , say, you get a list of options, say, all your minions, it's usually JRPG-style; you go into a menu and have to hit escape/b/circle to exit back out to get to the "main" menu as it were. This game doesn't HAVE a main menu to go back to, so the fact I keep doing something that I shouldn't be doing isn't something you caused :)
And yeah, let me know re: updates, gitub releases work obviously but I think you only keep the patcher there, not the actual source for the mod?
GuideDev [OP]1 points1y ago
Ah, I see what you mean now. Thanks! This only exists in the card collection screen but I'll be sure to add it once I get to implementing that.
Both the patcher and the patch are on github. The patcher simply tries to find your Hearthstone installation, downloads the patch zip file from github and extracts it into your installation folder.
I did have a few complaints about github's interface already though so may need to do something else. I could perhaps add a patch notes section to the official page and use patreon and twitter or something to link to it whenever a new release comes out? Not sure if that would work.
The game will warn you when you open it if there's a new Hearthstone Access patch available so you won't exactly miss it. Just need to figure out an accessible way to publish the notes really. The game will also lose accessibility support every other week whenever Blizzard patches the game until I release the new version so players will be forced to patch the game then anyways.
zersiax2 points1y ago
Your idea of just making a change log section to the GH page is a good one. I'm a developer myself so Github is old hat to me, but obviously that isn't the case for everyone :) Twitter would be a good place to disseminate the updates, the forum a close second. Patreon's interface, unfortunately, could be better as well so I'd only use that for backer updates if I were you :)
Nighthawk3211 points1y ago
A bunch of blind people use Twitter due to the number of accessible Twitter clients, so maybe posting updates there would be best? Just a suggestion.
BlindGuyNW2 points1y ago
Just to clarify this, card flavor text would be things like the character quotes in Magic, the text below all the rules info which has no qameplay effect. Note that I don't know if Hearthstone has this but I suspect it probably does.
GuideDev [OP]1 points1y ago
Ah, I see what you mean now. Thanks! This only exists in the card collection screen but I'll be sure to add it once I get to implementing that.
bradley221 points1y ago
I'd recommend bookmarking the link in the first post :)
[deleted]6 points1y ago
[deleted]
[deleted]3 points1y ago
Am I dreaming? Someone pinch me!
Ow! It's real! Keep up the great work! I hope one of these days we'll be able to compete in tournaments, build badass decks, open shit tons of packs and interact with sighted hearth stoners across the globe.
david_solomon13 points1y ago
I have not played the game yet, but as a huge fan of both Warcraft and anything TCG, I can confidently say I am very much interested in this. Please, please continue to update and add features. Thank you for all your excellent work so far. So few games like this are playable to the blind and it is great to see one of the most popular now made accessible to us.
zersiax3 points1y ago
Nah, I'll run it myself for now. More fun that way :) Signal boosted you a little where I could :)
Ishutin3 points1y ago
OMG, this sounds awesome! Going to check it as soon as possible. I've always wanted to play hearthstone and finally it's possible! Keep up the awesome work, and thank you a lot for your efforts! :)
yarkidius3 points1y ago
woooow thank you soo much for this! I'm a totally blind guy and I've wanted to play heartstone every day when I was listenning to my brother playing it. Now that's a dream coming true: I hope this project can gro better and at some point, we at least can play with our friends, that will be very cool. Thank you for this!
dansc933 points1y ago
Hi, I'm super excited about this, This is a game I've wanted to play for the longest time, so the more accessible you can make it, the better. Especially pack opening and events and such.
zersiax3 points1y ago
u/GuideDev going to try this right now and let you know :) I have a housemate that plays HS a lot, and it'd be great if we could play together at some point, so if you can make that happen that would be fantastic. For now, though, I'm already super thrilled by the single player content working.
this guy is streaming it on twitch if you want to check :)
siwy4don2 points1y ago
I've just finished my first practice game after 6 years, that's how long I've been blind and it's fucking epic man! Thank you for what you did! It works really, really well. I can't wait for all the modes to be available!
soundwarrior202 points1y ago
Hi does this work on Mac OS X? Also thought reconfigurable keyboard shortcuts. Making the keyboard shortcuts configurable is an accessibility feature because it means that people with limited mobility may be able to play the game easier.
GuideDev [OP]1 points1y ago
I'm afraid I don't have a Mac to test things with so I'm unlikely to work on supporting it anytime soon. Added reconfigurable keyboard shortcuts to my list. Thanks for the feedback.
siwy4don2 points1y ago
Ooooooh shit! I've been waiting for this!
Fine_Register33482 points1y ago
Thanks for taking the time to make a mainstream game accessible to those of us who can't see.
I thought I would die without ever playing one of these games again, but fortunately I was wrong.
I'm playing through the tutorials, and so far so good overall.
I'd like to know the name of the opponent I'm facing when I press the "F" key and any way to know if a minion can already be used. but for the moment that's the only inconvenience I can find.
I'm from Lima, and we speak Spanish here. I would like you to indicate in Github how to translate it to other languages, because I'M an amateur in programming, and I think I could help with the translation to Spanish.
GuideDev [OP]2 points1y ago
Glad you like it!
I had a few requests about localization in a different topic so I'll post my reply here as well if you have any feedback.
Regarding localization: I could certainly look into extracting all the text somewhere if people are able to contribute to it. It would take some work on my end to make this possible and I would need to rely on the community to provide and maintain the translations for any supported language over time as I only know so many languages myself. Note that adding a new language as it stands would require over 500 translations and this would grow over time. You would also potentially have some text in english whenever new versions come out as waiting for every single languge to be translated in order to release new features wouldn't be feasible.
One more thing regarding localization: localizing the narrator speeches in the tutorial would be significantly harder to achieve. Is this something you would be interested in as well? If not, would you rather keep the english narrator in the tutorial or replace the narrator with the screen reader as well and localize that?
PungentMushrooms2 points1y ago
You are doing God's work, this is amazing
sanslash3322 points1y ago
OMFG!
​
thanks, very thanks for do this projects!
I'm totally blind, and a huge fan blizzard projects, so have a small chanse to play heartstone or any other blizzard game will very apresiated.
You're awesome, you take the job that many others dont want to do. Youre awesome. lets try it a mod and well, next things, enable create or own decks, and next.. . I dont know, try to talk with blizzard to allow use this mod in online battles :)
¡thanks!
ErtaySh2 points1y ago
Kudos for this! Any particular reason for going withHearthstone rather than starting with a simpler card game likeStar Realms?
Also, can you describe how the mod actually works in the background to provide these accessibility features?
GuideDev [OP]3 points1y ago
I'm afraid I've never heard of Star Realms! I wanted to pick a popular game as one of the main requirements was to provide something people could and would want to play together regardless of whether they're visually impaired or not. Not that people wouldn't enjoy Star Realms - you're just more likely to find sighted Hearthstone players.
In the end, I debated between Hearthstone and Magic: The Gathering as both have millions of players around the world. Hearthstone took the cake because I'm more familiar with the game and know it has a lot of single player content as well for people who don't like the pressure of playing against other people. Magic is also physically playable with braille so I figured variety would be a good thing.
As for the mod itself, it essentially patches the game to describe things over a screen reader and provides keyboard commands for interacting and reading everything. The code for the patch itself is open source for transparency but keep in mind it's over 20000 lines of code long at this stage. $1
ErtaySh1 points1y ago
$1 is popular among board gamers. It's a deck building game where both players start with the same 10 card decks and buy cards from the market to build their decks as they play. The digital version that is available on Steam has a lot of the stuff automated, but it lacks keyboard support, and with that lacks screen reader support. Yes, it is less popular than HS or Magic, but it is also smaller plus doesn't get updated as much as HS or Magic do, so as a modder one wouldn't need to be under constant pressure of the mod not breaking after every update. :)
Oh, I understand what the mod does, but I was asking a bit about the technical details. I don't see a readme file in the repository where you've explained how the mod actually works. How do you read the card data? Are you using some sort of OCR, or is there something else that lets you read the card information? How is targeting handled? Just some general concepts that you used to work around the limitations. Would similar concepts be applicable for other card games out there or is this possible with Hearthstone because it uses a particular engine (I think it was Unity) that gives you the ability to mod it?
I used to play HS until I couldn't do it anymore due to vision loss, so I will be keeping an eye out on the development of this mod.
GuideDev [OP]4 points1y ago
I'll have a look, cheers.
Regarding how it works: I'll think about writing something explaining things in greater detail at some point. I just haven't done it as it takes time and I've been focusing on getting this out first.
To give you a summary of the questions you touched on: there's no OCR whatsoever. The mod patches the game so it has access to all the cards, text, etc. Everything you see was specifically implemented though and I did have to patch hundreds of popups and dialogs while suppressing others just to make it so players can consistently reach the game screen autonomously.
The hardest part was naturally the game itself and my approach was to hook into the game state protocol, take snapshots everytime something happens, compare them as the game progresses and turn anything that happened into speech. This is an overly simplified explanation as this part alone is several thousands lines of code long and I do have a bunch of other stuff around it for allowing players to do things like slowing down the game and sync everything up with the animations and sound. However, the advantage of doing it like this was that I don't really need to know or keep up to date with what the cards do or don't do: I simply take snapshots of the game state every time something happens and try to describe what happened in natural language.
The targetting question is a good one: while the targetting per se is not hard to do as there's only so many valid options you can choose each turn and the server tells you what they are, the game doesn't really have the concept of a friendly or unfriendly effect. While this is fine for sighted people as you're unlikely to use a damaging spell on one of your characters, I did write a bunch of code and a lot of regexes which are able to parse all 7500 cards that have a potential targetting effect and ensure your tab key cycles through valid targets in a sensible direction. Think pressing tab and going through your opponent's minions and hero before your own if you're using a damaging spell or starting with your own hero and minions first if you're using a healing spell.
Anyways, thanks for the interest and let me know how it goes once you give it a try!
ErtaySh1 points1y ago
Awesome, thanks! One final question, any chance you can get banned due to the patched files?
jage91 points1y ago
This is amazing, and just playing the tutorial shows me the level of care and work put into this. They also have a Patreon/PayPal donations, so definitely support if you can.
Our mission is to provide everyone with access to large- scale community websites for the good of humanity. Without ads, without tracking, without greed.