Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
SwingBy — an orbital-mechanics puzzle game. Boost and brake through gravity fields across predefined levels.
Translation pending
GamesTypeScript · JavaScriptGitHub @MagnusSaurbierOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A browser build of SwingBy, an orbital-mechanics puzzle game, hosted at
swingby.magnussaurbier.de. You pilot a spacecraft through a miniature solar system using only
gravity, an initial velocity, and boost/brake — see docs/GAME.md for the full
picture.
Read this file, then follow the table below — open only what your task's trigger matches. Each
docs/ file ends by naming the exact source files it describes, which is where to go next. Full
process (including when to split work across subsessions) is in AGENTS.md.Read the full README ↗A browser build of SwingBy, an orbital-mechanics puzzle game, hosted at
swingby.magnussaurbier.de. You pilot a spacecraft through a miniature solar system using only
gravity, an initial velocity, and boost/brake — see docs/GAME.md for the full
picture.
npm install
npm run dev -w @swingby/web # dev server on localhost:5173
npm test # all tests, all packages
npm run typecheck
npm run lint # prettier --check
npm run build -w @swingby/web
npm run size # bundle budget gate, fails over 250 KB gzipped
Read this file, then follow the table below — open only what your task's trigger matches. Each
docs/ file ends by naming the exact source files it describes, which is where to go next. Full
process (including when to split work across subsessions) is in AGENTS.md.
| Doc | Read this when... |
|---|---|
| docs/GAME.md | your task touches gameplay, mechanics, level content, package layout, or general repo conventions |
| docs/INTERFACES.md | you need the exact shape of a type/function/API contract, or which module owns a given file |
| docs/PHYSICS.md | you're touching gravity, integration, boost/brake math, bounds, or prediction — the physics core in full mathematical detail, every equation cited to a file:line |
| docs/INFRA.md | you're touching the API, the database, deployment, or hosting |
| infra/DEPLOY.md | you're actually running the deploy steps, not just reading about the architecture |
| infra/AUTOMATION.md | you need to know what's automated in CI vs. still manual |
packages/core/src/types.ts and constants.ts are the shared type/constant contract read by both
packages — read them before writing code against anything in docs/INTERFACES.md.
notes/archive/ holds working logs and specs for finished work. Not force-read — open it only
when tracing a specific past decision (grep a feature name).
npm run size.packages/core is zero-dependency and runs in both the browser and Node — that's what
makes server-side replay verification possible.Math.pow in the physics path — see docs/GAME.md §4.feat/<slug> / fix/<slug>), push early and often — see
AGENTS.md.