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
A keyboard-learning game: find the glowing key, strike the enemy.
Translation pending
GamesJavaScript · CSSGitHub @EvilRenOnlineOwner 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 keyboard-learning game for kids. A word appears, the matching key glows on an
on-screen keyboard that carries both English and Hebrew legends, and pressing the
right key makes your fighter strike. Press the wrong one and the enemy strikes back.
Built with my seven-year-old, whose idea this was.Read the full README ↗A keyboard-learning game for kids. A word appears, the matching key glows on an on-screen keyboard that carries both English and Hebrew legends, and pressing the right key makes your fighter strike. Press the wrong one and the enemy strikes back.
Built with my seven-year-old, whose idea this was.
Static site, no build step:
cd keyquest # the repo root
python3 -m http.server 8000
# open http://localhost:8000
Opening index.html directly from the filesystem works too, though some browsers
restrict microphone access there — use the local server for the voice pack.
No dependencies:
node tests/test-content.js
It loads the real src/app.js and compares every pair of lists that must
agree — lesson characters against the keyboard, against what the voice can
say, against the voice-pack tiles; sprites, shop items and defaults against
the tables they point into. See tests/README.md.
Vercel: import the repo, framework preset Other, leave build command empty and output directory as the repo root.
index.html markup only
src/styles.css all styling, themed with CSS custom properties
src/app.js game logic, sprite animation, keyboard model
assets/atlas.png sprite atlas, 44x32 frames, 10 animation rows
assets/favicon.svg tab icon, a keycap
assets/icon-180.png the same icon for Apple home screens
tests/ node, no dependencies
The atlas rows are, in order: soldier idle/walk/attack/hurt/death, then orc idle/walk/attack/hurt/death. Extra fighters and enemies are canvas hue-rotate recolours of those two sprites.
Progress, coins, per-key mastery and settings live in localStorage under
keyquest.
Recorded voice clips live in IndexedDB under keyquest-voice. Both are per-browser.
Copyright (c) 2026 Benny Ankri. All rights reserved — see LICENSE.
Character sprites are from the Tiny RPG Character Asset Pack 01 (Free Soldier & Orc) and are not covered by that licence; they remain their author's property under the pack's own terms, and are credited in the game and here. Anyone reusing this project must obtain the pack from its author and comply with its licence separately.
The Rubik typeface comes from Google Fonts under the SIL Open Font License.