Option 35: boids, the start of family G (generative and procedural). About 450 birds follow three local rules (keep apart, match heading, stay close) and flock like a murmuration at sunset. Then they gather into the bot's shape, hop together and blink. Release the hawk, or drag your finger through the flock, to scatter them. **No leader, three rules.** Each bird only looks at neighbours within 28 px (Craig Reynolds' 1987 "boids"): **Formation.** "Form the bot" gives each bird a slot: shaded body positions (three tones for light, mid and shadow) and denser dark eye positions. Birds steer to their slot while the flocking rules relax. About 140 extra birds keep circling as free silhouettes. **The formed bot is still a flock.** It hops (birds lag, so it stretches on the way up), blinks (eye birds bunch into a slit), and jitters gently because every bird keeps hovering. **Auto cycle:** flock for 7 seconds, form for 8, startle, repeat. **Release the hawk while the bot is formed.** The shape tears open where the hawk passes, then heals as birds return to their slots. **Drag your finger through the flock.** You act as a predator, and the flock splits and ripples like a starling murmuration. **Alignment 3, cohesion 0.** Birds form long parallel streams, like a school of fish. **Cohesion 3, alignment 0:** tight, buzzing balls like gnats. **Separation 0.** Birds collapse into clumps. Personal space is what keeps the flock airy. **Tick "Show one bird's view."** You see the only information one bird has: a small circle of neighbours. Every swirl emerges from that. **Slots are matched by angle, not distance.** Birds and slots are both sorted around the centre and paired in order. Paths rarely cross, so the bot assembles in a clean sweep instead of a tangle. **Formed birds turn to face along the circle's edge.** Their triangles form a subtle spiral pattern, like feathers lying in one direction. **Neighbour search uses a grid.** Each bird only checks nearby cells, so 450 birds cost roughly 450 small checks instead of 200,000 pairwise ones. Real simulations scale to millions this way. **Eyes need more birds.** Eye slots are packed about twice as densely as body slots. At bird resolution, small features need extra density to read. **One bird's decision per frame** ``` neighbours within 28 px ──► average heading → alignment ──► average position → cohesion too close (<11 px) ──► push away → separation + slot seeking (if assigned) + flee hawk/finger + stay on screen velocity += Σ forces × dt, clamp speed ``` **Formation assignment** ``` slots sorted by angle: s1 s2 s3 … s450 (around the bot) nearest 450 birds by angle: b7 b2 b9 … pair in order → minimal crossing → clean assembly extra birds → keep flocking ``` **Spatial grid** ``` ┌──┬──┬──┐ │ │ •│• │ bird ● checks only its cell ├──┼──┼──┤ and the 8 around it │• │● │ •│ → cost ≈ N × few, not N² ├──┼──┼──┤ │ │• │ │ └──┴──┴──┘ ``` **Critical thinking:** the flock looks intelligent, but no bird understands the shape. Is the bot "there" when it's made of birds, or only in the viewer's mind? When does emergent behaviour count as a real thing? **Lateral thinking:** drone light shows, crowd simulation in films, traffic flow and fish farms all use boid-like rules. Could your bot appear at an event as a drone show? What slot plan and timing would it need? **First principles:** why do local rules create global patterns like murmurations? What's the smallest change to one rule that destroys the pattern entirely? - How are real drone light shows choreographed?
G. Generative / procedural