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。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Scan barcodes to discover creatures and loot, then take them into the Labyrinth.
The whole game runs in the browser. There's no server, account, database, API or secret key behind it. Your save lives in the browser on your computer. It works fully offline once it's installed.
main is the primary branch. Work there, or on a short-lived branch merged back into it.Install Git for Windows: https://git-scm.com/download/win Keep the defaults, especially "Checkout Windows-style, commit Unix-style line endings", so both computers treat line endings the same way.
Install Node.js 24 LTS (the "LTS" button): https://nodejs.org Next.js needs at least Node 20.9; both computers should use 24.
Install Cursor: https://cursor.com (and Claude Code, if you use it).
Open PowerShell (or Cursor's terminal) and run:
cd $HOME\Desktop
git clone https://github.com/codex-creatures/codex-creatures-clean.git
cd codex-creatures-clean
npm ci
npm ci installs exactly the versions in package-lock.json. The first
git clone asks you to sign in to GitHub in a browser window.
Check it works:
npm test
npm run dev
Open http://localhost:3000. Stop the game with Ctrl+C in the terminal.
After this, everything works with no internet: npm run dev, npm test, npm run build:offline
and the game itself. You only need the internet again to pull/push code or to reinstall packages.
The easy way (Windows): double-click in the project folder:
Start Game.bat: starts the game and opens http://localhost:3000. Works offline. Keep its
window open while you play; close it to stop. If the game is already running, it just opens it.Update.bat: gets the latest code from GitHub (git pull --ff-only origin main) and
reinstalls packages if they changed. It stops, changing nothing, if you have uncommitted work, are
offline, or this computer and GitHub have split. It never pushes, resets or discards anything, and
never touches your save.Or from a terminal:
| What | Command | Address |
|---|---|---|
| Develop and play | npm run dev | http://localhost:3000 |
| On your phone (same Wi-Fi) | npm run dev | http://<this PC's IP>:3000 (the terminal shows it under "Network") |
| A standalone copy (no Node needed to play) | npm run build:offline | http://localhost:8123 |
| Tests | npm test (quick) or npm run test:all (everything, a few minutes) | — |
Port 3000 is fixed on purpose. The browser keeps your save per address, so if the game
moved to port 3001 it would look like an empty save. If 3000 is busy, npm run dev stops with a
message saying so: the game is probably already running in another terminal tab. Close that one
(Ctrl+C there) or just use it.
npm run build:offline makes a codex-offline folder. Copy it anywhere (USB stick, another
laptop) and double-click Play (Windows).bat. It uses Windows' own PowerShell, so that computer
needs nothing installed. Keep the window open while you play. Copying a newer build over the old
folder keeps your save.
Your progress is saved automatically in the browser, for the address you play at:
A save has three parts, all included in an export: progress (everything, the Labyrinth too), the barcode registry (what each barcode you've scanned gives), and battle history.
codex-creatures-save-2026-10-19-0942.json lands in Downloads.Importing is safe:
Only the last save before an import is kept as the backup. For anything you care about, keep exported files (one per day is plenty). They're small.
GitHub is the meeting point. The one rule is: pull when you sit down, push when you get up.
Starting a session (in the project folder):
git status # should say "nothing to commit, working tree clean"
git pull --ff-only origin main # get what you did on the other computer
npm ci # only if package.json / package-lock.json changed
npm run dev
(Update.bat does the first three lines for you, then Start Game.bat the last.)
Finishing a session:
git status # see what changed
git add -A
git commit -m "What I changed"
git push origin main
git status # should say "up to date with 'origin/main'"
And if you want to carry on playing where you left off, export your save (section 3).
Tips
git pull says your local changes would be overwritten, commit them first, then pull again.--ff-only means a pull only ever moves forward. If it refuses ("Not possible to fast-forward"),
both computers have new commits: the histories have split. Don't force anything; ask Claude to
look (it will explain before changing anything).git push is rejected ("fetch first"), the other computer pushed first: run
git pull --ff-only origin main and push again. If that pull refuses, see the point above.git push --force, git reset --hard or similar here.git push once you're
back online. Pull on the other computer before working there.Works offline:
npm run dev, npm test, npm run build, npm run build:offline;public/ and app/fonts/);Needs the internet:
git pull / git push / git clone, and npm ci / npm install;public/sprites keeps working offline.Per-computer setup that isn't in GitHub:
%USERPROFILE%\.claude\projects\…), not in the repo. Anything both computers need is in
CLAUDE.md and docs/design.md instead, so Claude starts with it on either computer..gitignore already ignores .env* files.)app/: the screens (each folder is a page; app/settings is the save manager).components/: shared UI.lib/: the game rules (combat, Labyrinth, items, saves: lib/save.ts, lib/saveFile.ts).hooks/useGameState.ts: the game's state, loaded from and saved to the browser.public/sprites/: all the art (see public/sprites/PIXELLAB.md).app/fonts/: the fonts (open-licensed; licences next to them).offline/: the standalone copy's launchers (npm run build:offline).scripts/check-port.mjs: stops npm run dev with a clear message if port 3000 is taken.Start Game.bat / Update.bat: the double-click launchers (their logic is in scripts/).CLAUDE.md (how to work on the project) and docs/design.md (the game design, and what's
built vs planned): these are what Claude Code reads on either computer.tests/: npm test.