For context, I have a game where a player can build whatever on their plot of land. I would like to support a color wheel, however, I don’t want to include one due to how little it can be serialized when it’s saved to a datastore.
More on the serialization issue, and why saving colors suck.
When saving a Color3.FromRGB value, you’ll start with this:
Color3.fromRGB(153, 167, 135)
This can’t be saved in datastores currently, and you’d have to serialize it. It’d look something like this:
C = "153:167:135"
You can serialize this further, but you’re never going to get it smaller than 153:167:135
, without some sort of compressor, which means it’s stuck at a minimum of 11 characters.
However, using preset colors, I can make it as short as this:
C = 53
Then when the datastore script is loading the color for the part, it can use a global module script that can convert this ID to a real color. Like so:
C=53
→ [53] = Color3.fromRGB(153, 167, 135)
Changing 11 characters to only 2-3 characters, is a huge gain when saving data, allowing you to save more parts and objects. With 3 characters per object color, you can have up to 999 preset colors, and even more if you use the IDs weirdly, like 007 and 7.
Every game is different when serializing data, some don’t even have to, but with plots of land and building, you have to save position, rotation, color and more for every object, so serialization is usually a must have if you want them to be able to build their hearts out with little to no limit.
The issue is I don’t know how to include every color that players could possibly want. Like getting a slightly dark green versus a slightly desaturated green, and then doing this for every color plus monochromatics.
I tried going to color palette websites but at some point I started getting too many blues or too many reds that started to look identical.
Is there any way to generate a color palette that has all colors that I could possibly need, but with tons of different shades and values?