KoriaVault

The ground was grey

The complaint was that the game looked dead. That was true for two months and nobody could measure it, which is why it stayed true.

The style brief said warm and natural, never cold and technological, and it said nature gets as much art budget as buildings. Both are right. It also said muted, and the tree prompt said, in capitals, that the trees must look less colourful than a painted stone building would.

That instruction was a defence against neon. Applied to the terrain, this is what it produced:

ground   #5a6153   S  8%     arable   #6b6647   S 20%
forest   #4a5344   S 10%     outcrop  #5f5a4c   S 11%
seam     #4c5a58   S  8%     water    #33474a   S 18%
rock     #5c5c56   S  3%

brass         #C89B4A   S 53%
warm output   #FFC978   S 100%

Five of the seven surfaces under 12%, against machinery at 53 to 100. The brief said the landscape wins on area; the palette made it lose on colour, so it lost.

Three specific failures

Open ground and forest were the same colour — six degrees of hue and five points of lightness apart. Two different economies and two different build rules, indistinguishable without the tree sprites sitting on top of them.

Rock was at 3%. Not a grey stone. Grey.

The Korium seam was at 8%. The rarest surface in the game, the gate on the entire tech tree, painted as a grey that leans very slightly teal. The player could not see the thing they are meant to fight over.

Muted and natural are not the same word

The reference this game has always pointed at has confident green grass, blue water, and a crystal that is a colour nothing else on the map is. It is also warm, unhurried and completely free of neon. Separating those two ideas is the whole of the revision.

Nature is now painted between 28 and 45% saturation and structures separate from it by value — pale stone against saturated mid-tone earth — so brass stays an intrusion in a world that finally has some colour to intrude on. Rock and snow are still allowed to be nearly grey, because “nothing grows here” is what they mean, and that only reads when everything around them is alive.

The measurement is now a test

$ py tools/chroma.py img live.png 0 65 1360 590
  median S(HSV)   18.7%   target >= 34%   FAIL
  mean   V        36.5%   target >= 44%   FAIL

A number in a test suite instead of an argument in a chat window. The next screenshot either passes or it does not.

The largest single change is not on that list. Shadows were a near-black green — a darker version of whatever they fell on, which is what makes a lit scene look dirty rather than lit. They are cool now, a desaturated blue-violet, because a warm key light implies a cool fill and the sky is the second light source. One constant, and it does more than any individual surface value.