Telling Your Characters Apart at a Glance

The silhouette test everyone runs is the wrong test, because it is run one character at a time. The line-up test, and what fails first at distance.

Four crew members with clearly different suit shapes stand in front of a bright ship viewport. Art made in Makko.

Your six characters are done, each one reviewed and approved. Then the first playable build goes in, the camera sits where it will really sit, and a tester stops mid-sentence to ask which of the two people on screen is the medic.

Nobody approved a bad character. The cast is still broken. Every character was checked alone, and confusion is not a property a character can have alone. It is a relation between two, and a per-character review cannot see a relation.

The short version. Fill the whole cast black, render it at play size, put every character in the same pose in one row, and look for pairs instead of quality. Separate any pair by changing mass and proportion first, head-to-body ratio second, a projecting extremity third, and outline detail never. Run the row again on the walk cycle, because characters that separate standing converge while walking. Do it before anyone animates about 47 frames per character.

Why the solo silhouette test passes a cast that fails

The standard test is real. Fill the character 100 percent black and ask whether you can tell what it is. For a single asset it catches mush in the pose, arms glued to the torso, a weapon that vanishes into the body.

Applied to a cast it fails twice. The question is too easy: a black-filled humanoid asks whether this is a person, and every humanoid answers yes, so the test confirms the category and never touches identity. And you supply the answer yourself, since you already know whose file you opened. Recognition with a known target is far easier than against a field of candidates.

So two characters can each pass the solo test and be interchangeable side by side, because neither test ever asked about the other. A per-asset gate cannot detect a between-asset defect.

The line-up test, and how to run it

Test the cast, not the character. Same fill, all at once, identical conditions.

  1. Render at play size. Not canvas size. Measure how many pixels tall a character occupies at your default camera. A cast authored on a 560 px canvas may ship at a fraction of it.
  2. Fill 100 percent black. Lock alpha, one flat value over every opaque pixel. No outline, no dark gray, no shadow. Surviving value variation gives your eye a cue the player will not get.
  3. Same pose for everyone. Frame one of idle, all facing the same way, or you are measuring poses instead of characters.
  4. Align the ground line. All feet on one horizontal. Height only reads against a shared floor.
  5. One row, close together. Generous spacing gives each its own frame, and that is the solo test in disguise.
  6. Scan for pairs, not quality. The question is whether any two cells are the same shape. Read left to right, then right to left, then shuffled.
  7. Hand it to an outsider. Ask how many different characters are in the picture. An undercount is your answer.

Ten minutes for six characters. Keep the sheet in your art bible and regenerate it whenever the cast grows: a seventh character can break a pair that was clean before, and nobody notices, since it looked fine on its own.

The solo test passes a cast the line-up failsPlate 01
TEST ONE · EACH CHARACTER ALONE, AT CANVAS SIZE ✓ ✓ ✓ ✓ ✓ ✓ ALL SIX PASS ALONE YOU SUPPLY THE ANSWER: YOU KNOW WHOSE FILE YOU OPENED TEST TWO · THE SAME SIX AT PLAY SIZE, ONE ROW, SHARED GROUND LINE 1 2 3 4 5 6 CELLS 3 AND 5 ARE THE SAME SHAPE ✗ THE CAST FAILS CONFUSION IS A RELATION BETWEEN TWO CHARACTERS, AND A SOLO REVIEW CANNOT SEE ONE SAME FILL SAME POSE SAME GROUND LINE CLOSE TOGETHER SCAN FOR PAIRS, NOT FOR QUALITY ASK AN OUTSIDER HOW MANY CHARACTERS ARE IN THE PICTURE. AN UNDERCOUNT IS YOUR ANSWER.
Ten minutes for six characters, and the timing is the real lesson. Run the row before you commission a cycle: idle, walk, run, jump, attack, hit and death runs about 47 frames per character, and every one of them carries the old proportion.
The solo test asks whether a black shape reads as a person, and every humanoid answers yes, so it confirms the category and never touches identity. You also supply the answer yourself, since you already know whose file you opened. Run the same six at play size in one close row on a shared ground line and scan for pairs instead of quality. Confusion is a relation between two characters, and a per-asset gate cannot detect a between-asset defect.

The four properties that separate characters, ranked

Rank them by how much downscaling and motion they survive.

