Boneyard / partJump

BONEYARD · part · bay

Jump

src/40-jump.js · one module, no third-party code

Focus preview for keys

ParametersFactory
How it works

Stars live in a seeded camera-space volume. Each z decreases by cruise plus warp speed, and a star that crosses the near plane respawns at the far plane from the same deterministic generator. Its head and tail are both 1/z projections, so every mark points exactly at the shared vanishing point. Far, middle and near paths have separate widths and persistence, which makes the field read as volume instead of one sheet of equally weighted lines.

Warp follows a press-and-hold envelope. A hold first tightens three broken ellipses around the line of flight, then heats only the near stars and the center. Releasing after a meaningful charge expands one amber compression wave, gives the shared sound and camera state a short punch, and lets warp settle slowly to clean cruise. Calm caps the charge, halves travel, removes shake and chromatic split, and suppresses the release wave. Field-changing parameters are compared through a value snapshot because the workbench mutates its parameter object in place.

Provenance
technique
deterministic 1/z star volume in three depth strata, with projected streaks and a compression plane
lineage
the Star Wars jump (1977); the demoscene 1/z starfields (early 1990s); Windows 3.1 Starfield Simulation (1992)
original
the hold room for HYPERSPACE: the same projection and shared vanishing point as the corridor and row; cruise is a clean field of short phosphor strokes, a hold draws the volume through nested compression rings, and release sends one amber wave through the plane while the streaks settle back in depth
not
random speed changes, a tunnel, a lens flare, a flash, autoplay warp. Cruise is quiet; only a hold raises it.
deps
none · Canvas 2D · 2026-09
budget
0.40 ms/frame @ 1050x852 desktop; 0.30 @ 390x439 portrait, Local Chromium 149, parts average under 4x CPU slowdown (2026-09-30); JS work only, not a real-GPU frame
api
mount(canvas, params, ctx) -> { tick(dt, t, progress, pointer), resize(w, h, dpr), still(t), destroy() }
license
MIT, Desert Data Labs LLC

Budget: 0.40 ms/frame @ 1050x852 desktop; 0.30 @ 390x439 portrait, Local Chromium 149, parts average under 4x CPU slowdown (2026-09-30); JS work only, not a real-GPU frame