a vector-trail generalization of slime-mold transport
Classic Physarum sims have agents drop a scalar pheromone, sniff a couple of points ahead, and turn toward the brighter side; the trail blurs and fades. Fluoddity — created by aphid91 (“Oops! All Paperclips”) — generalizes that on three axes:
① Vector trails. Each cell of the field stores a 2D flow vector, not just an intensity. Hue here = flow direction, brightness = speed.
② An evolvable black box. There is no hard-coded “steer toward bright.” Each agent feeds its left/right sensor readings into a small Fourier-feature function — the rule — that outputs a push and a sideways hop. Left/right symmetry is enforced so nothing spins by bias alone.
③ Cohorts & selection. The population is split into cohorts, each a mutation of the base rule, so you can hunt for shapes you like.
It runs entirely on the GPU: a particle buffer, a trail texture, and three passes per step — move → deposit → diffuse.
Each physics step is three GPU passes over a few hundred thousand agents and a trail field:
① Move. Every agent reads the field at two sensors, splayed by sensor angle at sensor distance ahead of its heading. The two flow readings are rotated into the agent's own frame (forward / left) and fed to its rule: a 10-term Fourier-feature function, 4 inputs → 4 outputs. The rule is evaluated twice — once with left/right mirrored — and averaged, which cancels handedness so nothing spins by bias alone. Out come a force (added to velocity, then drag bleeds it off) and a strafe (added to position, no momentum). Then it moves and wraps at the edges.
② Deposit. Each agent stamps a small Gaussian of its velocity vector into a brush texture, added on top of its neighbours. The trail therefore records the direction and speed of flow at every point — this is the “vector trail” that sets Fluoddity apart from scalar pheromone.
③ Diffuse. The field is blurred (4-neighbour, by diffusion) and blended with the fresh deposits: field = field·persistence + deposits·(1−persistence). Writing the fade as a mix keeps the equilibrium brightness independent of the persistence value.
The genome. A single rule seed deterministically generates those 10 Fourier centers; each cohort then applies a small mutation, so adjacent cohorts are smooth variations of one creature. “New organism” rerolls the seed; “mutate” nudges it. That space of rules is what you're foraging in. Render: flow direction → hue, speed → brightness, with a gamma pull and an asinh tone-map.
aphid91's “temperature” intuition is the compass: too hot and it's structureless brownian gas; too cold and it freezes or dies; the good stuff lives on the edge, and the sliders + selection are how you steer toward it.
Conway's Game of Life (1970) — the great-grandparent. Dead-simple local rules on a discrete grid, yet unbounded emergent structure. The founding proof that complexity can be grown, not designed.
Physarum transport models — the direct parent. Jeff Jones (2010) formalized agent-based Physarum polycephalum (slime mould) networks; Sage Jenson (mxsage) made them famous as living-looking art. Agents drop a scalar pheromone, sniff three points ahead, turn toward the strongest, and the trail diffuses and decays. Fluoddity is this model, generalized: scalar trail → vector flow field; the hand-coded “steer toward bright” → an evolvable Fourier black box with enforced mirror symmetry; one species → cohorts under artificial selection.
Cousins, same neighbourhood: Reaction–diffusion / Turing patterns (Gray–Scott) — continuous chemical fields making coral, spots and stripes; Lenia (Bert Chan) and SmoothLife — Conway made fully continuous, blooming into smooth lifelike “creatures”; Boids (Reynolds, 1986) — agents steering from local neighbours. Fluoddity sits exactly where agent-based steering, a diffusing field, and evolutionary search overlap.
About this page. This is an independent, clean-room reimplementation of the published algorithm, built so you can play in the browser. It is not aphid91's code. The real thing — desktop engine, the polished web port, and the configs behind the videos — is the original and is far richer:
→ original & source: github.com/aphid91/Fluoddity
→ core engine + WebGL demo: aphid91.github.io/Fluoddity-Core
→ follow the work: @all-paperclips.bsky.social
Controls: space pause · r reset field · n new organism · m mutate · h hide panel · d draw mode. In draw mode, drag on the canvas to push the flow field around.