LFSS – LoFi Space Simulator: a cozy cockpit for your second monitor

Live: https://lfss.fracergu.dev (works as a guest, no sign-up needed)

At its core, LFSS is a relaxing sound and radio page (engine hum, rain, lo-fi streams) wrapped in a slow, passive space sim. You sit in the pilot seat of a small ship, pick a star on a holographic map, and the trip takes real minutes or hours. You leave it running on a second monitor while you work. There is nothing to fail and nothing to fight. The mood is inspired by games like No Man’s Sky and Outer Wilds, but here you never leave the seat.

How it works

  • Everything is diegetic. No HUD and no HTML menus over the scene: CRT monitors on the dashboard are the menus, a hologram is the star map, and a radio and a cassette deck sit on the console.
  • Look with the mouse, click to lean in. The view follows the cursor; left click moves you closer to a screen or device, right click steps back.
  • Travel is real-time. The ship turns, accelerates, cruises and brakes on its own, and keeps flying with the tab closed.
  • Sound is the point. A continuous engine noise bed, plus radio, “Earth sounds” cassettes (rain, waves, fireplace, forest, a night train…) and cabin ambience layers, each with its own volume.
  • A very slow economy. Flight time and first discoveries earn “Star Miles” for new engines (each changes the noise profile), cassettes, mugs and hanging charms.
  • Light social layer. Nearby pilots can chat by text with a distance-based signal delay, and you can launch messages in bottles for others to find drifting in space.

What is procedural

Almost everything. The project ships no 3D models, no image textures and no audio files.

  • Universe: a Milky-Way-scale galaxy from a single global seed. Stars, planetary systems, nebulae and daily anomalies are derived deterministically, so every player sees the same sky. The same simulation code runs on client and server.
  • Rendering (Three.js): stars are GPU points with apparent magnitude and parallax over a sky cubemap generated at runtime. A floating origin and log-compressed distances keep precision stable. Planets, rings and the sun use procedural shaders.
  • Cockpit: built entirely from code. The shell’s windows are cut out by an SDF injected through onBeforeCompile, devices are assembled from primitives and lathe geometry, and the brushed metal is a shader. Every screen is a CanvasTexture drawn with the 2D canvas API behind a small CRT shader, with UI hit regions resolved from the raycast UV.
  • Audio (Web Audio API): the engine is an AudioWorklet mixing brown, pink and white noise. The cassettes are synthesised live from filtered noise and randomised events, one radio station is a generative lo-fi track, and all UI sounds are synthesised.

What is not procedural

  • Real stars: the Sun’s neighbourhood uses real data (34 known systems, the Solar System with real orbital elements, some known exoplanets, and Sagittarius A* at the centre).
  • Streaming radio: besides the generative station, the radio tunes into free third-party internet stations (Code Radio, Nightride FM, Ambient Sleeping Pill).
  • Player content: chat, bottles, pilot names and “first discovered by” records live in a database.

Stack

Vite + vanilla JavaScript + Three.js and the Web Audio API on the front end; Node (Fastify) + PostgreSQL on the back end; everything in Docker behind Nginx on a home server.

It is a work in progress by one developer. Accounts are optional: guests can fly, listen and explore, and an account adds miles, the shop, discoveries, chat and bottles. Best with headphones. Feedback is very welcome, especially on performance.