Overcoming 16-colour palette limitations in Dwarf Fortress

May 19, 2015

In Text Will Be Text version 5.46 I’ve added a way to use colour values from colour tokens for tiles. If any background or foreground colour is >= 100, then colour values will be taken from df.global.world.raws.language.colors[value-100]. One example of how to use this is the included script realcolors.lua, which processes material definitions and replaces tile colours with values from material.state_color.Solid, which will give results similar to the screenshots below.


After (note the different colours of wooden furniture):

Technically this was very easy to do but some work probably will be required from tileset authors. Some colours specified in vanilla raws are not quite correct, but this can be fixed (e.g. by using an external colour database, one option is to use Stonesense data, as Japa suggested).

The biggest problem here is that tilesets are designed to make use of background and foreground colours, while if we make use of colour tokens, there will be only one foreground colour. For the background colour, we’ll have to either leave it as is, or set to some fixed value (e.g. black or white), and that’s not what existing tilesets expect.

EDIT: On the other hand, if you specify colours manually (in raws or overrides.txt for overrides), you can still have both foreground and background colours set to anything you want.

comments powered by HyperComments