Alternative to ASCII map for visually impaired players

I’m curious about this. I thought that an easy solution would be to take a (lined with some physical texture) checkerboard and some tokens, and map the game that way. Works best with NSEW and that’s how I map my games. Is that method too burdensome/ineffective?

The disadvantages to that method are (1) the inability to label rooms and (2) needing to make sure you don’t knock your markers out of place while feeling around your map. Additionally, mazes where room a is north of room b but room b is not necessarily south of room a would pose their own challenges.


I think I fall somewhat closer to the “blind cartographer” end of the spectrum. I’m pretty good at imagining shapes and can hold a mental map pretty well, occasionally supplemented with some written notes. I enjoy mapping more complex areas, and am one of those weird people who doesn’t mind a good maze now and then. It’s not always easy for me, but it’s a challenge I find fun, and I’ve found that it helps me IRL with my spatial awareness in the way that it intersects with my synesthesia.


My humble little game is now out for testing. See Beta testers required for 'Alchemist's Gold' for further details. Straight away, @rovarsson gave me some valuable feedback regarding something that I’d been thinking about, but hadn’t implemented. I have now changed the introduction as follows:

screen grab

For those that can’t see the image, the prologue is followed by a warning that reads: “Warning: During this game, you will find a map that is drawn using ASCII letters and symbols. This may sound weird in a screen reader. You can turn the map on using MAP ON or turn it off using MAP OFF. When the map is off, it is replaced by a verbose text description.”

It then asks if you would like the map to initially be on. In this way, you can select the default (map on or map off), but you can change it during the game. I hope this will work for the majority of users, including those that use assistive technologies, such as screen magnifiers.


Thanks for mentioning this topic. I only have a couple of small ASCII graphics in the game I’m working on, but I have now added a utility command, NONVISUAL, which the visually impaired player can use to switch those graphics to readable text.

If I had a large map to display, I don’t know how that would work. Probably it would be a problem.


Alchemist gold from parsercomp has a large map in ascii

I’d assume you could break the map into regions e.g. MAP 1 through MAP 5 and have cursory checks to make sure the player isn’t, say, trying to map region 5 before they get there.

With my chess games it seemed as though I almost had to have a text-based option e.g. "the queen is on c8. Your king is on b8. The rook is on a3. The enemy king is on b4. Some people who don’t need a screen reader might even have preferred that, and it was in fact easier to code.

I think there are potentially a lot of interesting solutions for a big game or area. But one thing I’ve found is that the text descriptions are a lot easier to debug than the ASCII maps. For a comparison, I took a snippet of code this discussion helped me modify. While I’ve eliminated variable declarations, etc., I think it’s pretty clear to see that the text description is a lot easier to debug than the full ASCII map. At least I found it was, once this discussion prodded me to look back at the code for the scope, and then I noticed a few bugs (including a run-on sentence in the text near the end! I’ll get to that.)

ASCII vs descriptive map of A Roiling Original store W
check examining Spec O Scope:
	if Spec O Scope is not examined, say "A telescope! Place to see![paragraph break]";
	now Spec O Scope is examined; [this is not caught if the rule below succeeds]
	say "[one of]It seems like an OK tool to look. You notice the word HI carved in big block letters on the Spec-O-Scope--the I being just the H rotated.[paragraph break][or][stopping][i][bracket]"; [bold-ok]
	abide by the text-spec-o-scope rule;
	process the spec-o-scope draw rule;
	the rule succeeds;

this is the text-spec-o-scope rule:
	if screenread is false:
		say "[one of]Fourth wall time--w[or]W[stopping]ould you prefer a full-text summary of the map in the Spec-O-Scope to a text map?[close bracket][r][line break]";
		unless the player regex-prompt-consents, continue the action; [I have a command to force a reply to yes/no since Zarf's simple-scripts, being designed to be simple, freeze on this]
	say "An area three rooms square. A river, maybe a lake, borders it on the north and east. About [number of accessible rooms in words] area[if number of accessible rooms is not 1]s are[else] is[end if] open in the center, with [number of sideview rooms in words] open off to the side. In particular, the highlighted area just north of the north shore is [unless mardier admirer is moot]un[end if]available, another just west is [unless ingrates are moot]un[end if]available, a particularly important location east of the east shore seems [unless bonker is moot]un[end if]available, and just south of it, an area looks [unless natives site van is moot]un[end if]available. It also appears the area just west of you is highlighted, there's something northeast of the water.";
	process the spec-o-scope draw rule;
	the rule succeeds;

description of Spec O Scope is "You look into the Spec-O-Scope and see:[paragraph break][fixed letter spacing]
[line break]  !      *
[line break]  [pc of cinema and north]~~~~~~
[line break]+[pc of cinema and west].[pc of cinema and east].[pc of deltas and east].~ +
[line break]  [pc of saltbed and north] [pc of gradient and north] [pc of strait and north]~
[line break]  .[pc of saltbed and east].[pc of gradient and east].~
[line break]  [pc of copse and north] [pc of everglade and north] [pc of garden and north]~
[line break]![pc of copse and west].[pc of copse and east].[pc of everglade and east].[pc of garden and east]!
[line break]  [pc of topside and north]   [pc of garden and south]
[line break]  !   +[variable letter spacing][paragraph break]| = passage, x = no passage, . = location, ! = important, + = treasure."

to say pc of (myr - a room) and (myd - a direction): [passage character]
	let maybe be true;
	repeat with myg running through guardians:
		now maybe is false;
		if myr is gualoc of myg and myd is guadir of myg, now maybe is true;
		if myr is far-room of myg and myd is opposite of (guadir of myg), now maybe is true;
		if maybe is true and myg gendermatches:
			say "[if myg is not moot]x[else if myd is west or myd is east]-[else]|[end if]";
			continue the action;
	say "[qr]"

Anyway, I can’t make any guarantees as to the quality of my code, but ASCII maps where you modify a few things seem trickier than text descriptions. But

  1. hopefully this gives an ideas of different types and amount of coding needed for each and a data point to say, yes, it’s probably helpful to people who don’t use screen-readers and
  2. I appreciate topics like this, as they push me to look into code I sort of let sit because it probably had bugs, but I worry if I tried to clean them up, more would break. The code as-is may be messy, but it’s a bit better now. So, thanks.