Flock
The murder that sleeps on the roost, stirs at first light, and takes wing at the end.
Flock
The murder that sleeps on the roost, stirs at first light, and takes wing at the end.
Eleven birds standing on the roost ledge of CF.layout, built from primitives
under ONE temporary root (stage_gen) so the scene file never carries them.
They are the thing the camera turns to at first light and the thing that lifts
on the win, so they only need to read as a murder at roost distance — the hero
crow is the crow slice's, and this is deliberately smaller work.
local Flock = require("game.stage.Flock")
Flock.ensure(stageEntity) -- once, when the stage wakes; sweeps the old root first
Flock.tick(dt) -- every frame
Flock.stir() -- first light: heads up, wings flick, a shuffle
Flock.lift() -- they go, on a stagger, wings beating
Flock.settle() -- back to sleep, for a restart
Flock.state() -- { mode, count, flying, topY, clock }
Flock.teardown()
Each bird is a body, a head, a beak, a tail and two wings, wearing
game.stage.stageRoostCrow — black with a metallic sheen so a distant bird
still catches the moon. They are spread across two thirds of the roost ledge
and scaled up a third, which is what keeps the whole murder inside a PORTRAIT
frame while each bird still reads as a bird.
Flock.state() is the data behind the picture: flying counts the birds off
the ledge and topY how high the highest has got, which is how a capture of
the win is checked rather than believed.
Owned by the staging slice. Design: /zero/source/design/spec.md.
Scoped to this part · feeds back into the world's score.