Somewhere in the ballpark of ten percent of males suffer from some form of colourblindness, the most common being red-green (that is, the inability to distinguish between those colours). Often, games (and other things) are made needlessly difficult by using red and green to indicate opposites - like an RTS where red means ‘enemy’ and green means ‘friend’, or a traffic light where red means ‘stop’ and green means ‘go’. Fortunately, these cases are easy enough to deal with - you can just swap blue for green. But what about when it’s a bit more complicated than that?
Colour blind Colour Bind?
The game I’ve been working on for the last few years is called Colour Bind, and as you might imagine, the game is about colour. My experience has shown me that you probably just now misread the name as ‘colour blind’ - a crappy pun, to be sure, but worse if I was making a pun about a group of people who are unable to play my game. Being about colour, is it going to be totally impossible for colourblind players?
I'm pleased to say that the answer to that question is “probably not”. I’m going to talk about the kinds of problems I’ve encountered trying to make Colour Bind colour blindness-friendly and how I’ve attempted to overcome them. My hope is to give developers some ideas for improving accessibility in their games.
I’ll be honest; when I first started working on Colour Bind, it didn’t occur to me that I’d be able to make it accessible in this way. I had kind of pre-emptively given up, because the game is so totally dependent on colour for puzzle elements, and c’mon, I’m just one guy making my first game, right? I just figured that accessibility was something I’d think about perhaps for my next game, when I had some more experience and the game was not so colour-oriented. In the end, though, I was won over by the desire to expand my audience that little bit, the vague sense that gratuitously ignoring colourblind gamers was kind of indefensible, and I must admit, a little bit of bloody-mindedness.
So, what are we up against? Well, in Colour Bind, the core mechanic is that gravity affects objects differently depending on their colour - red objects might fall down, green objects up, blue objects to the right, or whatever. It’s not constant from level to level - green objects falling up in one level doesn’t mean they won’t fall across in another level. Anything with any colour, the colour is relevant - coloured objects fall differently, coloured switches open coloured doors, coloured lasers change the colour of coloured objects that they hit. The rest of the game is in greyscale - the lack of colour indicates that objects aren’t part of the whole coloured gravity thing.
And then, it gets worse. The colours of gravity are the primary light colours - red, green, and blue. I can’t just switch blue for green like an RTS or a traffic light designer might - blue means something too. But it gets worse again, because colours in Colour Bind can be mixed! A yellow object is affected by the sum of green and red gravity, magenta objects get blue and red, and so on. So not only do all six of the primary and secondary colours need to be distinct, but you need to be able to tell which is the sum of which (that is, you need to be able to tell visually that a magenta object is not just different to blue or red, but that it is those two colours combined). Hopefully this illustrates why my initial plan was to give up.
Let’s start with a stupid solution
Being the programmer that I am, my first idea was to replace colours with patterns. It works in theory, right? A red pattern and a blue pattern will replace red and blue objects, and the red and blue patterns overlayed will mean magenta. I could even do this as a post-process with screen space textures, and everything will be theoretically playable! Even things that are quite small, like lasers, will be covered by this ultimate accessibility solution, thus allowing even a completely achromatic player to know what’s going on, and without much work on my part.
But, as so often happens, the ‘theoretically’ in that last paragraph was my undoing. It was hard to devise three patterns that are immediately obviously distinct, yet also have high enough frequency of detail to be visible even on very small objects. In theory, you could figure out what was happening by looking at the patterns, but in practice it was just too hard in some cases - you might as well just use trial and error to figure out what colour something was. This could conceivably be fun if I deliberately designed towards such a mechanic, but that way lies madness.
A Bit Of Everything
A colour blind gentleman said something to me at GDC that I took to heart. He told me that when it comes to games, he’s used to mucking about with settings and just wants to have enough clues that he can figure things out. With this in mind, I decided that perhaps a kitchen sink approach would work better. My new plan was “anything that might help at all, I’ll chuck it in, and people can use what works for them”. I may not be able to make the game just as playable in greyscale as it is in colour, but if I do enough things to help, perhaps I can help most of the players all the time, and all the players most of the time. With that in mind, the following things have been added:
- The patterns, mentioned (and shown) above. In-game objects have these, the player has them (but it’s a bit too small to easily see in that case), and the gravity dials that show direction have the patterns to match.
- A sort of one-dimensional pattern system for lasers. I couldn’t meaningfully connect them to the 2D patterns on objects, but at least it’s something to make them distinct from each other.
- The background music changes depending on your car’s colour. I was planning to implement this anyway, because it’s cool, but it also makes it easier to know what colour you are at any given time.
- The player can vary the intensity of individual colour channels. For instance, a player with red-green colourblindness can make red show up less intensely than green to create a distinction between those objects.
- The player can also invert all the colours in the game. I honestly don’t know the theory of why this would help anything, but a few people told me that it might, so in it goes.
- Apart from anything else, when a puzzle involves distinguishing between two different colours a lot, I’ve tried not to make those colours green and red.
I think the right way to look at colour bind accessibility in a game is this: Think about a feature being proposed for your game. If you implement it, you will automatically increase your sales/userbase/whatever by around five percent. Even if that feature takes a programmer, or even the programmer, a couple of weeks, it's probably not a bad investment, right? I would guess that making Colour Bind playable for colour blind players took more effort than it would for most games - probably a week or two of work for me, and I'm pretty much a one person team - and by my count it was well worth it.