game.stage.beats
The staging of GREASEPAINT, written as data.
A beat is a camera path over a few seconds plus a handful of cues that fire as
the clock crosses them. Beats.list holds them by name — opening,
entrance, laugh, kick, kill, won, lost — and Beats.forEvent says
which Core event asks for which. game.stage.Cinematics drives them; nothing
here touches the world.
A path is keyframes of { t, pos, look, fov, shake }, seconds from the
beat's start. The first is where the camera jumps to and the last is where it
is left — and the last keyframe of every beat is the seat, so a beat cannot
strand the camera somewhere else. Beats.sample(path, t) reads a path at a
moment; Beats.seat() returns the front row in the same shape.
No beat runs longer than 2.5 seconds. A player is holding cards the whole time.
The lamp
Beats.RIG is what the cue lamp = "rig" means and what every beat hands the
lamp back to: { intensity, angle, inner, color }, inner being the inner
cone as a fraction of angle. game.stage.Tent writes what it actually built
into it on every build and nothing else writes it, so retuning the tent's
lampBrightness is retuning what a beat returns to.
The framing
Beats.framing says how the seat is framed for each clown: lookY is added to
Core.SEAT.lookAt's height and fov replaces Core.SEAT.fov for the act.
Beats.frameFor(clown) selects one — Cinematics calls it on act.start, and
with nil at the title. Beats.lift() and Beats.lens() read back what is in
force.
Every keyframe aimed at the seat's own look-at, and every keyframe asking for the seat's own lens, travels with the framing; a keyframe that names a target or a focal length of its own keeps it. So a beat that ends in the front row ends framed on whoever is standing in the ring.
The company is between 1.7 m and 3.1 m tall and the seat is a fixed chair 7.5 m from the mark, so the lens is the only thing that can hold them all: 45° for Pinch, 55° for Bello and Mr. Marrow, 58° for Slats on his stilts. Every head lands at 0.30 of the frame's height, clear of the plate above it.
Scoped to this part · feeds back into the world's score.