TheLongSilence
A space exploration game built by Claude Opus 5
What is it?
What it is
A procedural space-exploration game that runs in a browser tab using WebGL2.
Why it exists
To provide a high-fidelity, asset-free exploration experience where every celestial body and derelict is generated from a seed and rendered via hand-written GLSL.
Who should use it
Experienced web developers, game developers, and shader programmers who want to explore advanced WebGL2 techniques, procedural generation, and performance optimization in a browser-based game.
Who should avoid it
Beginners in JavaScript or WebGL, hobbyists looking for a simple game to play, or developers without prior experience in GPU programming and complex rendering pipelines.
How it works
A quick walkthrough in plain English
How TheLongSilence works
Step 1 of 3
You interact with it
Open TheLongSilence, send a request, or connect it to your stack.
Features
Advantages
- Open source (MIT)
- Active JavaScript ecosystem
- Self-hosted deployment options
Disadvantages
- Requires operational ownership for self-hosted setups
- Community support varies by project maturity
Installation
native
npm install npm run dev
FAQ
How do I run The Long Silence locally on my machine?
First install the dependencies with `npm install`. Then start the development server with `npm run dev` which serves the game at http://localhost:5173. When you’re ready to create a production build, run `npm run build` to generate a static bundle in the `dist/` folder.
What are the main controls for desktop and touch devices?
Desktop: Steer with mouse (click to capture) or arrow keys; Roll with Q/E; Throttle with W/S or scroll; Boost with Shift; Scan by holding F; Land/lift off with L; Fold drive with J; Star map with M; Archive with Tab; Full stop with X; Camera toggle with V; Frame stats with P. Touch: left stick steers, right stick rolls (horizontal) and throttles (vertical); BST for boost; SCAN to scan; FOLD to fold; MAP for star map; ARC for archive.
How does the game maintain 60 fps on a wide range of hardware?
It uses a floating origin so the ship stays at (0,0,0) and everything else is repositioned each frame, reducing precision loss. Planets are pre‑baked into cubemaps (1024² for the nearest, 256² for others) and the runtime shader only samples a few textures. Atmospheres use single‑scattering raymarches. Auto‑exposure and post‑processing run on the GPU. The engine dynamically scales render resolution between 0.62× and 2× based on frame time to keep a stable 60 fps.
How are planets and worlds generated and rendered?
The universe is seeded procedurally. Each solid world is baked once into a cubemap that stores linear albedo in RGB and height in the alpha channel. The runtime shader reads three texture taps for normals and lighting, avoiding expensive per‑pixel noise. The nearest planet is re‑baked at 1024²/face; all others use 256². Atmospheres are rendered with a single‑scattering raymarch through a spherical shell, giving realistic twilight and penumbra effects.
What tools are available for verifying the game and what do they do?
The `tools/` directory contains several scripts: `play.mjs` runs 17 interaction assertions (flight, scan, fold, jump); `survey.mjs` captures screenshots of set‑pieces and reports fps/draws; `probe.mjs` evaluates a single GLSL expression and outputs a frame; `sheet.mjs` creates a contact sheet from images; `levels.mjs` analyzes tone statistics per frame; `judgeset.mjs` rebuilds the review set. All tools boot through `boot.mjs` and can be run with Node.js, e.g., `node tools/play.mjs`.
Featured in Videos
YouTube tutorials and walkthroughs for TheLongSilence
Alternatives
Similar projects ranked by category, topics, and text overlap.