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。 以下为已保存的摘录。
A full-stack Pokémon collection and battle game covering the original 151 Kanto species plus 6 Dark-type additions for Psychic counterplay: browse the Pokédex, roll and collect your own Pokémon from lootboxes, evolve them, and battle them against AI or other players in real time — in English or Argentinian Spanish.查看完整 README ↗
A full-stack Pokémon collection and battle game covering the original 151 Kanto species plus 6 Dark-type additions for Psychic counterplay: browse the Pokédex, roll and collect your own Pokémon from lootboxes, evolve them, and battle them against AI or other players in real time — in English or Argentinian Spanish.
Play it: pokedex-next-rho.vercel.app (free account, email and password)
Unofficial, non-commercial fan project. Not affiliated with or endorsed by Nintendo, Game Freak or The Pokémon Company. See Disclaimer.
max_uses), no regenerating resource pool. Each Pokémon
always has at least one move — its weakest damage move, computed per
battle — that's freely castable with no limit.flowchart LR
B[Browser] -- "fetch /api/*" --> R[Next.js Route Handlers]
R -- "secret key" --> DB[(Supabase Postgres)]
B -- "publishable key: Auth" --> A[Supabase Auth]
B <-- "private channels" --> RT[Supabase Realtime]
R -- "broadcast" --> RT
lib/battleEngine.ts), for online rooms and bot
battles alike. The browser only sends which move or switch the player
chose; stats, results and rewards are never taken from the client.anon and authenticated roles have no privileges on any table
and can execute no database function except the Realtime topic check, so
the REST API can't be used to skip the app's checks.user: topic, friendships they're in, and rooms they play in. The only
event a client may send is room chat.supabase/tests/database.sql checks all of the above on every CI run.Install dependencies:
npm install
Copy the environment template and fill it in with values from your Supabase project's dashboard (Project Settings → API):
cp .env.local.example .env.local
Apply the database schema. This project's migrations
(supabase/migrations/*.sql) are written to run through Supabase's
GitHub integration — connect your Supabase project to this repo and
push to main, or apply them manually via the Supabase SQL editor in
the order they're numbered.
Run the development server:
npm run dev
Open http://localhost:3000.
npm run build # production build
npm run start # run a production build
npm run lint # eslint
npm run typecheck # generate Next's route types, then tsc
npm test # unit tests (Vitest)
npm run test:db # SQL tests against the local Supabase database
Real players use this app — no feature work happens directly against production. The workflow:
Work on a dedicated branch, never main directly, and don't push it
until the whole wave is validated (see upgrades/'s own
per-wave process). This keeps the branch — and anything Vercel or
Supabase would otherwise auto-deploy from it — entirely local until
you're ready.
Start a local Supabase stack (requires Docker Desktop running):
npm run db:start # supabase start -- pulls images on first run, then
# applies every migration in supabase/migrations/
# against a fresh local Postgres instance
Other lifecycle commands: npm run db:stop, npm run db:status,
npm run db:reset (wipes and replays every migration from scratch —
the fast way to check a new migration applies cleanly).
Point .env.local at the values supabase status prints (API URL →
NEXT_PUBLIC_SUPABASE_URL, anon key → NEXT_PUBLIC_SUPABASE_ PUBLISHABLE_KEY, service_role key → SUPABASE_SECRET_KEY) instead of
your real project's. .env.local is gitignored, so this never touches
what's deployed — back up your production values first if
.env.local currently holds them (e.g. cp .env.local .env.local.production.bak, also gitignored) so switching back later is
a copy, not a trip to the Supabase dashboard.
npm run dev as normal — now talking entirely to the local instance.
Sign up a fresh test account (the handle_new_user trigger seeds
starters the same way it does in production) rather than needing any
special seed data.
Once every step in the wave is implemented and validated locally, merge
to main locally and push — that single push is what triggers the real
Supabase GitHub integration (migrations) and Vercel deploy (production
code), only once, with everything already proven out.
app/
[lang]/ every page, under an EN/ES-AR URL segment (/en/...,
/es-AR/...)
(app)/ authenticated screens (battle, inventory, pokedex,
dashboard, friends, online, leaderboard, etc.)
login/, signup/ auth screens
api/ server routes (battles, rooms, friends, inventory,
...) -- not under [lang]; Route Handlers don't render
user-facing text, so they don't need a locale
components/ React components, grouped by feature area
hooks/ shared React hooks
lib/ business logic — battle engine, collection/roll
logic, evolution, Supabase clients, dashboard/
leaderboard/history queries
i18n/ dictionaries (en.ts/es-AR.ts), getDictionary()
(Server Components) / useDictionary() (Client)
types/ shared TypeScript types (Pokémon, moves, battle state)
proxy.ts session refresh, auth redirects and locale routing
(Next 16's renamed middleware)
tests/ unit tests (battle engine, action validation, bot
battles)
supabase/migrations/ versioned SQL schema, applied in order
supabase/tests/ SQL tests run against a migrated database
design/ design system spec and per-screen redesign tracker
upgrades/ this project's own step-by-step development log —
every feature wave is planned and tracked here
before it ships
This project tracks its own feature work in upgrades/:
completed waves are archived under upgrades/archive/, and
upgrades/main.md always reflects whatever's
currently in progress (or says "no active wave" between them).
The code in this repository is released under the MIT License. The licence covers this project's own code only, not the Pokémon names, artwork or other material described below.
Kanto Pokédex — Web Edition is an unofficial, non-commercial fan project made for learning and for fun. It is not affiliated with, endorsed, sponsored or approved by Nintendo, Game Freak, Creatures Inc. or The Pokémon Company.
Pokémon, the Pokémon names, characters, sprites and related marks are trademarks and copyrights of Nintendo, Game Freak, Creatures Inc. and The Pokémon Company. They are used here for non-commercial fan purposes only. Nothing in this project is sold, and no money changes hands: lootboxes are earned in game and cannot be bought.
If you are a rights holder and want something changed or removed, please open an issue or contact the author and it will be dealt with promptly.