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。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗The buzzer for the Spooky Sheet Datarails Halloween scavenger hunt.
/) enter their name, get sorted into the smallest team automatically, and see one big buzzer plus a HUD with their name, team, their own points and their team's score./admin) sees who buzzed first, then Approve (+1 to that player and +1 to their team) or Decline. Either way the buzzer is released for everyone. A Top hunters leaderboard ranks players by their own points.The first buzz is decided atomically in Redis, so if two people hit it at the same moment exactly one of them wins.
Import the repo: Vercel → Add New… → Project → pick this repo. Framework preset: Other. No build command needed.
Add a free Redis database. The simplest way is to create it on Upstash directly:
us-east-1), plan Free.UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN.(If you'd rather go through Vercel, Storage → Create Database → Upstash for Redis creates the same database and adds the env vars for you. Each Upstash account gets one free database. If you see only paid plans there, that account already has one: use the direct route above with a different login.)
Set the host password: Settings → Environment Variables → add ADMIN_PASSWORD with a password only you know.
Redeploy (Deployments → ⋯ → Redeploy) so the new env vars are picked up.
Then:
https://<your-app>.vercel.app with everyone (the admin page has a Copy link button for the Zoom chat).https://<your-app>.vercel.app/admin yourself and log in with ADMIN_PASSWORD.| Host action | How |
|---|---|
| Approve the first buzz (+1 to the player and their team) | ✓ Approve or A |
| Decline it | ✗ Decline or D |
| Lock buzzers between items so nobody buzzes early | 🔒 Lock buzzers or L (press again to open) |
| Fix a team score | − / + on the Scareboard (team only) |
| Fix a player's points | Tap the player in the list → −1 / +1 (changes their team's score too) |
| Rename / add / remove teams | Edit the name in place, + Team / − Team |
| Remove a player who left | Tap the player → Remove player |
| Wipe team and player points, keep players | ↺ Reset scores |
| Start over (everyone re-enters their name) | 🧹 New game |
Team balancing. Each new player joins the team with the fewest players (ties are random). Whenever teams get uneven (you remove a player, or add or remove a team), the most recently joined players of the biggest team are moved to the smallest. Moved players see a message saying which team they're on now.
public/: static pages (index.html = player, admin.html = host), the shared theme and the fonts and Bob artwork from the main game.api/: Vercel functions: state (public state), join, buzz, admin (password protected).lib/game.js: game logic. Joining, buzzing and judging are Lua scripts, so each one runs atomically in Redis.Players poll /api/state about once a second. Vercel's CDN and the function itself share one database read per second, so the load doesn't grow with the number of players. When you buzz, the result comes straight back from the server. With the admin page open, a live game uses about 40k Redis commands an hour. That's well inside Upstash's free 500K commands a month, so close the admin tab when you're not playing.
# .env.local
UPSTASH_REDIS_REST_URL=... # from your Upstash database
UPSTASH_REDIS_REST_TOKEN=...
ADMIN_PASSWORD=boo
npm run dev # http://localhost:3000 and http://localhost:3000/admin
There are no dependencies. You need Node 22 or newer (vercel dev works too).