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 live marble-racing betting game for team video calls. The host screen-shares a 3D physics race; everyone else bets Marble Bucks from their phone. The lowest finishers are knocked out each race until one marble is crowned champion.查看完整 README ↗A live marble-racing betting game for team video calls. The host screen-shares a 3D physics race; everyone else bets Marble Bucks from their phone. The lowest finishers are knocked out each race until one marble is crowned champion.
Odds are pari-mutuel: each market is one pot, and everyone who bet on a winning option splits it in proportion to their stake, so odds move as money comes in. A small virtual seed on every option keeps early odds sane.
Music and sound effects play on the host's machine only — when sharing on Zoom, tick Share sound. Each theme has its own generated soundtrack (calm while betting, full band while racing, a lead line near the finish), plus countdown beeps, crowd cheers, boost whooshes, a rolling rumble that follows the marbles' speed, and fanfares. Mute/volume is in the host's top bar. To use your own music, see public/music/README.md.
.env.local.example to .env.local (or .env) and fill in the Project URL and publishable key.supabase/migrations/*_init.sql in the dashboard SQL Editor, or supabase link --project-ref <ref> && supabase db push.npm install && npm run dev, then open http://localhost:3000.Tip for testing alone: each *.localhost subdomain gets its own anonymous player, e.g. host on localhost:3000 and players on p1.localhost:3000, p2.localhost:3000.
Push to GitHub and import it into Vercel, adding the two NEXT_PUBLIC_SUPABASE_* env vars. The QR code uses whatever URL the host screen is served from.
| Path | What |
|---|---|
lib/race/track.ts | Seeded procedural track: banked S-bends, helixes, spinners, pegs, boost pads |
lib/race/engine.ts | Rapier physics race: progress, standings, checkpoint/lead/finish events. Deterministic per seed |
lib/race/renderer.ts, runner.ts | three.js view, camera director, slow-mo, animation loop |
lib/game/director.ts | Host-side race control: locks betting, opens/settles live props, eliminates, advances rounds |
lib/game/odds.ts | Pari-mutuel odds (mirrors private.settle_market in SQL) |
supabase/migrations/ | Schema, RLS and RPCs. Clients only read tables; all writes go through host/player-checked functions |
components/host/HostGame.tsx | The screen-shared host view |
components/play/PlayGame.tsx | The phone view |
/sandbox | Race-only page for tuning tracks and cameras without a backend |
npm test runs the odds and race-engine tests (headless physics).