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
Play a 3D racing game in 19 cities, earning real NIM by winning weekly bounty races
Translation pending
AI summary · website and README
GamesTypeScript · JavaScriptGitHub @CalebuxOnlineOwner 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 mobile-first 3D racing game built as a Nimiq Pay Mini App.
Race three AI rivals point-to-point through zombie-infested streets: drag to
steer, tap to fire nitro, splat everything green for combo points, and grab
coins along the way.
Built with Three.js + Vite + TypeScript. No frameworks, targets 60 fps inside
the Nimiq Pay WebView.Read the full README ↗🔗 Play now: minirush.site · mini-rush.vercel.app
A mobile-first 3D racing game for the web. Race three AI rivals point-to-point through zombie-infested streets: drag to steer, tap to fire nitro, splat everything green for combo points, and grab coins along the way.
Built with Three.js + Vite + TypeScript. No frameworks, targets 60 fps on a phone browser.
npm install
npm run dev # → http://localhost:5173 (already --host for phone testing)
npm run build # typecheck + static bundle in dist/ — deploy anywhere
Desktop testing: ↑ or W to accelerate, ← → or A/D to steer, ↓ or S to brake, quick tap / Space for nitro, C to cycle camera (chase / low bumper / high TV — also the 📷 button). Mobile: hold the gas pedal (bottom-right) to accelerate, drag to steer, hold the brake pedal (bottom-left), tap for nitro. Release the gas and the car coasts down to a roll.
Query params for testing: ?len=500 (lap length in metres, default 1800),
?seed=7 (deterministic circuit), ?laps=4, ?map=beijing (city id or index),
?mode=burnout (mode id or index).
src/modes.ts):
?laps=). Zombies and pickups respawn every lap. The
circuit previewed on the menu/tour page is the exact circuit you race.src/style.ts) — near-misses, drifts
and takedowns fill one gauge, and a full gauge pays out a nitro tank as
well as stepping the score multiplier. Risk buys speed, speed makes everything
riskier. Contact wipes the chain. Style and boost used to be separate
currencies, which meant a player could ignore either one.src/traffic.ts) — a recycled pool of civilian cars fills
the lap. It is what near-misses are measured against and what makes speed read
as speed. Rows are spaced and never block adjacent lanes, so there is always a
line through; clipping one costs speed and your chain, and only a fast closing
hit does damage.
Lagos mixes four yellow-and-black danfo minibuses into the ten-vehicle pool,
with passenger windows and route boards. Their procedural model shares geometry
and materials across the fleet (src/danfo.ts).
Traffic keeps its distance across laps, waits in the spawn queue until it comes
into view, and avoids starting lane changes beside an approaching player or
into another vehicle. Danfos have a longer contact zone. Gentle clips retain
88% of speed; hard impacts retain 72%. A near miss pays once the player has
fully cleared the vehicle, and only if the pass stayed clear of contact.src/city/passenger.ts),
then the GPS routes you along the roads to the drop-off against the clock
(src/city/fares.ts, src/city/roads.ts). Free roam: hidden tokens
unlock garage cars and street races start from the map
(src/city/activities.ts). Civilian traffic loops the grid, and the east
freeway crosses a bridge to a second island. Races elsewhere carry a round,
heading-up minimap (src/raceMap.ts).src/maps.ts). Each city has its own cel palette, fog mood, track
shape (flowing vs technical) and three districts along the lap — e.g.
Hutongs → Temple Gardens → CBD. A shared lighting/material palette stays
consistent across the lap while the local architecture and vegetation change.npm run build && npm run preview # serve dist on :4173
node scripts/smoke.mjs [shotsDir] # Playwright: full race → results → retry
Exits non-zero on console errors or if the results screen never appears.
Screenshots (menu, countdown, mid-race, results) land in shotsDir.
Everything in the game is bought with coins earned by racing: cars in the
garage, upgrades, paint and workshop parts. Coins are banked on the device
(src/economy.ts) and have no cash value. The driver chip on the menu opens
the driver card, where a player can pick the username the boards show.
contracts/ still holds the Foundry project for MiniRushTracker,
the Celo tracker the game used earlier. Nothing in src/
references it any more; it is kept for history and is not part of the build.
Cel-shaded PS2-era arcade style with real 3D models (CC0/free asset packs,
credits in public/assets/models/CREDITS.txt), procedural fallback art where
kits aren't loaded, and hot-swappable models/sounds by filename — see
public/assets/README.md for the full asset list and credits.
Browser checks (with the dev server running): scripts/check-presentation.mjs,
scripts/check-driving.mjs, scripts/check-danfo.mjs, scripts/visual-world.mjs
and scripts/visual-cars.mjs. They save screenshots under output/ and are not a
substitute for profiling on a physical phone.
Source code is MIT — see LICENSE.
The art and audio under public/assets/ are third-party and keep their own
licences, recorded with their packs and terms in CREDITS.md.
Every asset slot has a procedural fallback, so the game runs complete without
any of them.