- Pruned superseded planning docs and retired the old
/loredoc archive; trimmed the internal build notes down to shipped facts.
// build log
Devlog
The open technical log for escapethebackrooms.us — a browser Backrooms game built in the open. This page tracks how it's actually made and what changed, in plain technical terms. No hype, no roadmap; just the build and the changelog.
The stack
- Three.js r0.169
- Vanilla ES modules
- No build step
- Static · GitHub Pages
- Deploy = git push
- MIT-licensed code
Everything ships as hand-written HTML/CSS/JS with Three.js vendored in and loaded through an
import map — there is no bundler, no framework, and no compile step. You can read every line that
runs by viewing source. The whole site is static and deploys by pushing to main.
What's live right now
The landing page (/) — a fluorescent VHS holding page for Level 0.
/experience/ — an on-rails descent through instanced cell-grid
corridors. The whole level renders in roughly four to six draw calls (floor, ceiling,
void-facing walls, and light panels are each one InstancedMesh), with a single
hand-written fused GLSL "VHS" pass on Three's stock EffectComposer. Textures are
drawn to canvas at runtime, so the image payload is effectively zero. An early prototype.
/experience/sandbox/ — the deliberately-ugly movement
testbed. A recursive-backtracker maze you free-walk: pointer-lock + WASD on desktop,
a virtual stick + drag-look on touch, with per-axis grid-cell collision and
wall-sliding. Walls are a single InstancedMesh, so it holds a high frame rate
regardless of maze size.
An unlinked choose-your-path interaction prototype (/experience/cyoa/), kept on disk for its drag-look code.
How it's built
- Rendering by instancing. Levels are cell grids drawn as a few
InstancedMeshes, so draw-call count stays flat as the map grows — fog bounds the visible depth, so cost tracks what's on screen, not total size. - One custom post pass. The VHS look (warble, tracking dropout, chroma split, scanlines, grain, vignette, tape grade) is a single fused GLSL
ShaderPass— no post-processing plugin stack, no GPU-tier detection. - Kinematic movement. The free-walk controller is corner-sampled grid collision with wall-sliding — cheap, predictable, and enough to judge feel before any physics engine.
- Zero-asset first. Placeholder textures are painted to
<canvas>at load, keeping the initial download tiny while the art pipeline is still open. - Accessibility baked in.
prefers-reduced-motionis honored in JS, the VHS effect has a manual toggle, and flashing is kept under 3 Hz.
Changelog
- Fixed a reversed strafe vector (A and D were swapped) in the free-walk controller; reconciled the internal docs to the shipped build.
- New graybox testbed at
/experience/sandbox/: recursive-backtracker maze (33×33, fixed seed), pointer-lock + WASD / touch stick + drag-look, per-axis grid collision with wall-sliding, all walls in oneInstancedMesh(~2 draw calls), high frame rate on desktop. - Added the MIT license for the code plus an explicit all-rights-reserved notice for written and visual content.
- Audited every internal doc against the shipped build; confirmed the renderer is one hand-written GLSL VHS pass on stock
EffectComposer(not a plugin stack). - Evaluated Gaussian splatting for the environments and dropped it for now — flat, textureless Backrooms surfaces are a worst case for 3D Gaussian splats.
- Added a 2D top-down level-design tool for laying out mazes as data.
- Parked a choose-your-path interaction prototype at
/experience/cyoa/.
- Winding instanced-cell-grid corridors and a "Turn" room; DOM caption layer; runtime canvas textures (no image payload). Custom domain went live.
- Coming-soon lobby page. Static GitHub Pages, no build step — the shape it still has today.
Open source & licensing
This project is built in the open. The split is deliberate:
- Code = MIT. The source that makes the site run is free to read, learn from, and reuse.
- Content = © 2026 Josh Hickson, all rights reserved. The writing, lore, story/world design, level design, and any visual or audio assets are not open — they're here to experience, not to reuse.
Short quotations from and descriptions of A24's Backrooms (2026) appear for criticism and
commentary (fair use); that film remains the property of its rights holders. Full terms live in the
repository's LICENSE and README.