TheLongSilence logo

TheLongSilence

A space exploration game built by Claude Opus 5

Developer ToolsJavaScriptMIT 336 47Health 82
GitHub

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

Procedural space exploration game running in browser
WebGL2 rendering with no external assets
Floating origin for large scale precision
Logarithmic depth buffer for deep scenes
Pre-baked planet cubemaps with linear albedo and height
Single-scattering atmospheric raymarches
GPU-based auto exposure and luminance reduction
Hand-rolled post-processing pipeline (bloom, god rays, tone mapping, FXAA)
Dynamic render scale adjustment for 60fps
Analytic traffic scheduling with beacon quads
Separate ground scene with radial grid terrain
Procedural ship hull and greeble kit
Audio via procedural WebAudio
Comprehensive tooling for verification and screenshots

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`.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for TheLongSilence

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
TheLongSilence | MushyBook