Remove one property at a time and watch the pair collapsePlate 02
TWO CHARACTERS · ONE PROPERTY REMOVED AT EACH STEP ALL FOUR PRESENT ✓ TWO SHAPES EVERY LEVER STILL WORKING MINUS RANK 4 OUTLINE DETAIL ✓ TWO SHAPES IT AVERAGED INTO A SOFT EDGE MINUS RANK 3 EXTREMITY ✓ TWO SHAPES THE GAP CLOSED AT PLAY SIZE MINUS RANK 2 HEAD TO BODY ✓ TWO SHAPES THE HEAD BLURS INTO SHOULDERS MINUS RANK 1 MASS, PROPORTION ✗ ONE SHAPE NOTHING LEFT TO TELL THEM APART RANKED BY HOW MUCH DOWNSCALING AND MOTION THEY SURVIVE RANK 4 · OUTLINE DETAIL GOES FIRST RANK 3 · PROJECTING EXTREMITY GOES SECOND RANK 2 · HEAD TO BODY RATIO GOES THIRD RANK 1 · MASS AND PROPORTION SURVIVES
Each step removes one property and asks whether an outsider still counts two characters. Outline detail averages into a soft edge at the downscale, the projecting extremity merges once its gap closes, and the head partition blurs into the shoulders next. Mass and proportion survive longest, so every decision-distinct pair needs a difference at rank 1 or rank 2. Ranks 3 and 4 confirm an identification, they do not make one.

1. Overall mass and proportion

The area of the black shape and the ratio of its height to its width. First, because it is the only property here that is scale-invariant: halve the resolution and a proportion is unchanged, while every absolute measurement halves. Short and wide against tall and narrow reads at any size where the characters are visible.

2. Head-to-body ratio

A large internal partition of the mass, not a detail, and a ratio for the same reason the first one is. It ranks second only because it needs the head to stay separable from the shoulders, which a hood or a hunched pose takes away. Its strength is stability under motion: a head does not change size during a walk cycle, so the difference appears in every frame.

3. One projecting extremity or accessory

A staff, a braid, an antenna, a coat flaring past the leg column. Most teams reach for this first. It ranks third because it is an absolute size rather than a ratio, so it has to clear a pixel floor: if the gap between staff and body closes at play size, the staff is part of the torso. Test the gap, not the object. It is pose-dependent too, clean when the staff is vertical and gone when it swings across the chest.

4. Outline detail

Fur trim, a ragged hem, buckles cutting the boundary. At authoring scale it looks like strong identification. At the downscale it averages into a slightly soft edge, and one slightly soft edge looks like any other. The trap is that it is cheap and feels productive, so a cast in trouble gets more of the single thing that cannot help. The same arithmetic governs icon legibility at shipping size.

The rule: every pair in your cast needs a difference at rank 1 or rank 2. Ranks 3 and 4 confirm an identification, they do not make one.

Characters that read apart standing converge in motion

A cast can pass the line-up on idle frames and still fail in play, because the player rarely sees a character standing still. A walk cycle is a shared constraint that pushes every humanoid toward the same shapes: a wide stance with opposed arms at contact, a narrow vertical column at the passing position. Passing is the worst case. It deletes stance width, arm position and coat flare from everyone at once, leaving raw mass and proportion.

There is a direct measure of how much a silhouette's footprint moves between actions. Across six baked sheets for one Makko character, cell height was 260 on every sheet, while cell width ran from 119 px on idle to 221 px on celebrate, set by how much lateral room the action needs. Nearly double the footprint, same character, same scale. Compare a cast at rest: a crew of six measured 295 to 311 px wide on a locked 560 px height. One character changes its own width far more between actions than six characters differ from each other.

So run the line-up three times: idle frame one, the walk passing position, and the extreme frame of whatever action the player watches most. Survive the passing row and you survive most of the game. Finding those frames is easier once you know how a cycle is built, which loop points cover.

Color and value are a second channel, and hue is the third

Silhouette is the primary channel. Value is second. Hue is a distant third and the first thing the game takes away from you: a dark scene collapses hue long before it collapses value, and a saturated red and a saturated green at the same lightness become one gray under low light, behind a fire effect, and for a large share of colorblind players.

So give each principal a value slot rather than a color: one light against the background, one mid, one dark. Better, give them different value distributions, because dark top over light bottom against light top over dark bottom survives desaturation. Check it with the same row, desaturated to grayscale instead of filled black, over your darkest scene and your brightest.

One hard exclusion: if color is reassigned at runtime by team colors, dye systems or customization, hue carries zero identity and the load falls on silhouette and value.

What fails first when the camera pulls back

Test at your most zoomed-out gameplay state, not the default one the art was reviewed at. A strategy layer or a minimap sits further out, and that is where the cast breaks. Properties fail in reverse rank order.

  1. Outline detail goes first, usually before the default camera.
  2. The projecting extremity goes second. The gap closes, the accessory merges into the mass, and the cast silently loses the feature the team relied on. This is the expensive failure, since rank 3 is where most casts put their differences.
  3. Head-to-body ratio goes third. The head shrinks to a few pixels and the partition blurs out.
  4. Mass and proportion survive longest, and at the far end of the zoom they are all that is left.

