Proposal — Visual Identity

← Wiki

Review Four directions for a look that is recognisably TerraTD. Menu, buttons, type, colour. Nothing here is in the game — this page is the argument, not the change.

The problem

TerraTD has a palette, not an identity. A screenshot of the menu could be any dark-mode web app with a cyan accent, and nothing on screen connects to the name — Terra is earth, and there is nothing earthy anywhere in it.

That is a taste claim, so here are the checkable ones, counted from the source:

The last point is the one that shapes everything below. An identity here has two halves — the CSS variables that dress the UI, and the config colours the canvas draws with. A direction that only changes one half will look half-changed.

The proposal

Adopt one identity, defined as three things and nothing more:

  1. A colour set — the existing 11 variables, retinted, plus a board palette generated by rule rather than picked. See the finding below: on the board, hue names what a tower does, and shape names which one it is.
  2. A type rule — which face carries the interface, which carries numbers, and one tracking value for emphasis.
  3. A shape rule — one corner radius, one border weight, one decision about whether glow exists at all, and on the board one silhouette per tower within its family.

Each of the four directions below is exactly that: a variable set, a font pair and a shape rule. The cards are rendered from those specs through identical markup, so what differs between them is only the spec — which is also the claim that this is a cheap change rather than a redesign.

What this is not

Not a layout change — the menu and HUD keep their current structure. Not new art, and not a renderer change: towers and creeps stay shapes drawn with canvas primitives. Not a theme system; this picks one identity rather than building a switcher.

The finding: colour cannot carry eleven towers

The first version of this page gave every tower its own hue inside a band around the accent. It looked coherent and it did not work — the towers could not be told apart. Measured with CIE76 ΔE, where below about 10 two small marks read as the same colour at a glance:

DirectionHue bandPer towerClosest pair
Survey70°7.0°ΔE 4.7
Tactical46°4.6°ΔE 6.9
Strata90°9.0°ΔE 5.4
Committed Neon150°15.0°ΔE 9.2

Widening the band does not rescue it. Eleven towers spread across the entire colour wheel get 32.7° each — still marginal for small marks in motion, and it throws away the band-around-the-accent idea that made each direction an identity in the first place.

So hue stops naming the tower and names what it does. The eleven fall into five behavioural families — Direct, Splash, Chain, Control, Toxin — at most three to a family, classified from each tower's own top-tier stats rather than by hand. Five hues spread wide are trivially separable; the three inside a family are told apart by silhouette. A player learns five colours and three shapes instead of eleven arbitrary colours.

It also answers the growth question the first version could not: a twelfth tower joins a family and takes the next silhouette, rather than needing a hue nobody has left. terra-v1 arrived at the same place from the other side — its "Glyphs" style put one polygon per entity so a late wave stayed legible.

The four directions

Live, not screenshots. Every set shows all 11 towers and all 5 creeps in its proposed board palette, drawn the way the game draws them — dark tier core, dark outline, creeps at their real relative radii, towers grouped by family. Each set reports the two numbers that decide whether its board works: how far apart the closest two families are (ΔE, wants 20+), and the lowest contrast any mark holds against its own background (wants 3:1+). Names and prices are the real ones.

Recommendation

Survey, with Strata as the fallback if it reads too cold in play.

Survey is the only direction that answers to the name. It gives the game a reason to look the way it looks — the board is terrain, the HUD is a legend — and that reason survives contact with future features in a way "we picked amber" does not. It also keeps numbers in mono, which the HUD pills and the tower shop both want anyway, since those columns are read as measurements.

Tactical is the most striking of the four and the most likely to tire. Mono type across an entire interface is a strong voice at first and a cramped one by the twentieth run.

Strata is the safest genuinely-distinctive option: warm, tactile, and the only one that will not be mistaken for another dark neon tower defense. It is the pick if Survey turns out to read as drab on a phone in daylight.

Committed Neon is on the table honestly. It is a day of work rather than a week, and "the current look, but decided" is a real improvement over the current look applied 65 different ways. It is just not an identity.

Phases

  1. Phase 1 — retint. Move the 37 hard-coded hexes into the variable set, then change the variables. Ships alone, and is worth doing whichever direction wins: today a colour change cannot actually be made in one place.
  2. Phase 2 — type and shape. One radius, one border weight, one tracking scale, mono for numeric columns. Touches the same files as phase 1.
  3. Phase 3 — the board palette. Generate the family and creep colours in src/config/ from the winning direction's rule, so a new tower gets a colour by joining a family. The contrast and ΔE floors move into tools/smoke.mjs at the same time, so neither can regress quietly.
  4. Phase 3b — silhouettes. Shape per tower within its family, in the renderer. After the palette because it is the only part that is not a value change: the selection ring, tier core and overcharge badge all assume a circle today.
  5. Phase 4 — the lockup. The TERRA·TD wordmark, the favicon and the apple-touch-icon. Last because it is the only part that needs a drawing rather than a value.

Risks & open questions