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。 以下為已儲存的摘錄。
Escuadra — a football squad memorisation trainer for iOS and Android. Expo SDK 57 + expo-router, TypeScript strict,
Zustand, Reanimated. Light and dark themes, following the device setting by default, with a toggle on Home.
Runs in Expo Go for local development — no Xcode, no Apple Developer account, no native build.檢視完整 README ↗Escuadra — a football squad memorisation trainer for iOS and Android. Expo SDK 58 + expo-router, TypeScript strict, Zustand, Reanimated. Light and dark themes, following the device setting by default, with a theme setting in Settings.
Runs in Expo Go for local development — no Xcode, no Apple Developer account, no native build.
Escuadra is on the App Store and Google Play. What each version shipped is in CHANGELOG.md; how a change reaches users, as an over-the-air update or a store build, is docs/release.md. The marketing site and the privacy and support pages are published from the gh-pages branch.
Prerequisites, once per machine and phone:
.nvmrc pins 24; CI runs 24). nvm use picks it up
automatically on either OS.npx expo login -b, then confirm with npx expo whoami.Then:
git clone <repo-url>
cd escuadra
npm install # also wires up the husky git hooks (prepare script)
npx expo start
Scan the QR with the iPhone Camera app; it offers to open in Expo Go.
| Windows | macOS | |
|---|---|---|
| Watchman | Not used — skip it | Metro's file watcher; install with brew install watchman. Without it, large projects can hit EMFILE: too many open files |
| First-run network prompt | Windows Firewall asks to allow Node.js on private networks — allow it, or the phone never connects | macOS asks to allow incoming connections for node/Terminal — allow it, or add it under System Settings → Privacy & Security → Firewall |
| Everything else | Same commands, same scripts, same Expo Go flow |
npm run check
npx expo start
Scan the QR with the iPhone Camera app; it offers to open in Expo Go. Edit, save, see it on the phone.
Useful keys in the Metro terminal: r reload · m dev menu · j DevTools ·
Ctrl+C stop. npx expo start -c clears the bundler cache.
| Script | Does |
|---|---|
npm run check | typecheck, lint, format check, tests, squadctl's registry check and the generated-file diffs: everything CI runs, and the pre-push gate |
npm test | Vitest, once |
npm run typecheck | tsc --noEmit |
npm run lint | expo lint |
npm run format | Prettier, write mode |
npm run format:check | Prettier, verify only |
A husky pre-push hook runs npm run check, so nothing reaches the remote with
broken types, lint errors or unformatted code. git push --no-verify bypasses it
in an emergency. Hooks install themselves through the prepare script on
npm install.
app/ expo-router routes (files = routes)
components/ shared UI; ui/ holds primitives
data/ static squad JSON
lib/ logic: pure modules are unit-tested; the few that wrap a native API keep their decisions in a pure sibling
i18n/ the catalogs and translations
scripts/ generators, CI logic and evals
tools/ squadctl
stores/ Zustand: progress (persisted), session (ephemeral)
theme/ design tokens + font map
types/ shared domain types
lib/questionEngine.ts stays pure, so the question engine is unit-testable without a renderer.
package.json pins SDK 58, and an SDK upgrade changes the native runtime, which invalidates every over-the-air update path and forces a new build and submission. An SDK upgrade is a release decision.useFonts in app/_layout.tsx. Expo Go cannot
use the expo-font config plugin — that needs a prebuild.@expo-google-fonts/inter/700Bold),
never the package root. The root barrel pulls in every weight and italic.| Symptom | Fix |
|---|---|
| QR scans but never connects (Windows) | Allow Node.js on private networks in Windows Firewall (port 8081) |
| QR scans but never connects (macOS) | Allow incoming connections for node when macOS's firewall prompt appears |
| Connects once then dies | Settings → Privacy & Security → Local Network → Expo Go → on |
| Server runs but phone never lists it | Sign in to the same Expo account on both: npx expo whoami and Expo Go |
| Phone and laptop can't see each other | Same Wi-Fi, no client isolation; else npx expo start --tunnel |
EMFILE: too many open files (macOS) | Install Watchman: brew install watchman |
| Animations do nothing | npx expo start -c |
| Stale code after adding a package | npx expo start -c |