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
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A 2D vertical endless survival climber. You climb forever while a deadly
force rises from below — dodge, boost, manage shields, survive as long as
you can.
No tokens, no minting, no wallet required. Connecting a Solana wallet is
optional and does exactly one thing: it carries your personal bests across
your devices.
Pick a fighter, a world theme and a difficulty, then climb.查看完整 README ↗A 2D vertical endless survival climber. You climb forever while a deadly force rises from below — dodge, boost, manage shields, survive as long as you can.
No tokens, no minting, no wallet required. Connecting a Solana wallet is optional and does exactly one thing: it carries your personal bests across your devices.
Pick a fighter, a world theme and a difficulty, then climb.
| Action | Keyboard | Touch |
|---|---|---|
| Move left / right | A / D or ← / → | D-pad on the virtual pad |
| Boost | W / ↑ / Space | Boost on the virtual pad |
| Freeze (Rin) | — | FREEZE button |
| Tsunami (Tenma) | — | TSUNAMI button |
Shields absorb hits. The Freeze and Tsunami buttons only appear while you have a charge left, and disable once spent.
All three are free and always available. They are not cosmetic — each is a different run kit, and they trade against each other rather than laddering. These abilities used to be locked behind an owned NFT; they survived the chain removal and now belong to the fighters.
| Fighter | Kit | Plays like |
|---|---|---|
| Sora | Baseline climb · 3 shields | The reference. The climb is tuned around Sora — the honest default. |
| Rin | +12% climb & move · 3 shields · Freeze 6s | Fast and fragile. Outruns the rise, buys time with one Freeze. |
| Tenma | −4% climb & move · 5 shields · Tsunami | Heavy. Climbs slower, soaks two extra hits, clears the screen once. |
Freeze holds the rising danger; Tsunami clears it.
Phantom, Solflare and Backpack are detected automatically through the Wallet Standard. Connecting is identity only — the app never requests a signature and never builds a transaction. It owns no contracts and holds no funds.
Your address keys a record of your Normal bests so the same scores show up on your phone and your desktop. Skip it and everything still works; the bests just live in that one browser.
npm install
cp .env.example .env.local # optional — every var has a working default
npm run dev # http://localhost:3000 (--webpack)
npm run build && npm start
Checks:
npx tsc --noEmit # types
npm run lint # lint
npm run check:replay # sim determinism + input-log integrity
check:replay is the important one. The climb runs on a deterministic
fixed-step sim (src/game/sim/ClimbSim.ts, 60Hz), and the check drives it
with an autopilot across every theme and playfield width, replays each
recorded run, and fails unless the outcome is bit-identical. If it goes red,
the physics changed.
| Path | What lives there |
|---|---|
src/game/sim/ | The deterministic climb sim — pure logic, no DOM, no rendering |
src/game/engine/ | The runtime loop that drives the sim and draws it |
src/game/render/, themes/ | Canvas 2D drawing, per-theme worlds |
src/components/game/ | Menu, HUD, virtual pad, character select |
src/web3/ | Solana wallet session + the player/bests store |
src/app/api/normal-bests/ | Wallet-keyed bests, backed by Vercel KV |
Note that Solana addresses are base58 and case-sensitive — unlike an EVM hex address they must never be lowercased to key a record.
Under its former name LOOPTERNITY, this game was built around LOOPITERNS, a 10,000-piece
ERC-721 collection on Robinhood Chain with a Play-to-Mint mode, server-signed
mint vouchers and NFT-gated abilities. All of it — contracts, mint routes,
art pipeline, treasury — has been removed from this project. The deployed
addresses are recorded in docs/launch.md so they are not lost, but nothing
in this app reads them.