===== Crawl for blind players ===== While DCSS has never been explicitly developed with blind players in mind, it turns out that blind players can enjoy the game. The purpose of this page is to discuss ways in which their experience (and, ideally, that of all Crawl players) can be improved. Therefore, this is strictly about interface modifications. The first installment of this page grew out of a discussion between [[user:Moritz]] and [[user:dpeg]]. --- //2017-04-09 01:03// Some links that might of interest: * [[http://allinaccess.com/pca/|Pokemon for the blind]] * [[https://www.youtube.com/watch?v=Y_8sHtr62Bo|Talk by Alexei Pepers about how to make Nethack more accessible]] * [[https://www.rockpapershotgun.com/2017/04/05/playing-roguelikes-when-you-cant-see/|Playing roguelikes when you can't see]], an article by Kent Sutherland of Rock Paper Shotgun == Some background information == In general, having a text based interface ("ASCII") is by itself //not// enough to provide a blind-friendly experience. Glyphs need to be supported by additional features. What makes Crawl already playable for the blind are the following features, all of which automate interface tasks: * autoexplore * autofight (Tab) * ranged combat (targeting) * Ctrl-F * Ctrl-X A major problem for blind players is the concept of the map, and its strategic use. === Modularisation of the game screen === Blind players use screen readers to get feedback about the game state. (This is why ASCII is necessary, but not sufficient.) However, the map (i.e. the main section of the main Crawl screen, with the player @ at its centre) is extremely hard to parse via screen reader. Some blind players seem to do this, but others just turn off the map in games where that is possible. For Crawl, it would make sense to provide an option that produces output not on one screen (terminal), but on several separate ones: - map - messages - monster list - HUD (health, magic, Str/Dex/Int etc.) - inventory - spell list - list of status effects Perhaps this should be even more fine-grained, like having a separate Health screen etc. This way, blind players can have their screen readers only read out the parts they want to know about (currently, you have to skip part of the gibberish map reading). === Sound support === This has been brought up several times. For blind players, acoustic feedback is very valuable. There is already the possibility to link regular expressions on messages to sound files. It would be **very** good to start on this -- we can be slow on this one, there is no need to produce a monolithic sound library in one go. Sounds used should be open source. I would hope that, like with Crawl's tiles, we can enable player support for this task. In a second step, sound support could be based not just on messages but also on surroundings. Ideally, we could display the presence of the following game features through ongoing sounds: * monsters (indicate number and threat level by volume/frequency?) * terrain (floor/water/lava) * low health * altars, portals, staircases === Ctrl-X === The Ctrl-X command is very useful for blind players because it enables access to all monsters/items in sight in a readable format. With this in mind, the output could be improved using switches and filters (or related commands). == Ctrl-X mode filter == Within the Ctrl-X screen, players should be able to (de)select categories: ''monsters|items|features''. == Ctrl-X monster display == For monsters, you may want feedback of varying detail. There could be a toggle to affect monster display: * //terse// --- only list monsters, nothing else * //distance// --- mention distance in steps, e.g. ''orc (3 steps away)'' * //location// --- indicate precise position, e.g. ''orc (3 up, 2 left)'' * //properties// --- full status: wounded, confused etc. and item information == Use Ctrl-X for movement and targeting == Automated movement is extremely important for blind players. Ideally, selecting a monster on Ctrl-X would allow the player to walk one step closer to it (if possible). Perhaps players could assign Tab-targets like this? During targeting (wands, ranged combat, spells), players should be able to bring up the Ctrl-X screen and select a target from there. (Naturally, only show targetable monsters there. This mode should also work for melee.) === View commands === Getting information about the surrounding is very important. Any commands that makes blind players rely less on the map is helpful. All of this is about additional commands which produce textual feedback. Here are some ideas --- which of these are most useful has to be decided by blind players (who don't have to agree in these choices, of course): * list terrain on the eight adjacent squares (starting at north, then proceeding clockwise) * same with monsters * overview of terrain in view: ''You can see 34 tiles. Of these are 20 floor, 10 shallow water, 2 deep water, 1 door and one altar to Trog.'' * mention the nearest walls? * The current monster list is already a permanently viewing command in its own right. There could be an option to enrich it by appending positions to monsters, such as ''gnoll (2 up, 3 right)'' and ''2 orcs (1 up, 0 left; 2 up, 1 right)''. And/or status effects. * Moritz mentioned that absolute coordinates for the level could be useful. Crawl cannot give out actual coordinates because that is hiddent information, although this would work with randomly chosen horizontal/vertical offsets. * description of LOS in relative coordinates: 0, 0: player (you) 1, 1: rock wall 1, 2: rock wall -1, 0: quokka -1,-1: orc (confused) === Autoexplore === Autoexplore is one of the features that makes Crawl accessible for blind players. However, when autoexplore cannot proceed, it should provide better feedback: it should say why it cannot go on (excluded harmful cloud, excluded oklob plant, lava, deep water, teleporation trap, plant etc.) It would be helpful if there was a command to have Crawl move the @ as close to the obstacle as possible. There could be access to a number "exploration border", i.e. how many steps you are away from unexplored territory. === Automated movement with monsters in sight === Already mentioned above: allow walking towards a monster from Ctrl-X. More autoement movement with monsters in sight would be desirable, but it's hard to create reasonable heuristics. Some ideas: * Allow to move one step closer to a waypoint. * Allow to move one step closer to staircase (<,> keys). * If monsters are in sight because autoexplore has just stopped, then allow to backtrack the exploration path step by step. (This is particularly useful for stealthy characters.) === Default options set for blind players === I couldn't do this myself, but I can imagine that there's a set of options that generally improve gameplay for blind players. We should provide a default batch of such options. One new option that would be helpful: sometimes, Crawl explains something //only// through colours, for example on the skills screen (m). There should be an option that changes colours to text/symbolic feedback.