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
Partie d'échecs contre le moteur Stockfish et puzzles tactiques Lichess, entièrement dans le navigateur.
Translation pending
GamesHTML · JavaScriptGitHub @serizawa-aiOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Une application web pour jouer aux échecs contre Stockfish et résoudre des puzzles tactiques. Tout tourne dans le navigateur : aucun serveur, aucun backend, un seul fichier index.html plus un dossier de données.
Skill Level + UCI_Elo).L'onglet Puzzles rejoue des positions tirées de la base Lichess (CC0).
localStorage — rien ne quitte le navigateur.Convention du format Lichess : le FEN est la position avant le coup de l'adversaire. L'app joue donc automatiquement le premier coup de la séquence pour amener la position, et le joueur enchaîne à partir du deuxième.
puzzles/ contient index.json (liste des thèmes et inventaire des tranches) et un fichier par tranche de rating (band-400.json … band-2600.json), soit 14 Mo au total. Une tranche n'est téléchargée que lorsqu'elle sert : une session ne coûte en général qu'un fichier d'environ 1,3 Mo, bien moins une fois gzippé par l'hébergeur.
Le dump complet de Lichess fait 6 millions de puzzles pour 1,1 Go décompressé — trop lourd à embarquer, et au-delà du quota gratuit d'une base hébergée. Le script build-puzzles.mjs en extrait un échantillon équilibré : 12 000 puzzles par tranche de 200 points d'elo, filtrés sur la popularité et le nombre de parties jouées. Pour régénérer les données :
# 1. récupérer et décompresser le dump
curl -LO https://database.lichess.org/lichess_db_puzzle.csv.zst
zstd -d lichess_db_puzzle.csv.zst
# 2. ajuster SRC et OUT en tête du script, puis
node build-puzzles.mjs
Le tirage est déterministe : même CSV en entrée, mêmes puzzles en sortie.
git init
git add .
git commit -m "Échiquier"
git branch -M main
git remote add origin [email protected]:<ton-user>/<ton-repo>.git
git push -u origin main
Puis dans le repo : Settings → Pages → Source: Deploy from a branch → main / / (root).
Le site est en ligne sur https://<ton-user>.github.io/<ton-repo>/ après une minute ou deux.
L'app cherche Stockfish dans cet ordre :
engine/stockfish-18-lite-single.js (même origine) ← le plus fiableengine/stockfish.jsLe chargement depuis un CDN passe par un Worker blob + importScripts, ce qui marche la plupart du temps mais dépend de la façon dont Emscripten résout le chemin du .wasm. Héberger les fichiers toi-même supprime le problème :
mkdir -p engine && cd engine
BASE=https://github.com/nmrugg/stockfish.js/releases/download/v18.0.0
curl -LO $BASE/stockfish-18-lite-single.js
curl -LO $BASE/stockfish-18-lite-single.wasm
Les deux fichiers doivent rester côte à côte dans engine/ (le .js va chercher le .wasm à côté de lui). La version lite single-threaded fait environ 7 Mo — sous la limite de 100 Mo par fichier de GitHub, et elle n'exige aucun en-tête HTTP particulier.
La version complète est plus forte, mais elle a besoin de SharedArrayBuffer, donc des en-têtes Cross-Origin-Opener-Policy: same-origin et Cross-Origin-Embedder-Policy: require-corp. GitHub Pages ne permet pas d'ajouter des en-têtes. Deux options si tu y tiens :
coi-serviceworker (un service worker qui simule l'isolation cross-origin) ;_headers.Pour jouer, la version lite est déjà largement au-dessus du niveau humain.
Ouvrir index.html avec file:// ne fonctionne pas : les Web Workers exigent une vraie origine. Sers le dossier :
python3 -m http.server 8000
# puis http://localhost:8000
Le code de l'application est à toi. Stockfish est sous GPLv3 : si tu redistribues les fichiers du moteur, garde la mention de licence et publie les sources. Voir nmrugg/stockfish.js.