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
Make games together.
Translation pending
GamesTypeScript · JavaScriptGitHub @ImpowerGamesOnlineOwner 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
An all-in-one, community-powered indie development platform that gives creative people the tools they need to bring their ideas to life.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Monorepo for Sparkdown — a markup language for writing screenplays and
games — and the tools around it: the impower.dev web editor, the
VS Code extension, the language server, the game engine,
and the player.
1. Install IDE: Visual Studio Code
2. In VSCode, install all Workspace Recommended Extensions.
This is an npm-workspaces monorepo. Install once from the repo root, then use
the root launch scripts below — they are the supported way to run things and they
keep the multi-process wiring correct.Read the full README ↗Monorepo for Sparkdown — a markup language for writing screenplays and games — and the tools around it: the impower.dev web editor, the VS Code extension, the language server, the game engine, and the player.
This is an npm-workspaces monorepo. Install once from the repo root, then use the root launch scripts below — they are the supported way to run things and they keep the multi-process wiring correct.
npm install # once, at the repo root — sets up every workspace
| To work on… | Run (from the repo root) | What it does |
|---|---|---|
| The web editor (impower-dev) | npm run web:dev | Launches the editor and the game-preview player together, on auto-picked free ports, and prints the editor URL. Ctrl+C stops both. |
| …forcing a separate-origin player iframe | npm run web:dev:cross-origin | Same, but cross-origin instead of the default same-origin proxy. (web:dev:same-origin is the explicit default.) |
| The VS Code extension (vscode-sparkdown) | npm run vscode:dev | Builds + watches the extension and everything it bundles; press F5 in VS Code to open an Extension Development Host. |
Override the web ports with the EDITOR_PORT / PLAYER_PORT / HMR_PORT env
vars if you need fixed ports.
web:dev instead of launching the two servers yourselfThe editor embeds the game player as an <iframe> and the two connect over a
postMessage/MessageChannel handshake. That handshake needs three things to agree:
the editor's player-origin, the player's editor-origin, and a unique HMR port per
editor. Get any of them wrong — or collide with another running checkout — and the
Game Preview silently stays black even on PLAY (the editor never finishes
connecting; the editor pane itself looks fine). The values are baked into each
Vite bundle at startup, so a page reload won't fix a wrong one. web:dev removes
the footgun entirely: it derives every value consistently and never collides
(every port is chosen free at launch). Just run it and open the URL it prints.
Same-origin mode (the default) additionally exposes window.__preview in the
editor page so you can inspect the live game DOM from the console / devtools.