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.
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:
var(--accent) is used 65 times against
var(--accent-2)'s 8. In practice the identity is one cyan,
applied to everything that needs emphasis.main.css outside the variables.
Those would not follow any change, which is why "just swap the colours" does not
work today.src/config/, not in CSS, across
— towers.Adopt one identity, defined as three things and nothing more:
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.
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 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:
| Direction | Hue band | Per tower | Closest pair |
|---|---|---|---|
| Survey | 70° | 7.0° | ΔE 4.7 |
| Tactical | 46° | 4.6° | ΔE 6.9 |
| Strata | 90° | 9.0° | ΔE 5.4 |
| Committed Neon | 150° | 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.
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.
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.
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.
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.apple-touch-icon. Last because it is the only part that needs a drawing
rather than a value.font-src 'self', so Google Fonts is blocked outright. Every direction
above therefore uses system stacks. A real display face for the wordmark is possible
as a self-hosted woff2 (~20 KB), but it is a deliberate decision, and only the
lockup genuinely needs one.styles/doc.css. Either they track the game or they
deliberately do not; right now they track it by hand, which will drift.