I've been playing around with Tilengine recently. I'm thinking of trying to embed it into Godot, but I'm not familiar enough with Godot's workflow to really implement that at the moment. But thanks to some discussions over on the Unity 3D boards, I started playing around with some custom shaders in an attempt to cook up a palette-based color solution for 3D models. And it worked.
Just for kicks, I started trying to get something similar implemented in Godot as well. And it has also been working. Turns out that it was a lot easier than I had expected. For those not familiar, really old pixel graphics frequently used color palettes in order to optimize performance while allowing for various graphical tricks. Graphics would only be defined once in an image, but then the image could be changed by altering the color mapping for each pixel of a given index. This was especially useful for re-coloring characters, enemies, and environments.
It was specifically a product of raster graphics, and largely got phased out once GPUs started to become popular. With a little shader coding, though, similar support can be added for modern rendering. Basically, you cook up a shader that keys off a pre-defined palette of colors, and then provide a list of input colors that the user can decide on for themselves. Then you create a material for each of the different color variants you want, and apply the material to the node you want to change. The initial tests I've been doing have been with 2D nodes, but the approach should work for 3D models as well. The biggest caveat is that all of your graphics have to be tailored to the palette you are using as a source. For 2D, you have to stick with the colors you choose for your "base" palette. For 3D, you have to map your UV coordinates to your pre-defined and laid-out palette.
I'll be posting a tutorial in the near future. Is anyone interested in this kind of backwards approach to color handling?