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
Bramblewood Arena — card battle microsite
Translation pending
GamesHTML · JavaScriptGitHub @herouganOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
A card-battle microsite (otters vs. hummingbirds). This repo holds both the full source and the
assembled single-file build that's actually deployed.Read the full README ↗A card-battle microsite (otters vs. hummingbirds). This repo holds both the full source and the assembled single-file build that's actually deployed.
index.html — the deployed build: a single self-contained HTML file (~5.5MB) with everything
inlined (game code, GSAP, the Supabase SDK, all card art as data URIs). This is what Vercel
serves. Deployed on Vercel from this repo.arena_app.js / bramblewood-engine.js / arena_template.html — the actual source. arena_app.js
is the UI/app layer; bramblewood-engine.js is the combat engine (kept dependency-free, no DOM
access, so it can also run headless in tests); arena_template.html is the page shell/CSS.canonical/cards.json / canonical/characters.json — the full card and character/Bramble
dataset, as plain JSON (this is the actual game data — balance changes, new cards, etc. all
happen here).assemble_arena.py — the build script. Reads everything above (plus the three vendored
libraries below) and writes index.html. Run it after any source change:
python3 assemble_arena.pygsap.min.js / Flip.min.js / supabase.umd.js — vendored copies of GSAP (+ its Flip plugin)
and the Supabase JS SDK, inlined into the build rather than loaded from a CDN so the assembled
page stays self-contained and works offline/from a local file too.Live data (accounts, decks, match history, ranked, guilds, raid bosses) is backed by Supabase.
The client only ever uses the public anon key (safe to expose, gated by Row Level Security) —
never a service-role key. Card/character data itself (canonical/*.json) is NOT stored in
Supabase; it's baked directly into the build.
node --check arena_app.js && node --check bramblewood-engine.js # syntax check first
python3 assemble_arena.py # writes index.html