How it was made
PLASMODIUM is a real Physarum polycephalum agent simulation — thousands of filaments sharing one pheromone field, self-organising into the leanest vein network that connects the food you place. No frames are scripted; everything you see is emergent. This guide records the build.
A fictional biology lab's public demo of slime-mould computation. Its one job: let a visitor drop three crumbs and watch a brainless single cell compute the shortest network between them — the Tokyo-rail experiment, running live in a canvas. Everything else on the page stays quiet so the plate carries the whole show.
The whole palette is a single gradient: pheromone intensity mapped from dark substrate up through sage and mould-yellow to chalk. What you read as a colour scheme is literally the trail map's value ramp. The bright mould yellow is reserved for veins and marks; body text uses chalk so it clears 4.5:1 over the dark field.
Archivo's grotesque density carries the display; JetBrains Mono runs every readout, label and code block — the voice of the instrument, not the organism. The typographic bravery is the hero: Archivo Black set enormous and tight, one word pulled into mould-yellow.
Set at 900 with −0.02em tracking for the hero, 800 for section heads. Wide apertures hold up at 7rem without feeling decorative.
All labels, the live HUD (filaments / crumbs / step), the eyebrow, and the algorithm block. Tabular figures keep the counters from jittering.
One HTML canvas, no libraries. A Float32 trail map holds pheromone; thousands of agents in typed arrays read and write it. Each frame every agent samples the trail at three points ahead (left/centre/right), steers a few degrees toward the strongest, steps forward and deposits scent. The whole field is then blurred by a separable 3×3 box and multiplied by a decay factor — so routes survive only if traffic keeps outrunning decay. Food "crumbs" pump scent into a soft radius each frame; the diffused gradient is what pulls distant filaments in, and their reinforcement is what fuses the network. The trail map is rendered through a 256-entry colour LUT to a small offscreen buffer, then drawn up with bilinear smoothing plus a faint additive pass for the glow. That emergent balance — reach every crumb, waste as little tube as possible — is the entire signature; nothing about the vein network is drawn by hand.
every frame, per agent: fL,fC,fR = trail.sample(pos + heading±SA · SO) # taste 3 ways if fC > fL and fC > fR: keep heading elif fL > fR: heading += RA # lean to richer elif fR > fL: heading -= RA else: heading += random ± RA pos += heading · SS # step (torus wrap) trail[pos] += DEP # deposit scent every frame, whole field: trail = boxBlur3x3(trail) · DECAY # diffuse + fade