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 browser bomb-battler with friends online or locally on one keyboard
Translation pending
AI summary · website and README
GamesJavaScript · HTMLGitHub @anirudhseshadriOnlineOwner 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 bomb-battler. Four players, grid arena, destructible blocks, powerups,
last one alive wins. The client is a static site with no build step; online
games run on a small Node server that owns the match.
The game is built from ES modules, so opening index.html straight off your
disk (a file:// address) will not work. Browsers block module loading there.
Serve the folder over HTTP instead. From this directory:
Then open. Any static server will do. That is enough
for local play on one keyboard.
For online games, start the server too, in a second terminal:Read the full README ↗A browser bomb-battler. Four players, grid arena, destructible blocks, powerups, last one alive wins. The client is a static site with no build step; online games run on a small Node server that owns the match.
The game is built from ES modules, so opening index.html straight off your
disk (a file:// address) will not work. Browsers block module loading there.
Serve the folder over HTTP instead. From this directory:
npx http-server -p 8099
Then open http://127.0.0.1:8099. Any static server will do. That is enough for local play on one keyboard.
For online games, start the server too, in a second terminal:
cd server && npm install && npm start
On localhost the client finds it by itself. See server/README.md for
deploying and for the message protocol.
Two pieces, because a game server has to keep running and Vercel cannot do that:
wss:// URL in src/config.js.index.html canvas, touch pad, and the module entry point
src/main.js wires the parts together and runs the frame loop
src/game.js rules and simulation. No drawing, no networking, no DOM
src/render.js draws a view object onto the canvas
src/net.js the WebSocket connection to the server
src/snapshot.js the snapshot format, shared with the server
src/config.js where the server lives
src/input.js keyboard and touch
src/ui.js menu and lobby screens
src/constants.js values shared by all of the above
src/maps/ one file per map, data only. See src/maps/README.md
server/ the game server. See server/README.md
game.js holds the tuned numbers for movement, bomb timing and blasts. It
never reads the DOM, so the same file runs in the browser for local play and on
the server for online play. There is one copy of the rules and it cannot drift.
Everyone in a room sees the same lobby screen. The server owns it and sends it out after every change, so there is never a version only one person can see.
Four players to a room. A fifth is told the room is full.
A map is a file of plain data, including the arena itself as a grid of characters you can type:
'#1__.......__3#',
'#_#.#.#.#.#.#_#',
Three ship: The Yard (the original), Scrapheap (dense, fast) and Waterworks
(water, conveyors, a teleport pair). Adding one is a new file plus a line in
src/maps/index.js. src/maps/README.md has the full character list.
Arrow keys or WASD to move, space or enter to drop a bomb, K or left shift to kick.
On a phone a four way joystick appears automatically. Put your thumb anywhere
on it and the knob snaps to the direction you are asking for; roll from one
direction to the next without lifting, and hold as long as you like. Add
?pad to the URL to force the touch controls on a laptop.
Four players can share one keyboard: arrows, WASD, UHJK and the numpad.