yellowstonegames / SquidLib

Useful tools for roguelike, role-playing, strategy, and other grid-based games in Java. Feedback is welcome!
Other
455 stars 46 forks source link

Support external palette files #46

Closed SquidPony closed 7 years ago

SquidPony commented 10 years ago

This should include the kinds that are available from http://www.colourlovers.com/ and similar sources if possible. Using a proprietary specification is not worth doing and would hinder useability.

tommyettinger commented 10 years ago

It would be best to implement .pal palettes first; if I recall correctly they are a very simple format. There's a loader here. Colourlovers, oddly, places Creative-Commons-style licenses on their palettes, but you can make your own on their site and be unhindered by anyone else's license. This originally suggested .act but Adobe's spec is, strangely enough, proprietary.

tommyettinger commented 9 years ago

I'm starting some very preliminary work on this; now put methods in SquidPanel can take (char, int, List) or (char, int[][], List) in addition to x and y and such. The int is just an index into the List, so this should be extremely simple to deal with from the programmer's side (as long as he/she doesn't remove colors from the List), and maybe won't even need an external format? Some predefined Lists for the popular Dawnbringer palette, the NES, Amiga, or other console palettes, etc. might be good. DungeonUtility can produce an int[][] of indexes from a dungeon of the kind it generates, too.

tommyettinger commented 7 years ago

So, a lot has changed in the last 16 months, and Filters.PaletteFilter allows a lot of this to be automated. In the last commit, I added DawnBringer's 16-color and 32-color palettes to SColor; automatically replacing all colors with one of the 16 colors looks fine, but oddly the 32-color palette looks less readable. I'm not sure external palette file formats are worthwhile to bother with parsing, since there are tons of formats, all incompatible. I think in many cases, very-low-color palettes are a disservice to the roguelikes that use them unless all of the colors are both a) not ugly by default and b) customizable for people with some form of color-blindness or simply different visual preferences. The customizable part we can do better on.

It's possible that a color filter could automatically alter colors that are close to pure-red or pure-green, so red becomes more orange and green becomes more cyan/teal (like modern stop lights). <EDIT: It turns out red-green color-blindness is significantly different from what I was envisioning, and brightness changes should be more useful than hue changes for the two most common kinds of color-blindness.> It wouldn't help for people with total color-blindness, but content-heavy text-based games (other than ones that use grayscale or black-and-white coloring, e.g. the original Rogue or The Slimy Lichmummy) would generally need to be designed specifically for the fully-color-blind audience to be playable at all. The next commit I make should have a simple red-green-color-blindness-accessible filter.

SquidPony commented 7 years ago

It seems like this one is closeable, but @tommyettinger I leave that to your discretion

tommyettinger commented 7 years ago

Yeah, we have the red-green colorblindness filter working, though I'd like some feedback from someone with that condition on whether it helps or not. Being able to customize the filters would be a good goal for the future, so a player could have the game configured to do something like what Pokemon Red and Blue did when played on a GameBoy Color, with different tints applied to a grayscale basis as desired (perhaps to play in stealth mode at work?). I'll close this and work on any palette-based stuff as it comes up.