Log inGet started
World

The Eighth Ketyl

Branchmain
Branchesmain
Commite99ff0a216

README.md

KetylCam

The playing camera of THE EIGHTH KETYL. A camera behavior, installed by the Staging component on the player's CameraRig in place of the orbital rig the scene ships with.

The shot

The ketyl drifts on a disc eighteen units across inside a glass column twenty-three across, so a camera standing behind it at any readable distance would be outside the still, looking in through black glass. Instead the eye stands across the column from the ketyl and solves its own distance from the axis so the subject is always the same size:

    glass wall                                             glass wall
────┬───────────────────────────────────────────────────────────┬────
    │      eye ●──────────── dist ────────────▶ ● ketyl         │
    │            (radius solved)             axis│              │

The shaft, the plate the ketyl is on and the plate above it are therefore always behind the subject — plate edges receding upward, which is the composition the whole game is built on. staging.Frame solves dist and the lens from the LIVE screen, so a tall screen and a wide one both hold the play; on a screen taller than 3:4 the eye stops at the wall and opens the lens instead of retreating through it.

Looking

The pilot aims nothing. It forwards the look control as Still.emit("look", v, dt, active) and this consumes it: horizontal swings the eye around the column, stopped short of the angle at which it would have to pass through the glass, and vertical raises and lowers it between looking up the shaft and looking down on the plate. Let go and the shot walks itself back across the column after recentreDelay.

Two modes

mode is "auto" by default, which reads the run's phase: the title gets a slow attract orbit of the still with the shaft up the middle of a tall frame, and everything else gets the playing shot. "play" and "attract" force one.

Fields

FieldDefaultWhat it does
follow—The ketyl. Empty, it reads Camera.follow.
mode"auto""auto" · "play" · "attract".
yawRange1.75 radHow far round the column the player may swing the shot, on top of the limit the geometry imposes.
lookSpeedX / lookSpeedY0.0042 / 0.0090Look sensitivity.
dampPos / dampYaw0.14 / 0.22 sHow far behind the subject the shot trails.
recentreDelay / recentreRate2.6 s / 0.55When and how fast an unattended shot returns to across-the-column.
clearance0.35The sphere swept from the aim point out to the eye; anything it meets brings the eye in. Zero leaves the shot alone.

Methods

local cam = entity(rigId).component.get("KetylCam")
cam:snap()      -- land on the solved pose with no damping
cam:recentre()  -- undo whatever the player swung it to
cam:report()    -- mode, eye radius, yaw, climb, distance, lens, aspect