The catch

Twelve Cornish fish

Seen from the SIDE, which no other form is — because a fish is its profile. Head-on, a mackerel and a bass are the same blob, and everything anybody identifies a fish by is in the silhouette. It costs the second eye and keeps the eye line.

Pilchard

Shoal

Never anywhere alone. Moved in millions past Newlyn until they didn't, and now they do again.

Mackerel

Feather

Named for the lure, which is the only way anyone ever meets one. Out at dawn, back by nine.

Bass

Pilot

Waits at the edge of the surf for the tide to do the work. Patient in a way that looks like arrogance.

Pollack

Reef

Over every wreck and rock ledge inshore. Hangs in the current and lets it bring things.

Hake

Fathom

Comes up from deeper than anything else on this page, and is mostly mouth about it.

Conger

Wreck

Lives in the thing he is named after. Out at dusk, back before anyone can photograph him.

John Dory

Peter

Carries a thumbprint on his flank and the story that goes with it. Opens his mouth like a drawer.

Red gurnard

Grunt

Armoured, red, and walks the sand on finger-rays. Complains audibly when landed.

Megrim

Passage

Lands in Newlyn and leaves for Spain the same week. Better travelled than anyone here.

Plaice

Speckle

Lies flat on sand pretending to be sand, and gives it away with seven orange spots.

Ballan wrasse

Gully

Owns a gully and rearranges the stones in it. Green, rust, and firmly of the opinion it is his.

Grey mullet

Ebb

Up the Fowey on the flood, grazing the harbour wall, down again on the ebb. No hurry ever.

Together

A shoal

Six of them at once. A fish stands on nothing, so there is no ground line to agree about and DEPTH is the only thing placing them: the near ones are larger and lower, the far ones smaller and higher, and each one's z-order is its own size. The same perspective rule the near-mid-far trio on /scene uses, with the ground taken away.

A whole scene

The dive

The reef ground, two light shafts, kelp, a frond, coral and a rock — all of it scenery that was already drawn — with the Diver, who has had a costume, a badge and a lantern waiting in callings.json since the day the suit was drawn and had never been worn. Above him, 14 mackerel: 14 copies of one fish, Feather, each one three numbers in this page and nothing else.

Weighed rather than argued — measured on 2026-09-12 by tools/weigh-shoal.mjs, which renders this page through the real engine and counts the bytes. The scene above is 40.2 kB of markup, 4.2 kB gzipped. The same picture painted flat, as one drawing, is 28.0 kB — 3.6 kB gzipped. Each extra mackerel adds 1910 bytes against the painting's 1344, or 33 against 11 once gzipped, which is what actually travels. So the painting is smaller, and it stays smaller however big the shoal gets. The sprite sheet does its job — a repeated fish draws as a reference, not a second copy — but the wrapper round each layer costs more than that dedupe saves. What the difference buys is that every fish here is still a fish: named, swappable, drawn once for the whole estate, and able to move. Paint the shoal and it is a picture of a shoal forever.