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,即可验证所有权并自行管理介绍。
一分钟完成验证MapleChess ¿Contra quién juegas?
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Saber contra quién te toca en la próxima ronda, ver qué aperturas juega y dónde se separan de las tuyas, si suele apurarse de tiempo, repasar sus partidas con un motor y descargarlas en PGN. Sin registro y sin anuncios.
| Busca | Unos 98.000 jugadores españoles de la lista FIDE, unos 8.500 torneos de info64 desde 2014 y sus partidas. |
| Mira quién te toca | Los emparejamientos de la próxima ronda, en cuanto info64 los publica, con un enlace para preparar a cada rival. |
| Prepara al rival | Un dossier por color: su primera jugada, sus líneas principales, qué ha cambiado este año, cómo puntúa según el rival, sus apuros de tiempo y dónde te separas tú. |
| Analiza | Visor con piezas propias, variantes, comentarios y relojes, en el que puedes probar tus propias jugadas y compartirlas con un enlace, y Stockfish 19 en el propio navegador. |
| Descarga | PGN completos, con ELO, FIDE ID, ECO y apertura, de una partida, un torneo, un jugador o una búsqueda. |
info64 publica los emparejamientos antes de cada ronda. La web los lee varias veces al día y enlaza cada partida con la preparación del rival:
El dossier es una página por color, para leer en el móvil o imprimir:
El repertorio es el árbol de aperturas del jugador con cada color. En cada posición se ve qué jugadas ha hecho él o sus rivales, cuántas veces, con qué resultado y cuándo fue la última. Junta las transposiciones, filtra por periodo (2 o 5 años), ritmo y ELO del rival, y se recorre pulsando en la tabla, moviendo las piezas en el tablero, escribiendo la jugada o pulsando una línea de Stockfish, con el motor en la posición y la descarga en PGN de las partidas que pasan por ella.
De quien puede ser menor de edad (cumple 18 años o menos este año, según la lista FIDE) no hay dossier ni repertorio, y su ficha no sale en los buscadores. La política de privacidad lo explica.
Las páginas se generan en el servidor y las búsquedas son formularios normales: todo funciona sin JavaScript menos el tablero y el motor.
En el móvil se puede instalar como una app (en Chrome, «Instalar aplicación»; en Safari, «Añadir a pantalla de inicio»): se abre sin la barra del navegador y, si has dicho quién eres, directamente en tu próxima partida.
Al importar, el ritmo (estándar, rápidas o blitz) se clasifica con la regla de la FIDE a partir del texto que publica cada torneo. También se quitan las partidas que la fuente publica repetidas, se descartan los ELO imposibles y se guarda el reloj de cada jugada cuando el PGN lo trae.
flowchart LR
subgraph fuentes["Fuentes"]
info64["info64.org<br/>(FEDA)"]
fide["Lista FIDE"]
lichess["Retransmisiones<br/>de lichess"]
fca["Archivo de la<br/>Federación Cántabra"]
end
subgraph cloudflare["Un Worker de Cloudflare"]
cron(["Cron Triggers"])
admin(["/api/admin/sync"])
workflows["Workflows<br/>INFO64_SYNC · LICHESS_SYNC<br/>FIDE_SYNC · GAMES_REPROCESS<br/>FCA_IMPORT"]
d1[("D1<br/>SQLite + FTS5")]
astro["Astro SSR<br/>páginas y PGN"]
end
navegador["Navegador<br/>chessground +<br/>Stockfish en un Web Worker"]
info64 --> workflows
fide --> workflows
lichess --> workflows
fca --> workflows
cron --> workflows
admin --> workflows
workflows --> d1
d1 --> astro
astro --> navegador
| Fuente | Qué aporta | Cuándo se actualiza |
|---|---|---|
| info64.org (FEDA) | Torneos desde 2014, participantes con FIDE ID, plantillas de equipos, clasificaciones, partidas y emparejamientos de la próxima ronda | Cada noche a las 00:00 UTC (rondas de los últimos 60 días y emparejamientos de los próximos 8). info64 sólo admite robots de 00:00 a 06:00, hora de Madrid |
| Lista FIDE | Jugadores de la federación española: título, ELO estándar, rápido y blitz, sexo, año de nacimiento (no se muestra el de los menores ni el de quien pide ocultarlo) y si está activo. También el ELO estándar de la lista anterior, para ver quién sube | El día 3 de cada mes |
| Retransmisiones de lichess (CC BY-SA 4.0) | Partidas de los torneos que info64 enlaza a una retransmisión y no publica en PGN, y de las retransmisiones oficiales con jugadores españoles, en España y en el extranjero | Con info64 y cada día a las 06:30 UTC |
| Archivo de la Federación Cántabra (CC BY 4.0) | Partidas de la Liga Regional y de los campeonatos regionales de Cantabria de 2007 a 2010, de 2012 y de 2021, sin las categorías hasta Sub 14. No traen FIDE ID: cada jugador se cruza por el nombre con la lista FIDE, sólo si casa con uno solo y su año de nacimiento le deja haber jugado | A mano ({"workflow":"fca"}): el archivo no cambia |
| INE e IGN (CC BY 4.0) | Municipios y núcleos de población, para saber en qué provincia se juega cada torneo | A mano, cada año, cuando el INE publica la relación (node scripts/lugares.mjs --descargar <año> y el reprocesado {"lugares":true}) |
| lichess-org/chess-openings | Códigos ECO y nombres de las aperturas (CC0) |
La ingesta es educada con las fuentes: como mucho una petición por segundo a info64 y, a lichess, una cada vez, con pausa entre una y otra y con un token de sólo lectura, como pide su API. Siempre con un User-Agent que la identifica.
No se guardan los torneos de hasta Sub 14 ni los escolares, que dirían la edad o el colegio de quien juega, ni los que revelan un dato de salud: los de ajedrecistas ciegos o sordos, con discapacidad física o de ajedrez inclusivo. La política de privacidad lo explica.
chess-results no se usa: sus términos prohíben copiar y republicar sus datos.
Hace falta Node 24 y pnpm 11.
git clone https://github.com/jorgeabf/maplechess.git
cd maplechess
pnpm install
pnpm install copia el motor Stockfish a public/engine/<versión>/, con la versión del paquete stockfish. Esa carpeta se sirve con caché inmutable (public/_headers), así que una versión nueva del motor es otra URL.
cp .dev.vars.example .dev.vars
En .dev.vars, pon un ADMIN_TOKEN cualquiera. LICHESS_TOKEN puede quedar vacío; para leer muchas retransmisiones de lichess, pon un token tuyo con sólo study:read.
pnpm db:migrate:local
pnpm dev
La web queda en http://localhost:4321, con D1 y Workflows locales. La base de datos local empieza vacía; para cargar un torneo de info64:
curl -X POST localhost:4321/api/admin/sync -H "Authorization: Bearer $TOKEN" \
-d '{"workflow":"info64","params":{"from":"","to":"","keys":["ce-individual-absoluto-2025"]}}'
La lista FIDE (descarga unos 45 MB):
curl -X POST localhost:4321/api/admin/sync -H "Authorization: Bearer $TOKEN" \
-d '{"workflow":"fide","params":{"force":true}}'
Una retransmisión de lichess, por el id de su torneo:
curl -X POST localhost:4321/api/admin/sync -H "Authorization: Bearer $TOKEN" \
-d '{"workflow":"lichess","params":{"tours":["zK5CoVvF"]}}'
GET /api/admin/sync?workflow=info64&id=<instancia> devuelve el estado de una sincronización.
| Comando | Qué hace |
|---|---|
pnpm dev | Servidor de desarrollo |
pnpm test | Tests (vitest dentro de workerd) |
pnpm check | Tipos de Wrangler y comprobación de tipos (astro check y el código de navegador) |
pnpm lint | eslint |
pnpm build | Comprobación y build de producción |
pnpm run deploy | Despliegue en Cloudflare desde origin/main: motor, marcador de D1, build, despliegue y prueba de humo |
pnpm db:migrate:local / pnpm db:migrate:remote | Aplica las migraciones a la D1 local o a la de producción |
pnpm openings | Regenera la tabla de aperturas a partir de data/openings/ |
pnpm check y pnpm dev comparten la caché de Vite: para el servidor antes de comprobar.
migrations/ Esquema de D1
data/openings/ Aperturas de lichess (TSV, CC0)
docs/capturas/ Capturas de este README, en claro y en oscuro
scripts/ Copia del motor, aperturas, iconos y tarjeta para compartir, rondas de lichess, piezas del tablero y fuentes de los titulares y de las figuras
src/worker.ts Entrypoint: web, crons y Workflows
src/ingest/ Ingesta: info64, lista FIDE, lichess, el archivo de Cantabria y escritura en D1
src/lib/chess/ PGN, nombres, ECO, árbol de jugadas, UCI, ritmo, reloj, repertorio y dossier
src/lib/db/ Consultas de la web
src/pages/ Páginas y descargas .pgn
src/components/ Componentes de Astro (visor, repertorio, dossier, gráficos, tablas)
src/client/ Código de navegador: visor, motor y explorador del repertorio
src/styles/ Tokens y estilos globales (en @layer base)
test/ Tests y fixtures sintéticos con la estructura de las fuentes
CLAUDE.md tiene las notas de trabajo detalladas: decisiones de diseño, trampas conocidas y cómo lanzar las sincronizaciones en producción.
Necesita una cuenta de Cloudflare con Workers Paid: la importación de la lista FIDE pasa de los 30 s de CPU por defecto.
pnpm exec wrangler login.pnpm exec wrangler d1 create ajedrez --jurisdiction eu) y pon su id en database_id, en wrangler.jsonc.pnpm db:migrate:remote.pnpm exec wrangler secret put ADMIN_TOKEN, y el de lichess (una cuenta con un token de sólo study:read), pnpm exec wrangler secret put LICHESS_TOKEN.routes de wrangler.jsonc, site de astro.config.mjs, la URL de workers.dev de src/middleware.ts, la línea Sitemap: de public/robots.txt y las URL de scripts/humo.mjs y .github/workflows/vigilancia.yml.pnpm run deploy./api/admin/sync: la lista FIDE, info64 y las retransmisiones de lichess. Los parámetros, en CLAUDE.md.test/fixtures/) no llevan datos de personas reales: tienen la estructura de las fuentes, con nombres y FIDE ID inventados.GPL-3.0 o posterior, la misma que chessground, chessops y Stockfish.
src/assets/pieces/maple/, generadas por scripts/piezas.mjs): propias, con la licencia del proyecto.A mano (pnpm openings) |