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
Play a browser-based recreation of the WWII wargame Third Reich against the computer
Translation pending
AI summary · website and README
GamesTypeScript · PythonGitHub @Fr3nchyzOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
A playable recreation of the classic WWII grand-strategy wargame Third Reich, built to run in any modern web browser. It is meant to be easy for anyone to pick up: open a link, no install, no CD-ROM. The main mode is one player against the computer, choosing either side.
Status: early. The real combat results, attrition, terrain, cost and modifier tables from the original game are encoded and tested. The full map is digitised and shown in the browser. Units on the map and most procedures are not built yet. See docs/ROADMAP.md.
Requires Node 20+.Read the full README ↗A playable recreation of the classic WWII grand-strategy wargame Third Reich, built to run in any modern web browser. It is meant to be easy for anyone to pick up: open a link, no install, no CD-ROM. The main mode is one player against the computer, choosing either side.
Status: early. The real combat results, attrition, terrain, cost and modifier tables from the original game are encoded and tested. The full map is digitised and shown in the browser. Units on the map and most procedures are not built yet. See docs/ROADMAP.md.
npm install
npm run dev # play locally at http://localhost:5173
npm test # unit tests
npm run build # static build in dist/ — works from any folder or web host
Checks that CI also runs:
npm run lint # ESLint (flat config); src/ files stay at or under 300 lines of code
npm run typecheck # app, engine (no DOM, no Node) and e2e configs
npm run coverage # unit tests plus the coverage floor for src/engine
npm run e2e # builds a test bundle (dist-e2e, with the test-only game loader), then Playwright browser tests against `vite preview` (mouse and touch)
npm run selfplay -- --scenario 1939 --turns end --seed 1 # headless computer-against-computer game with reports (docs/SELFPLAY.md)
npm run e2e needs a Chromium: run npx playwright install chromium once, or set PW_CHROMIUM_PATH to an installed one.
Requires Node ^20.19 || ^22.13 || >=24 (set in engines; CI uses Node 22).
docs/SOURCES.md; keep the files outside the repo). Cite the section in code comments, e.g. // Ref 12.4.TODO(verify) and list it in docs/RULES.md under Open questions.tsconfig.engine.json and tests/engine-purity.test.ts. Files under src/ stay at or under 300 lines of code, enforced by ESLint max-lines. The UI and the computer opponent change the game only through legalActions and applyAction.npm run lint && npm run typecheck && npm test && npm run build before pushing; CI also enforces the engine coverage floor and the browser smoke test (npm run e2e). Commit as [email protected].Unofficial fan project, not affiliated with or endorsed by Avalon Hill or Hasbro. Third Reich and Avalon Hill are trademarks of their respective owners. This is a private, non-commercial tribute to the 1996 PC game.
src/data/map.json) was measured from the original printed reference map: terrain, borders, city names and positions. It is the one part derived from the original publisher's artwork, so it is the first thing to replace if this project ever goes public.This is a note about intent, not legal advice.