How would you make a colorblind option?

Started by
15 comments, last by Chocolate 13 years, 9 months ago
Quote:Original post by swiftcoder
Somewhat more insidiously, we can also differentiate between shades of colour that people with "normal" colour-vision see as identical.

Really ? Interesting. Didn't know that.
Advertisement
One simple but nasty way to adjust the colours is to go to your graphics cards settings program. Find the place where it lets you adjust the colour settings. At least on mine it lets me adjust the red, green and blue channels separately which could be used to say make greens much darker than reds.

It will of course have the ugly side effect of making other things change colour too (e.g. making greens darker will make white go magenta too).

To get more detailed control over those settings you could use the SetGammaRamp() API but you'd need to use a proxy D3D dll to do that.
Quote:Original post by Yann L
Quote:Original post by swiftcoder
Somewhat more insidiously, we can also differentiate between shades of colour that people with "normal" colour-vision see as identical.

Really ? Interesting. Didn't know that.


It depends on the type of colour-blindness. It's rather complex so I'll just link the Wikipedia article.

Anyway. To the OP, just what kind of game are you making? If it's a 3D, shaded thing with realistic models and everything then you may be SOL (but do keep in mind that real life doesn't have a colour-blind option either ;) ). If it's a puzzle game, you could just store the "main" colours for blocks (or whatever) in a configuration file, and use some kind of algorithm to calculate highlight colours (e.g 25% towards white for highlight bevels, 75% towards black for shadows or something).
An easy option is to use one of the colorblind filter plugins for photoshop and take a look at your game as a colorblind person sees it. Then change your default color palette so that it's colorblind safe:
http://www.vischeck.com/downloads/

An easy general rule (not perfect obviously) is never use greens and reds adjacently. That's the most common form of colorblindness. A lot of games all but eliminate one of those colors for that reason, at least in their UI.

Red also sucked ass on CRT monitors (pixel bleed), which is why it makes only rare appearances in video games even today when it doesn't matter as much.

-me
I'm not making a game :) I just need this for myself and other colorblind players to enjoy games that have no colorblind option.

Ok, so I've messed with my graphics settings so that I think it will help colorblind gamers and myself. Now, how do I put it into an exe so that:
Person downloads exe
Person runs exe
Settings automatically change
Settings change back when exe isnt running

[Edited by - Chocolate on July 7, 2010 7:10:29 PM]
If you want it automatic one option is to write a proxy D3D DLL. You'll probably only need to hook SetGammaRamp() and say Present(). Make it so that when the app calls SetGammaRamp() it does nothing, and apply your colour blind settings with the real SetGammaRamp() function in Present().
Quote:Original post by swiftcoder
Quote:Original post by samoth
Colour blind people do have difficulties distinguishing certain shades of colour, though.
Somewhat more insidiously, we can also differentiate between shades of colour that people with "normal" colour-vision see as identical. This leads to some unpleasant surprises in "smooth" gradients...


I've read in the previous issue of "Spektrum der Wissenschaft" (german edition of Scientific American) that some women are Tetrachromats, where most people are trichromats (yes, this is why RGB works).

Very interesting, indeed. And most interestingly I find the fact that a really significant amount of human don't have the average view.
Quote:Original post by Adam_42
If you want it automatic one option is to write a proxy D3D DLL. You'll probably only need to hook SetGammaRamp() and say Present(). Make it so that when the app calls SetGammaRamp() it does nothing, and apply your colour blind settings with the real SetGammaRamp() function in Present().


Oh man that sounds complicated D: I'll have to give it a shot though.

This topic is closed to new replies.

Advertisement