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
Log Bo3 matches, track win rates by matchup, and read Claude's deck notes.
GamesJavaScript · CSSGitHub @leefusOnlineOwner 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
A deck stats tracker page
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗(Formerly Pickpocket Match Log. The Notion databases keep their original names.)
Bo3 match tracker for MTG decks under test. Next.js 14 on Vercel, with decks and matches stored in two Notion databases (same pattern as hathcocked-recipes).
Pickpocket Decks): name, format, archetype, colors, the
Arena-format main deck and sideboard, a sideboard guide, and a testing gate.
Add one from Add a deck in the app, or as a row in Notion.Pickpocket Match Log): each match links to a deck. The
opponent is a current meta deck, or Not in meta with a basic type
(Aggro, Midrange, Control, Combo, Ramp, Tempo), colors and an optional name./): pick a deck or add a new one. Each deck has its own
page at /decks/<id>; old /?deck=<id> links redirect there.lib/pretest.mjs, cached for a week): curve, colored
sources and Karsten-style casting odds, how each land enters, opening-hand
land counts, removal count, and a check that each sideboard plan balances.
It opens automatically for a new deck or one with no matches.lib/autoedges.mjs: what each
card produces and which cards pay it off), stored in Notion under an
# Auto-generated header. A deck with no edges at all (typed into Notion)
gets the same graph on its page. Claude's hourly review replaces
auto-generated edges with a reviewed, rule-based set.lib/axes.mjs). It shows the deck's main win axis,
which of its costs are fuel, how hard every other deck in the tracker
pressures your life (worked out automatically), and whether each
self-harm cost is worth paying in each matchup.lib/jones.mjs): disruption, decision
fatigue, annoyance and confusion, plus a "misery graph" of cards that
compound each other. Leaderboard on the start page, details on each deck.Reads are public; adding decks or matches, and removing matches, needs
TRACKER_PASSCODE. Removing a match moves its Notion row to the trash.
••• → Connections → add the integration to each..env.local.example.cp .env.local.example .env.local # fill in the token and passcode
npm install
npm run dev
npm test # list parsing, stats and Notion mapping
One opponent per line, Opponent | In | Out. Put your two hardest matchups
first: the opponent table holds those two to a 35% bar instead of the
deck's gate win rate.
Each deck can carry a Synergy Edges list in Notion (also on the Add a deck form), one per line:
Rank Rat -- Tinybones, Pocket Nuisance | discard pings
Ambrosia Whiteheart !! Sheltered by Ghosts | bounce frees their permanent
-- is a synergy, !! a conflict. Only nonland main-deck cards count (lands
are recognized from the Standard pool in lib/standard-lands.mjs). The page
draws the graph and reports, in the same terms as the Claude project's Step 8
write-up: isolated cards, connected components (engines), cut vertices
(single points of failure, and which cards they strand), λ₂ (algebraic
connectivity), and the expected number of synergies with both cards seen by
turns 4 and 7 (hypergeometric, on the play). It joins per-card degree with the
dead-card flags from your matches. The math is in lib/graph.mjs, tested in
lib/graph.test.mjs.
It's a progressive web app. On Android/Chrome, accept the install banner. On iPhone, open it in Safari → Share → Add to Home Screen. Pages you've loaded open offline; logging a match needs a connection.