dev notesthree.jscharacter art

How a Flat Grey Mannequin Turns Into a Person: The Skin-Tone Trick

The whole roster of characters in our newest games is faceless, single-tone, and free to use. Here is the one change that stopped them reading as robots.

By GamerX6 min read
How a Flat Grey Mannequin Turns Into a Person: The Skin-Tone TrickPlay Crowd Rush

The character roster behind Crowd Rush, Riot Line, and a few other arcade games shares one thing in common: every model is faceless and recolored to a single flat tone, because that is what made the whole library free and legally uncomplicated to use. The problem is that a person rendered in exactly one color, head to shoe, does not read as a person. It reads as a mannequin, or worse, a robot. No amount of better lighting fixed that on its own.

The fix was already sitting in the file, unused

Every character model in the set is built from several separate mesh pieces, and it turns out those pieces already have sensible names baked in from whoever modeled them: "Head_1," "Body_2," "Legs," "Feet," "Backpack." Nobody was reading those names before, they were just being painted the same single color as everything else. The whole fix was to stop doing that: tint any mesh with "Head" in its name a warm neutral skin tone, and tint everything else the character's actual outfit color.

  • No new textures. No new art budget. Every model in the roster already carried this structure, just unused.
  • One shared function change fixed every game pulling from the same character library at once, not one game at a time.
  • Rigs that only have a single fused mesh (no separate "Head" piece to target) fall back to the old flat-tone look automatically, so the fix never breaks anything, it just does not apply everywhere.
🧵The single biggest visual complaint about the early builds of these games was some version of "why does the character look robotic." It was never the pose, or the lighting, or the animation. It was one flat color pretending to be skin, hair, and clothing all at once.

Small technical decisions, visible results

None of this shows up in a changelog anyone would read twice. It is a few lines of code checking a mesh name before applying a color. But it is the difference between Riot Line's defender reading as a person in a cyan jumpsuit and reading as a cyan action figure, and that difference is the kind of thing players notice immediately without being able to say exactly why.

Keep reading