Liminal Found Footage — our demo

One example among many. Don't reuse its story, arc, shots, props or timings.

Demo: Night Shift Orientation (59.7 s) · backrooms.mp4 · source in demo/

Story & structure

A new night-shift worker films his orientation walk through an endless office floor, following the printed rules and the PA. The style notes for this demo:

A single first-person camcorder recording (1990s VHS, 4:3) walking through an empty, familiar-but-wrong interior: mustard wallpaper, damp carpet, drop ceilings full of humming fluorescent panels, repeating forever. Nothing chases anyone. The dread comes from emptiness, repetition, bureaucratic rules, and the camera's own machinery failing at the wrong moment. The viewer should feel a chill on the back of the neck, not jump out of their seat.

Never use the word "Backrooms", wiki "Level" numbers, community entity names, or any existing organisation/logo inside the film. The genre name lives only in this file. Everything on screen — rules, forms, company voice, the "thing" — is original.

The recording medium is the storyteller. The demo used all five native powers and put the focus hunt at the emotional peak:

Native power How the demo used it
Autofocus / auto-exposure hunting The camera "finds" something only while focus is correct. It is there on the first lock, gone on the second. AE lags after a blackout and the image pumps with gain noise.
Tape tracking damage A tracking tear is a cut the universe made. Same framing afterwards, but the OSD clock jumped hours / the battery drained / one light is now dead.
The OSD is plot REC dot, battery, date and time code are diegetic evidence. A camcorder title-generator can write the film's title over the first shot.
Rules as text in frame Printed notices, PA announcements in a calm corporate voice. Rules start ordinary and drift wrong; two of them contradict each other; the last one addresses the viewer.
Emptiness and repetition The same notice appears again in a different place; the same room with one detail changed; a corridor that runs into fog. Emptiness itself is the threat.

How the topic is framed (the same trick works for others): turn the topic into an orientation, a procedure, or a checklist that someone records on tape — a new job's first shift, a building inspection, a moving-day walkthrough, a school's safety drill, a hotel's night audit. Write 5–6 rules. Let the medium betray the rules.

Demo emotional arc (59.7 s): boring normal (≈20 s of almost nothing) → a small wrongness (a contradiction, a repeated notice) → a rule is tested (lights flicker) → seeing / not seeing (focus hunt) → time removed (tracking tear) → a rule is broken (the exit) → the last rule turns to the audience → REC off. One subject (the camera operator — heard, never seen above the shoes), one goal (follow the procedure), one turn (the time code proves he is no longer in "normal").

Shots

Beat Camera
Opening Tape rolls in, AWB swings blue→yellow, AF finds a notice on a wall; camcorder title over it
Reveal of space Slow pan off the notice to a corridor of partitions and lights receding into fog
Routine Walking POV, glance down at shoes on damp carpet; no events for ~20 s
The contradiction Crouch to a repeated notice; hold ≥4 s with nothing covering the text
Obeying a rule Snap down to the shoes; let the light on the carpet change instead of showing the ceiling
Peak Zoom + autofocus hunt down the corridor; the figure exists only in the ~0.5 s of correct focus
Time cut Tracking tear, then the identical framing — only the OSD changed
Breaking a rule Turn a corner to the red EXIT; hold still in total silence; push in; door opens on its own
Ending Final notice in focus ≥3 s → REC off: freeze, tear, black

The "thing" is never a close-up: a 2.4 m silhouette (a colleague who is wrong by 15–40 %: small head, long tilted neck, narrow high shoulders, arms to the knee), drawn as an organic Canvas2D silhouette on a camera-facing billboard, ~33 m away in a stretch of dead lights with only dim light far behind it. Slow small wave (3.6 s cycle). Target: you can tell it is waving, you cannot count fingers. Exclude the billboard from the GTAO pre-pass (mesh.isPoints = true) or it stamps a dark rectangle.

Demo motion numbers: 0.72 m stride, head bob 3 cm, sway 1.8 cm, roll ±0.8°, breathing 0.27 Hz, tremor at 1, 3.5 and 9 Hz; looking down at pitch ≈ −1.2 rad with the camera pushed 0.2 m forward; zoom FOV 52° → 27° with aperture ×5; three 0.1 s blackouts per flicker, AE lag ~0.45 s; doors open in 1.3 s. The motion rules:

Score structure

There is no score. The sound design as built for the demo:

Palette & props

Titles & subtitles

End card

Black, bitmap-font title, style name, LemoLab × Claude Opus 5.5. This sign-off belongs to this library's demo only; a user's film carries no LemoLab credit and no copy of this card.

Build notes

styles/backrooms/demo/
  story.js    timeline (single source of truth), camera keyframes, focus/aperture/fear curves, OSD clock, time warp W()
  world.js    layout (walls/pillars/route), light DataTexture, custom lighting/fog shaders, props (notices, EXIT, door, outlets)
  tex.js      procedural textures (wallpaper, carpet, ceiling, troffer, notices, EXIT, cork, outlet)
  figures.js  operator's shoes, the silhouette billboard      thing2d.js  organic silhouette drawing
  vhs.js      VHS camcorder ShaderPass (pillarbox, jitter, tear, luma/chroma, AGC, dropouts)
  osd.js      5×7 bitmap font, REC/battery/clock, title generator      subs.js  608 captions
  main.js     renderer, post chain (core/three/post.js GTAO+DOF+bloom → VHS), handheld rig, events
  sheet.js    silhouette design sheet (?sheet=1)      music/muzak.py  original hold music (sampler)
  mix.py      all sound → mix.wav        tools/mux.sh  core mux with CRF parameter        build.sh
  1. node core/render/still.mjs styles/backrooms/demo <t…> [--q nosub=1|raw=1|sheet=1] — review stills.
  2. sh styles/backrooms/demo/build.sh — TTS → whisper → music → events → mix → whisper on processed voices → render (1433 frames ≈ 80 s with 3 workers) → mux (−14 LUFS) → SRT → poster/styleframe.

Pitfalls