pattern

Use when

Anywhere the player might lose the avatar, misread a threat, or miss a path/interaction; setting the visual hierarchy.

Readability

What it is. Before a game can be fun it must be legible: the player instantly finds their avatar, reads what’s dangerous, sees where to go, and knows what’s interactive. Three tools — salience (the important thing out-contrasts everything), signposting (the world points the way), affordances (a thing looks like what it does). If the player can’t read it, no mechanic underneath matters.

Player fantasy. “I always know what’s going on.” The frame parses at a glance; attention lands where it should; nothing important hides. Confidence, not confusion.

Why it works

Levers

LeverToolExample
Value contrastSalienceBright avatar over a low-key ground
Colour rolePalette conventionRed = threat, gold = reward, blue = safe (kept consistent)
SilhouetteShape reads before colourDistinct enemy silhouettes; contour/autotile terrain masses
MotionDraws the eyeThe one thing moving is the thing to watch (pattern-juice-choreography)
TelegraphsSignpost threat in time~0.45s flash before an attack (system-telegraphs)
CompositionForeground/mid/backgroundDepth so objects don’t float in a void (JUDGE.md rubric 2)
Chrome restraintHUD out of the wayFramed, unobtrusive, nothing clipped (JUDGE.md rubric 6)

Applied across genres

GenreThe read that must hold
Bullet hell (genre-bullet-hell)Dense patterns that still read as coherent — density ≠ illegibility (FUN.md §7)
Action-adventure (genre-action-adventure)The attack telegraph (~0.45s) makes reactive play possible (FUN.md §4)
Tactics (genre-tactics)Perfect information shown honestly — telegraphed grid you can read (FUN.md §12)
Tower defense (genre-tower-defense)The range ring is the genre’s most important UI (FUN.md §8)
City builder (genre-city-builder)The live “+N” under the cursor IS the UI (FUN.md §17)
Precision platformer (genre-precision-platformer)Avatar out-contrasts scenery; a gap reads as jumpable
Horde survival (genre-horde-survival)The avatar findable inside a screen-filling swarm

Overdone when…

Readability has a mechanical floor and a taste ceiling — both are gated:

Worked micro-example

“A twilight-cliff platformer where the player never loses themselves.” The ground is low-key by design (mood), which is exactly the trap — the avatar can vanish into it. Fix it with a salience budget: (1) the avatar is the single brightest, highest- contrast token (a bright lantern on the dark cliff), so the eye locks to it every frame; (2) threats own red, pickups own gold, kept consistent so the colour language never lies; (3) a real background layer (a graded night sky, a moon, layered ridges) gives depth so nothing floats in a void. Prove it two ways: salienceIssues(...) passes pre-lighting (the mechanical floor), then npm run judge looks at the pixels and scores Readability and Depth ≥ 4 — the gate that caught those invisible mountains the salience check couldn’t.

Composes with

See also

This module rendersthe repo's markdowndirectly — edit it there, it changes here.