computational creative direction
TIDE
Cellular automata identity for a luxury ocean-conservation foundation
TIDE
Volume III — A luxury ocean-conservation foundation
Computational Creative Direction — Cellular Automata
The research question
What if a brand behaved according to one computational law — the rule by which each cell knows only its neighbors, yet a whole coastline emerges?
TIDE is a conservation foundation that has to feel both luxurious and enormous — patient, oceanic, older than any campaign. The insight: the ocean has no designer. Its patterns are the sum of billions of purely local exchanges. TIDE’s identity is built the same way — from cells that see only their immediate neighbors, out of which coastlines, tides, and foam emerge on their own.
The computational principle
The engine is cellular automata: a grid where each cell’s next state depends only on the states of the cells touching it. Conway’s Game of Life is the famous case, but TIDE uses a continuous, moisture-based automaton — each cell holds a water level, and simple neighbor rules produce flooding, erosion, sediment, and the fractal edge where sea meets land. Global ocean patterns emerge from local decisions, exactly as Wolfram described.
The behavior engine
One grid drives everything. Cells exchange “water” with neighbors under threshold rules; the emergent boundary is the brand’s coastline.
// Moisture cellular automaton — the entire TIDE engine
class TideGrid {
constructor(w, h) {
this.w = w; this.h = h;
this.cells = new Float32Array(w * h); // 0 = dry land ... 1 = deep water
this.next = new Float32Array(w * h);
}
neighbors(x, y) {
const w = this.w, h = this.h, out = [];
for (let dy = -1; dy <= 1; dy++)
for (let dx = -1; dx <= 1; dx++) {
if (!dx && !dy) continue;
const nx = x + dx, ny = y + dy;
if (nx >= 0 && nx < w && ny >= 0 && ny < h) out.push(nx + ny * w);
}
return out;
}
step(tideLevel = 0.5, erosion = 0.02) {
const { w, h, cells, next } = this;
for (let y = 0; y < h; y++) {
for (let x = 0; x < w; x++) {
const i = x + y * w;
const nb = this.neighbors(x, y);
let wet = 0, sum = 0;
for (const j of nb) { sum += cells[j]; if (cells[j] > 0.5) wet++; }
const avg = sum / nb.length;
// local rule: drift toward neighbor average, pulled by the tide,
// and eroded where wet meets dry (the coastline)
let v = cells[i] + (avg - cells[i]) * 0.25;
v += (tideLevel - 0.5) * 0.1;
if (wet > 2 && wet < 6) v += erosion; // active shoreline erodes
next[i] = Math.max(0, Math.min(1, v));
}
}
this.cells.set(next);
}
coastline() { // cells straddling the edge
const edge = [];
for (let i = 0; i < this.cells.length; i++)
if (this.cells[i] > 0.45 && this.cells[i] < 0.55) edge.push(i);
return edge;
}
}
tideLevel is TIDE’s master dial — and, crucially, it’s wired to real astronomy.
The visual language
Every TIDE surface has a coastline — the emergent boundary between the automaton’s wet and dry cells — and that line is the brand’s signature gesture. It is never drawn; it is always computed, so it is fractal, specific, and unrepeatable, like a real shore. Luxury here comes from restraint: vast fields of near-empty water, a single precise coast, generous negative space that reads as depth.
Living typography
Letters begin as land — dry cells shaped like glyphs — and the tide comes in. As the automaton runs, water floods the counters and laps the stems; every headline literally becomes a coastline, its edges eroded into foam. At low tide the type is solid and readable; at high tide it dissolves into archipelago. Legibility follows the moon.
Motion rules
- Time of day changes the coast. The automaton’s tide level is bound to the local clock; the site’s coastline at dawn differs from dusk.
- Moon phase changes layout. Spring tides (new/full moon) flood more aggressively than neap tides — the identity is quieter mid-month.
- Weather API affects the surface. Live wind and swell data add turbulence to the cells; a storm offshore roughens the brand.
- Scroll is a wave. Scrolling sends a pulse of water across the grid that breaks and recedes.
Interactive website
The site is a slow tidal system. Rather than pages, it has states of the tide — content is revealed as water recedes and concealed as it returns, so the same visitor returning six hours later finds a different composition. It rewards patience, which is the entire ethos of conservation.
Physical applications
- Museum walls: long horizontal e-ink or projection panels running the automaton at real tidal speed — the exhibition’s coastline shifts over the day.
- Tickets and print: each printed at a captured tide state, stamped with its moon phase and timestamp; no two are alike.
- Interactive tables: visitors touch the surface to part the water, watching the coast reform under local rules.
- Water projections: the automaton mapped onto real reflecting pools in the foundation’s spaces.
The brand system
Guidelines are expressed as a tide table, not a style sheet: named tide states (Deep, Ebb, Slack, Flood, Spring, Neap) each with a permitted composition and typographic legibility band. “On-brand” means the automaton is running at a valid tide state for the context — a gala invitation runs at Slack tide (calm, legible); an activist campaign runs at Spring (turbulent, urgent).
Color: deep ocean, kelp, seafoam, sand, coral, storm. Water depth maps to hue — the deepest cells are near-black ocean, the coastline glows seafoam.
Open-source behavioral library
Shipped as tide.js, an eight-verb API over the automaton:
const sea = new Tide(canvas);
sea.Expand(region); // raise local water — land is claimed
sea.Erode(edge); // wear down the coastline into foam
sea.Flood(level); // raise the global tide
sea.Retreat(level); // lower it — reveal land and type
sea.Merge(a, b); // let two bodies of water join
sea.Current(dir, force);// bias neighbor exchange in a direction
sea.Sediment(region); // deposit — dry cells accrete into new land
sea.Foam(edge); // agitate the coastline band
Reflection
TIDE taught me that slowness can be a design material. The brand’s most distinctive quality is that it changes at the speed of the moon — too slow to watch, impossible to fake, and completely resistant to the “make it pop” reflex. Binding the system to real astronomical and weather data meant giving up frame-by-frame control in exchange for something no amount of art direction can buy: genuine, unrepeatable specificity.
The larger idea: for a cause that operates on geological time, an identity that visibly obeys the tides is more persuasive than any logo. The coastline is never the same twice, and that is precisely why you trust it.