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
Fast games, real challenges. Beat your friends' high scores.
Translation pending
GamesTypeScript · PythonGitHub @topiltzinOnlineOwner 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
Repo for gonzalo Web page
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A game site for kids and young teens (about 10–14), hosted by Gonzalo and deployed on Vercel. Friends open a link, pick a game, and play. Logging in is optional and only saves best scores and leaderboard places; there is no chat, ads or tracking. Without logging in, best scores stay in each player's own browser.
Everything you share lives in the content/ folder. Edit a file (the GitHub website editor works fine), commit, and Vercel puts the new version live in a minute or two. If you make a mistake, the build stops with a message naming the file and field, and the old site stays up.Read the full README ↗A game site for kids and young teens (about 10–14), hosted by Gonzalo and deployed on Vercel. Friends open a link, pick a game, and play. Logging in is optional and only saves best scores and leaderboard places; there is no chat, ads or tracking. Without logging in, best scores stay in each player's own browser.
npm install
npm run dev # http://localhost:3000
npm test # unit tests (game logic, content, colours)
npm run test:e2e # browser tests (builds the site first)
npm run lint
npm run build
Everything you share lives in the content/ folder. Edit a file (the GitHub website editor works fine), commit, and Vercel puts the new version live in a minute or two. If you make a mistake, the build stops with a message naming the file and field, and the old site stays up.
Add a file to content/announcements/, named YYYY-MM-DD-short-name.md:
---
title: "Catch It is here!"
date: 2026-10-01
gameSlug: catch-it
titleEs: "¡Ya llegó Atrápala!"
bodyEs: "Llegó un juego nuevo y veloz. ¿Puedes superar tu récord?"
---
A new speedy game just landed. Can you beat your best score?
title: up to 60 characters.date: the newest date shows first.gameSlug: optional. It adds a "Play …" button for that game.titleEs and bodyEs: optional Spanish versions. Without them, the Spanish site shows the English text.The site comes in English (/en) and Spanish (/es). Visitors whose browser is set to Spanish land on /es automatically, and the button in the top corner switches languages. Most text files have an optional Spanish version next to the English:
content/site.json: an "es" object with name, tagline and welcome.content/games.json: an "es" object on each game with title, description and instructions.titleEs and bodyEs in the frontmatter (see above).titleEs.Add links to content/videos.json:
[
{ "title": "How to draw a dragon", "titleEs": "Cómo dibujar un dragón", "url": "https://www.youtube.com/watch?v=XXXXXXXXXXX" }
]
https://www.youtube.com/@name.title: up to 60 characters.Edit content/games.json:
"featured": true puts the game in "Gonzalo's pick" at the top."status": "new" adds a New! badge."status": "coming-soon" shows a locked card that can't be opened yet."status": "available" is a normal game.Edit host.welcome in content/site.json (up to 400 characters), and es.welcome for Spanish.
games/<slug>/ with:
logic.ts: the rules as plain functions (easy to unit test).<Name>.tsx: a "use client" component whose default export takes { onFinish } (see games/types.ts). It calls onFinish({ headline, detail?, score? }) once when a round ends. Get on-screen text from useT() and add English and Spanish strings to lib/i18n.ts.games/registry.ts. Include scoring if the game has a best score (direction: "higher" or "lower", unit: moves, stars or coins).content/games.json, with an "es" translation. Keep title to 30 characters, description to 80 and instructions to 160. icon must be one of lib/icon-names.ts, and color is one of primary, secondary, accent, sun, mint or sky.tests/unit/<slug>.test.ts for the logic.You don't need to touch any other game. The build fails if a playable game in games.json has no registry entry.
Game checklist: works with touch, mouse and keyboard; buttons are at least 44 px; it makes sense with the sound off; it has no violence, ads or links out.