Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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).