CrowController
The rules of the climb, on the Old Crow's body.
It reads the game/input/crow map — sidle, hop, peck, pause — and turns it
into the crow's position, the two clocks, and the events every other part of
the game answers. Only the local player's copy drives; a remote crow is left
to its owner.
The move set
| Move | How | What it costs |
|---|---|---|
| Sidle | move x, on a shelf | the standing drain |
| Hop | hop, on a shelf | RULES.hopCost, and it is refused below RULES.weakBelow |
| Catch a lip | happens on its own: airborne, beside a shelf's near edge, crown level with it, no longer rising hard | — |
| Hang | the state after a catch | RULES.hangDrain, the fastest drain in the game |
| Pull up | hop, or move y up, while hanging | RULES.pullUpCost — allowed even when too weak to hop, so a hang is never a death sentence |
| Let go | move y down, while hanging | — |
| Peck | peck, on a shelf, within reach of food | refills by RULES.food[kind] |
| Pause | menu, during the climb | emits pause |
One hop rises CF.layout.apex. Every SHORT gap in the layout is under that
and is landed on; every TALL gap is over it, so the only way up is the lip.
Coyote time (RULES.coyote) keeps a hop pressed just after walking off a lip,
and a hop pressed just before touching down is remembered for
RULES.hopBuffer. Holding a direction in the air steers; letting go bleeds
the sideways speed off, which is what makes a lip-catch aimable.
Crumble shelves
Landing on — or hanging from — a crumble shelf emits crumble with it and
starts RULES.crumbleDelay on the clock. When that runs out the shelf is
marked fallen, crumbled is emitted, and anything standing on it drops.
Both ledging tests ignore a fallen shelf. The layout puts the shelf above a
crumble back over the shelf below it, so a crumble that has gone never seals
the climb.
How a round ends
- won — the crow is standing on the roost, whether it hopped onto it or hauled itself over the lip.
- lost
starved— hunger reached 0. - lost
sea— the crow fell pastRULES.seaY. - lost
late— first light finished breaking (dawnreached 1) with the crow still on the face.
restart puts the round back (through CF.reset): the shelves stand again,
the food is back, the crow is at its spawn.
What it writes
CF.state.crow (x, y, vx, vy, facing, grounded, hanging, ledge),
CF.state.hunger, CF.state.dawn, CF.state.time, CF.state.altitude,
CF.state.eaten, CF.state.hops, CF.state.crumbled, and the phase.
Events: hop land grab pullup drop peck eat tooWeak crumble
crumbled fall hungerLow firstLight pause phase.
It also stands down the engine's builtin default bindings when it arms, so
the game's own controls are the only ones live and the touch overlay draws
only the three buttons and the stick this game has.
Scoped to this part · feeds back into the world's score.