Two effects at distance are not about individual characters. Height differences compress against the growing gaps between them, so a cast separated only by height reads as one height. And two silhouettes that touch merge into one mass, which no per-character work fixes. That is row E below.

When two characters should look the same

A distinct silhouette promises the player that this character is individually important. Make that promise to a background NPC and the player spends attention checking whether the shopkeeper's cousin is a quest giver.

The rule is decision-based, not narrative. A character needs a distinct silhouette exactly when the player must make a different decision about it than about the character beside it.

  • Uniformed groups. Guards, soldiers, security units. The decision is about the group, so the group should read as one shape repeated.
  • Crowd and ambient NPCs. Readable as background means not readable as individuals. Two or three shared body types across a town is correct design.
  • Enemy tiers with the same behavior. If the small one and the large one are fought identically, differentiate by size and leave the shape family intact.

Where a group holds a member the player must treat differently, a sergeant who buffs the others or a shielded variant approached from behind, that member needs a rank 1 or rank 2 difference, not a badge. A helmet crest is rank 4 and will not be seen. Make the sergeant bulkier, and change one property, not three, or the group stops reading as one.

The cast silhouette audit

Fill this in once per cast, rerun on every change.

# [GAME] - Cast Silhouette Audit v0.1

## Sizes
Play size (height on screen, default camera): [n] px
Zoomed-out size (most distant state):         [n] px

## Roster
name | rank1 proportion | rank2 head:body | rank3 extremity | group
[  ] | [wide+low]       | [large]         | [what, where]   | [solo]
Rule: every decision-distinct PAIR differs at rank 1 or rank 2.

## Rows: black fill, play size, same pose, shared ground line
[ ] A: idle frame 1
[ ] B: walk, passing position
[ ] C: extreme frame of most-used action
[ ] D: row A at zoomed-out size
[ ] E: row A, overlapping by one third

## Value rows: grayscale, over darkest and brightest scenes
[ ] Each principal holds a distinct value slot AND distribution
[ ] Hue carries no identity if colors change at runtime

## Groups
[ ] Uniformed and crowd groups read as ONE shape family
[ ] Members needing a different decision differ at rank 1 or 2

## Cold test
[ ] Outsider counts characters in row B; count matches roster

## Gate
Run before animation. Re-run on every cast addition.

A worked example: two characters colliding

A crew of six for a station-survival game. In row B, cells 3 and 5 are the same shape: the engineer and the medic. Both mid-height adults in coveralls, both carrying a shoulder bag, both approved alone.

Which one changes. The less important one. The medic is on screen every mission and appears in the store page art, so the player's memory is anchored to that shape. Moving an anchor is expensive and can collide with the other four. The engineer changes.

Which property. The instinct is to swap the engineer's bag for a toolbelt or add pipe detail to the coveralls. Those are rank 3 and rank 4, and neither shows at play size. Go to rank 1: widen the engineer's torso and shorten the leg column so the mass sits low and broad, and keep the medic tall and narrow. A proportion survives the zoom-out row and the passing frame.

Then reinforce at rank 2. Give the engineer a bulkier head, a hard hat or a welding rig, so the head reads larger against a body that is now shorter. Rank 1 and rank 2 pointing the same direction is how a difference becomes obvious rather than merely present. Only after that, move the medic's bag from shoulder to hip.

Rerun the whole row. The engineer is now low and broad, and may collide with whoever was already the heavy. Fixing one pair often creates another.

Timing is the real lesson. All of that is a re-draw. At concept stage, where cast art is authored square at 1024 x 1024 before being cut to the game canvas, it costs one drawing. After animation, a set of idle, walk, run, jump, attack, hit and death runs about 47 frames per character, every one carrying the old proportion. Run the line-up before you commission a cycle.

Frequently asked questions

My cast is all humans. How different can they get?

Further than you think, and the lever is proportion rather than species. Build the cast as body families: short and broad, tall and narrow, mid with a large head, mid with a small head. Range in an all-human cast comes from build, posture and the volume of clothing, all rank 1 and rank 2. It does not come from hats.

What if the line-up says my cast is fine?

Then you ran it at one size and one pose. Run rows B and D before you believe it. The idle row is the most forgiving, and the row everyone runs. If all five rows are clean and an outsider counts your characters correctly, you are done.

Does this apply to a top-down game?

Yes, and harder. A top-down or three-quarter view compresses the vertical axis, so height, the easiest differentiator to author, contributes far less than in side view. Differentiation moves to footprint width, shoulder shape and the plan-view outline of hair, hats and packs. Run the rows at your real camera angle.

When in production do I run this?

At concept approval, before any animation is commissioned, and again after every cast addition. Run it when you lock frame sizes in your sheet spec: both are about what a character occupies, not how it looks.