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 unified guild hub for tracking Dragon Valley attacks
Translation pending
GamesTypeScript · CSSGitHub @dandan005OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗I made this for my Slayer Legend guild because we kept losing track of who actually hit Dragon Valley each cycle and what promotion/damage they ran. Google Sheets got messy fast, so I built a little pixel-themed PWA instead. It handles the six-day raid cycle, logs attacks, and keeps score context in one place so I'm not chasing people on Discord every reset.
From what people say in the community, DV is a promotion-based raid — hitting at a higher promotion is worth more points. So on top of just "did you attack today," I added two optional fields to each D1–D6 log:
Then there's a readout on the dashboard: total points for the cycle, who's doing the most damage, who's got the best check-in streak, and who still hasn't logged today.
Both fields are optional on purpose — if someone just wants to tap "attacked" without typing in numbers, that still works. The API also still accepts the old bare attack-log shape, so I didn't break anything for people who haven't run the DB migration yet.
New install → just run supabase/schema.sql, done.
Already have data in there? Run these two in the Supabase SQL editor instead of nuking anything:
alter table attack_logs add column if not exists promotion_tier int check (promotion_tier >= 0);
alter table attack_logs add column if not exists damage_score bigint check (damage_score >= 0);
Until you run that, attack logging still works fine — it just won't save the promotion/damage numbers.
supabase/schema.sql..env.example → .env.local (and set the same vars on Vercel).Then just:
npm install
cp .env.example .env.local
npm run dev
The cron in vercel.json fires at 20:00 UTC by default — change it if your guild resets at a different time.
app_settings is one shared row per deployment — this is built for a single guild, not multi-tenant.