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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Free browser games designed for e-ink screens — pure black & white, zero animation, zero flicker. Sudoku, 2048, Minesweeper and more, playable in the browser of your Kindle, BOOX or Kobo — no download, no jailbreak.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Free browser games designed for e-ink screens — pure black & white, zero animation, zero flicker. Play right in the browser of your Kindle, BOOX or Kobo: no download, no install, no jailbreak. Part of the E-Ink.me family of e-reader tools. E-ink browsers are slow, memory-constrained, and refresh the whole screen on every paint. Everything here is tuned for that reality: • Zero runtime requests from game code — games run entirely in the page and keep working offline once loaded. • No animation, no hover, no gradients — 1-bit friendly UI [README 설치·사용 부분 발췌] Getting started檢視完整 README ↗
Free browser games designed for e-ink screens — pure black & white, zero animation, zero flicker. Play right in the browser of your Kindle, BOOX or Kobo: no download, no install, no jailbreak.
Live site: https://games.e-ink.me · 简体中文
Part of the E-Ink.me family of e-reader tools.
| Game | Category | Highlights |
|---|---|---|
| Sudoku | Puzzle | 4 difficulties, pencil marks, seeded puzzles, undo, timer |
| 2048 | Puzzle | Keyboard & touch, undo, best-score tracking |
| Minesweeper | Puzzle | Flags, chording, timer |
| Nonogram | Logic | Seeded picross puzzles, undo, timer |
| Memory Pairs | Puzzle | Three board sizes, timer |
| Tic-Tac-Toe | Board | Unbeatable minimax AI on hard mode |
| Hangman | Word | On-screen keypad, three word difficulties |
| Hidden Code | Logic | Mastermind-style code breaking, undo |
| Word Daily | Daily | One Wordle-style puzzle per day, same for everyone |
| Word Search | Word | Three grid sizes, timer |
E-ink browsers are slow, memory-constrained, and refresh the whole screen on every paint. Everything here is tuned for that reality:
localStorage to cookies to in-memory, so progress survives on quirky e-ink browsers.Game code is deliberately decoupled from the site framework. Next.js only renders the static shell (landing pages, SEO, i18n); each game is a vanilla-JS bundle that mounts itself into the page outside the React hydration path.
flowchart LR
subgraph per-game [src/games/<slug>/]
meta[meta.json]
code[logic.ts + render.ts + index.ts]
end
content[content/games/<slug>/*.json<br/>landing-page copy] --> nextx
meta --> build["scripts/build-games.mjs"]
code --> build
build -- "esbuild: IIFE, ES2015,<br/>gzip ≤ 15 KB" --> bundles[/public/games/*.js/]
build -- "@generated" --> registry[games.registry.ts]
registry --> nextx["Next.js 15 static export"]
nextx --> out[/out/: HTML + sitemap + OG images + JSON-LD/]
Per-game contract — every game is exactly four files:
logic.ts — pure game logic. No DOM, no React, no third-party deps; fully unit-testable.render.ts — DOM rendering with minimal patching. May only import ./logic and _engine/*.index.ts — bundle entry: feature detection, mount, global registration.meta.json — machine-readable metadata (category, difficulties, features, SEO hints).Everything is registry-driven. The build script globs src/games/*/meta.json, validates it, compiles each game, and regenerates src/lib/games.registry.ts. Game pages, category listings, sitemap, hreflang alternates, OG images and JSON-LD all appear automatically from the registry — no hand-maintained lists anywhere.
Shared engine (src/games/_engine/): seeded RNG (reproducible & daily puzzles), turn-based state machine with undo, three-tier storage, tiny event emitter, i18n word injection.
Guardrails are enforced at build time rather than hoped for: a bundle that imports React fails the build, an over-budget gzip size fails the build, an invalid meta.json fails the build.
src/
├── app/[locale]/ # Pages: home, about, games/[slug] (per-locale static export)
├── components/ # Shell components: GameFrame, GameShell, LanguageMenu, SEO
├── content/games/<slug>/ # Landing-page copy (en.json is source of truth, others fall back)
├── games/
│ ├── _engine/ # Shared runtime: storage, seeded RNG, events, undo state machine
│ ├── _template/ # Copy-me template for new games
│ └── <slug>/ # One directory per game: logic / render / index / meta.json
├── lib/ # i18n (16 locales), SEO helpers, generated games registry
scripts/ # build-games, gen-og, gen-sitemap
public/games/ # Compiled game bundles (build output, committed)
docs/ # Design docs (in Chinese)
Requires Node.js ≥ 20 (python3 on PATH for the static preview server).
npm install
npm run dev # builds game bundles, then starts Next.js dev server
Other commands:
| Command | Purpose |
|---|---|
npm test | Vitest unit tests (game logic, i18n dictionaries, content contracts) |
npm run typecheck | tsc --noEmit over the whole repo |
npm run build | Full production build: games → registry → OG images → static export → sitemap |
npm run preview | Serve the exported out/ directory locally |
Adding a game touches no routes and no registries — copy the template and fill in four files:
cp -r src/games/_template src/games/<slug> (directory name = slug, [a-z0-9-]+)meta.json, then implement logic.ts, render.ts, index.tssrc/content/games/<slug>/en.json (other languages optional, they fall back to en)npm run build:games — the bundle, registry entry, page, sitemap entry, hreflang set and OG image are generated automaticallySee src/content/README.md for the content schema and docs/开发规约-游戏扩展框架.md for the full framework contract (in Chinese).
16 locales out of the box — English, 简体中文, Deutsch, Español, Français, Italiano, Português, 日本語, 한국어, Русский, Nederlands, Polski, Türkçe, Svenska, العربية (RTL), 繁體中文. Site chrome, per-game UI vocabulary and landing-page content each have their own dictionaries with field-level fallback to English; hreflang/canonical/sitemap follow the locale list automatically.
npm run build produces a fully static site in out/ — host it anywhere. Production runs on Cloudflare Pages. There is no server, no database, no runtime dependency; analytics (optional GA4, self-hosted cookieless Umami by default) is the only external script the pages reference.
Bug reports and new-game PRs are welcome. A PR adding a game should follow the four-file contract above and include unit tests for logic.ts. Note that the design docs under docs/ are written in Chinese; code comments follow suit — don't let that stop you, English is fine in issues and PRs.