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 Fusegrid in the browser. Single-player bomb-grid arcade. REAL 3D ⇄ CLASSIC 2D. Heat CORE / PLUS / MAX.
Translation pending
GamesJavaScript · HTMLGitHub @HMarzbanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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
A browser arcade game with a deterministic simulation, replay tests, and switchable 2D and 3D renderers.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
FUSE/GRID is a single-player, deterministic bomb-grid arcade you play in the browser. Flip REAL 3D ⇄ CLASSIC 2D from the cabinet menu, pick your Heat on LEVEL SELECT, and clear every enemy to advance.
Share that URL with the trailing slash so chat apps load the preview card (og.png, 1200×630). The no-slash redirect drops Open Graph tags.Read the full README ↗INSERT COIN. Light the fuse, clear the room, don't stand in the blast.
Fusegrid is a single-player bomb-grid arcade you play right in your browser. Flip REAL 3D ⇄ CLASSIC 2D (or hand-pixelled PIXEL) whenever you like, dial the Heat to CORE, PLUS or MAX, and blow your way through eight rooms of bricks, foes and chiptune.
No install needed, no account, no server. Just press start.
Sharing the link? Keep the trailing slash:
https://hmarzban.github.io/fusegrid/. The no-slash redirect drops the Open Graph tags, so chat apps show no preview card (og.png, 1200×630).
The one rule: clear every enemy in the room to advance.
| Input | Action |
|---|---|
| WASD / arrows | Move |
| Space (or J / X) | Place bomb |
| Shift + Space | Throw (needs THROW) |
| Q | Detonate remote (needs REMOTE) |
| Walk into a bomb | Kick it so it slides (needs KICK) |
| R (in a run) | Reset the camera and zoom |
| P / Esc | Pause (RESUME / RESTART / OPTIONS / QUIT TO MENU); ↑↓ + Enter pick a row |
| M (paused) | Quit to menu |
| Space / Enter (end screen) | Next room, back to the menu after the finale, or a new run after GAME OVER |
| C (end screen or STATS) | Copy your result or your stats as text (both say COPIED, or COPY FAILED) |
| B (end screen) | Copy the board's challenge link (the end screen says BOARD LINK COPIED) |
| T (STATS) | Open the MEDALS page |
| R, R (STATS) | Reset my cabinet (two presses; any other key cancels) |
Menus run on the arrows, Enter and Esc. Powers marked * in the in-game
HOW TO need their pickup first.
On a phone or tablet, a virtual D-pad and bomb button sit off the board. In portrait they dock low in the thumb zone (the board centres on the menus and slides up under the pause button during a run). In landscape they sit in the side gutters, with pause above. Holding THROW or REMOTE? A matching button pops up beside the bomb button (in the right gutter in landscape). STATS's MEDALS, Copy and Reset labels are tappable too.
Want the full cast of pickups and foes? Open GUIDE → ITEMS / ENEMIES in the game. The cabinet explains itself, and its wording comes straight from the game's own item table, so it's never out of date.
| Room | Look | Notes |
|---|---|---|
| 1 | JUNGLE | Bright grass, gold stumps |
| 2 | ICE | White cubes, navy cliffs |
| 3 | FACTORY | Amber crates, steel |
| 4 | WATER | Teal sewer / ruins |
| 5 | ARENA | Night court, rose bricks. Finale on your first run |
| 6 | SAND | Ochre dunes (unlocks after your first CLEAR) |
| 7 | VOID | Violet dark, tall cliffs (unlocks after your first CLEAR) |
| 8 | CROWN | Gold court. Finale after unlock (unlocks after your first CLEAR) |
Every room has its own chiptune theme and its own blast tint. Fresh installs show rooms 1–5 only. That's the gate, not a bug: beat room 5 and the map grows.
On LEVEL SELECT, ←/→ picks the room, ↑/↓ picks Heat and [/] picks pace
(EASY / NORM / HARD). Enter starts, Esc backs out.
| Heat | What changes |
|---|---|
| CORE | The baseline run (baseline v6, the replay reference) |
| PLUS | Harder spawns and a tighter fuse |
| MAX | Highest pressure |
The attract demo always runs CORE with every MODE off, whatever you picked last.
Clear room 5 once and LEVEL SELECT also offers four optional MODES, each a voluntary handicap:
| Key | Mode | Rule |
|---|---|---|
1 | IRON | Start with one life |
2 | BARE | No walkable floor cubes |
3 | THIN | One fewer buried cube under breakables |
4 | SHRINK | Arena walls close inward over time |
5 adds TIME: a play-only stopwatch with a per-room best. A CORE run
with every MODE off is bit-identical to baseline v6.
The live HUD shows raw points. HIGH SCORES saves Heat-scaled totals: CORE ×1, PLUS ×2, MAX ×3.
FLAME 4, MAX, or replaces … on a bomb swap) and pulses its HUD chip.
An ability bar along the bottom of the board lists the powers you hold.B copies a twelve-character board
code (seed, Heat, MODES, pace and which board maker built it, never a score;
F2 codes are the new mazes, F1 codes keep the original boards). Open
…/fusegrid/?code=XXXXXXXXXXXX to play that same board.Everything the game remembers lives in your browser's local storage. There is no account, no server and no global ranking. The game asks once whether to share play stats through Google Analytics; nothing is sent unless you allow it, and OPTIONS → ANALYTICS changes your mind (privacy).
No bundler, no build step and zero npm runtime dependencies. It's plain ES modules, and Three.js r160 is vendored for REAL 3D only. You need Node.js 26.
git clone https://github.com/HMarzban/fusegrid.git rollblock
npm start
Then open http://127.0.0.1:8080/index.html. Run the whole test suite with:
npm test
Under the hood the simulation is deterministic: same seed, same inputs, same outcome, in Node and in the browser. Read on:
| You want to… | Go to |
|---|---|
| Set up, use URL flags, send a pull request | CONTRIBUTING.md |
| Understand how the game works and why | docs/architecture.md |
| Find any doc (and which one owns which fact) | docs/README.md |
| See what changed in each release | CHANGELOG.md |
| Read the story of how it was built | docs/diary.md |
| Grab store art or zip the game for itch | media/README.md (listing art lives in media/) |
| Report a security issue | SECURITY.md |
Everyone in the arcade follows the Code of Conduct.
MIT. See LICENSE. Three.js r160 is vendored under MIT in
vendor/three.module.js.
Source: github.com/HMarzban/fusegrid.
The public game is Fusegrid; a local checkout is conventionally named
rollblock.
GAME OVER? Press Space. One more run.
C (or a tap on C COPY MY STATS)
copies it as text. HIGH SCORES carries four local plaques.T (or a tap on
T MEDALS) on STATS opens the MEDALS page.R twice (or tap R RESET, then
R AGAIN) to wipe progress and reload. Settings and pace are kept. Anything
else cancels (C, or a tap on C COPY, cancels and copies your stats).U) on the menus or after a finished run,
never in the middle of one. LATER hides it until your next run ends or
the next time you open the game.v183), so you can tell when an update has landed.