Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗No account, no subscription, nothing uploaded.
Requires Node 26 (built-in node:sqlite).
npm install
npm run dev
Open http://localhost:5180. The API runs on port 8787 and Vite proxies to it.
The first start imports the bundled opening data (about 10 seconds) and then loads 45,000 master games in the background (about a minute) for model games.
npm run build
npm start
Then open http://localhost:8787.
| Command | What it does |
|---|---|
npm run dev | API and Vite dev server |
npm run build | Builds the app into app/dist |
npm start | Serves the built app and the API on port 8787 |
npm test | API tests on a throwaway database |
npm run test:e2e | Browser test of the learning loop (needs npm run build and Google Chrome) |
npm run db:reset | Deletes the local database; it is recreated on the next start |
npm run data:lichess, data:masters, data:puzzles | Rebuild the bundled datasets from their sources |
| Data | Source |
|---|---|
| Moves and results at your level | Lichess open database, September 2026: 3.2 million rated blitz, rapid and classical games, split by rating (CC0) |
| Masters column | 434,258 games by 250 strong players from the PGN Mentor archives |
| Model games | 45,000 complete games between strong players |
| Puzzles | 39,030 Lichess puzzles from opening positions, tagged by opening (CC0) |
| Opening names | Lichess chess-openings (CC0) |
| Evaluations | Stockfish 19, running locally |
| Move explanations | Written for this app |
The datasets are compressed in server/data/ (about 16 MB) and imported into server/data/chessbook.db on first
start. The scripts in server/tools/ rebuild them; downloads are cached in ~/.cache/chessbook-data/.
server/
index.js Express app, data import on start-up
core/
db.js SQLite schema
data-import.js imports the bundled datasets
explorer.js move statistics (masters, players by rating band), opening names
repertoire.js the move graph: add, remove, paths
coverage.js completion, gaps, autofill
practice.js sessions, reviews, daily progress, streaks
srs.js FSRS scheduler
model-games.js matching master games to your repertoire
puzzles.js puzzle selection and rating
training.js the bot
api.js HTTP routes
engine.js Stockfish worker
tools/ dataset build scripts
app/src/
board/ the board and the shared board "stage"
shell/AppShell.tsx layout: one persistent board + sidebar
pages/ screens
tests/ API tests and the browser test
The board is rendered once by the app shell and pages tell it what to show (useBoard), so navigating never
redraws it: pieces slide to the new position.
See STATUS.md for what changed from the previous version, how it was verified and the known limits.
Opening statistics and puzzles from the Lichess open database (CC0). Opening
names from lichess-org/chess-openings (CC0). Master games from
PGN Mentor. Stockfish (GPLv3). Piece sets:
see pieces/README.md. Chessbook's name and design belong to Chessbook; this is a personal study project and is
not affiliated with them.