The making of plods

4,000 walking microbes, zero drawings

Nothing in this collection was drawn. Not one frame, not one sprite, not one pixel placed by hand. A token number goes in, a small creature comes out, and it walks. The same number always grows the same creature, forever. Here is how deep that goes.

Plod 124 walking through the lime world Plod 121 walking through the lime world

First, the name

plod is a real English verb: to walk slowly and heavily, like you are dragging yourself through mud. The word is onomatopoeic, it was born as the sound of a step pressed into wet ground. So the name is a meaning and a sound at the same time, and it is also the third person of the verb. It plods. The creature is named after the only thing it ever does, and I love it for that.

One number, nine dice

A plod is nine traits: Form, Skin, Organelle, Nucleus, Cilia, Texture, Habitat, Neighbours, Fibre. Each category holds exactly 200 variants, so the space is 200 to the ninth power, about 5 × 10²⁰ combinations. I minted 4,000 and checked that every trait set is unique. It is, 4,000 out of 4,000.

Each trait rolls from its own hash stream, sha256 of the category name and the token id. Separate streams matter because traits must not correlate: if skin and nucleus rolled from one stream, certain skins would always arrive with certain nuclei, and the rarity math would quietly rot underneath the whole collection.

Some rolls get overruled. A nucleus has to read through the shell, so if it lands within 46 luminance points of the skin it rerolls darker. A shell has to stand off the acid lime, so skins too close to the background swap for distant ones. These rules are computed, not curated. I never once picked a pretty pair by hand, and that is the part I am proudest of.

A body is a field, not a picture

The silhouette is a chain of metaballs along a spine. Threshold the field and you get the shape. Take the gradient of the field and you get surface normals, and normals are the whole game: light becomes the dot product of normal and light direction, quantized into four to seven bands. Shading by distance to the edge is the classic amateur move, the object glows in the middle like a pillow. Shading by normal gives you a real terminator, a core shadow and a rim.

The ramps are not darker copies of one colour either. Hue rotates along the ramp, shadows drift cold, highlights drift warm, saturation peaks in the middle. Dithering lives only in a narrow window around band boundaries. Dither everywhere and you get noise. Dither at the boundary and you get pixel art.

Inside the shell there is a nucleus shaded as a proper sphere, organelles stacked along the spine, granules that drift along closed loops so they always come home, vacuoles, texture. Everything is placed by the token's own stream, and everything moves with a slight lag behind the body, because soft parts catching up to a skeleton is what makes motion look alive.

The walk

The legs are two-bone IK with deliberately unequal bones, 0.38 upper to 0.62 lower. Equal bones throw the knee sideways and the leg reads broken.

One law governs everything: a planted foot does not move relative to the ground. The world scrolls at 2 px per frame, so during stance the foot travels backward at exactly 2 px per frame, no easing, no mercy. Break this law and the creature moonwalks. I verify it numerically, printing foot positions frame by frame, because eyes forgive and numbers do not.

Eight frames of one step laid side by side
Eight frames of one step. Watch the planted foot: it slides back at exactly the speed of the world, which is what standing still on moving ground means. Scroll the strip sideways.

The cycle is 16 frames, the loop is 64, so every plod takes exactly four steps per loop, forever.

A world that cannot stop

Four parallax layers plus a backdrop. The scrolling layers obey one arithmetic law: frames times layer speed must divide evenly by that layer's tile width. Sixty-four frames at speed 2 against a 128 px tile lands exactly, so frame 64 equals frame 0 by construction, not by luck.

The backdrop refused to obey. It holds the big shapes, honeycombs, capillaries, a giant cell half the frame tall, twenty-five architectures in total, and big unique shapes cannot live inside a 32 px repeating tile. So the backdrop does not scroll at all. It sways on a sine with a whole number of periods per loop. A sine comes home on its own, the seam stays closed, and the image can be any width it wants.

Frame 0 and frame 64 of the same plod, side by side, identical
The left picture is frame 0. The right picture is frame 64. The build renders both and compares them pixel by pixel, and across all 4,000 plods the difference came back zero. These two images are the same image. That is the point.

The quiet window

Right behind the creature the backdrop fades by almost half. The character always stands centre frame, so the layer under it can be hushed and nothing ever breaks. The rule this serves is the oldest one in picture-making: only one thing in the frame gets the full range of values, and here it belongs to the creature. The world keeps a narrow band and a large shape, and the plod gets the light.

The output

4,000 GIFs, 576 px, 64 frames at 70 ms, 256 colours with a fresh palette on every frame, about 2.4 MB each. The metadata lists all nine traits. The description is a single haiku, one for the whole colony:

木枯らしや
微生物散る
侍よ The tree-drying wind, microbes scatter like leaves, oh samurai.

They are coming

The colony is generated, checked and sealed. Four thousand creatures, each one a number that learned to walk. Minting soon.