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
Overlay para Age of Empires II: Definitive Edition que lee la pantalla, sigue tu build order paso a paso y te dice dónde poner cada aldeano. Con una biblioteca para compartir build orders.
Translation pending
GamesC# · TypeScriptGitHub @KyriokesOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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 ↗Overlay liviano para Age of Empires II: Definitive Edition que lee la pantalla con OCR, sigue una build order, se adapta cuando el jugador se desvía y sugiere cómo redistribuir aldeanos.
Solo lee la pantalla: no lee memoria del proceso, no inyecta código y no envía inputs al juego.
El diseño completo y las fases están en PLAN.md.
Cada versión publicada está en Releases: un .zip con BoCoach.exe (trae .NET adentro, no hay que instalar nada) y la carpeta data. Cada corrida del CI también deja la versión portable como artefacto (14 días). Cada versión nueva que llega a main (la <Version> de BoCoach.App.csproj sin su etiqueta) se publica sola: el workflow release.yml arma el .zip, la release y la etiqueta v<versión>, y el botón "Descargar para Windows" de la web baja esa. También se puede publicar subiendo una etiqueta v0.9.0 a mano.
global.json)dotnet build BoCoach.slnx
dotnet test BoCoach.slnx
dotnet run --project src/BoCoach.App
La biblioteca se guarda en %APPDATA%\BoCoach\build_orders. Trae una BO por civ importada de buildorderguide.com y su versión mejorada con el simulador del coach (misma estrategia, otro reparto u orden de pasos), además de los ejemplos; las que agrega una versión nueva se suman solas, y el filtro "Civ" ayuda a encontrarlas. "Importar…" también lee las guías de esa página. Cada BO puede decir para qué mapa es (lista "Mapa", data/maps.json): el validador avisa si usa pesca o el muelle donde no hay agua. Atajos: Ctrl+1 a Ctrl+4 agregan aldeanos, construcción, investigación o movimiento; Ctrl+D duplica el paso; Alt+↑/↓ lo mueve; Ctrl+Supr lo quita; Ctrl+S guarda. Los pasos también se reordenan arrastrando el ícono ⋮⋮.
Si te sirve, podés invitarme un café desde la web (sección "Apoyar el proyecto": Cafecito, PayPal, Ko-fi o Mercado Pago) o con el botón "Apoyar ☕" de la app. Cada aporte se anota en data/donaciones.json, a la vista, y la web muestra cuánto falta para cada meta.
En la web también se puede armar una BO (/subir): una paleta de pasos que se arrastran a una línea de tiempo, con el stock de recursos arriba y cada paso en su lugar simulado por el mismo motor de la app (en WebAssembly). Una caja no se puede mover a donde el juego no la deja (una unidad antes del clic de su edad, el clic sin sus dos edificios, lo que se entrena antes de su edificio) y, dentro de lo posible, se pega al momento en que hay recursos; un cartel dice por qué. Lo armado se publica en la biblioteca o se baja como .json para la app. Los íconos de la paleta son del juego (© Microsoft, usados bajo sus Game Content Usage Rules) y no son parte de la licencia MIT: ver web/public/icons/LEEME.md.
Para verificar la interfaz sin abrirla: BoCoach.exe --screenshot salida.png [--bo nombre | --open archivo.json] [--select número] la dibuja en un PNG con una biblioteca temporal.
La primera vez se abre Primeros pasos (se vuelve a abrir con el botón de la barra): idioma del juego, instalar el mod, una partida rápida contra 7 IA (mientras tanto la app mira la pantalla: en la pantalla de carga lee la lista de jugadores y, ya en la partida, se calibra sola con el HUD) y elegir tu nombre de esa lista.
En la barra de arriba de la app:
%APPDATA%\BoCoach\regions.json, relativo a la ventana del juego, así anda en cualquier monitor y en modo ventana.%LOCALAPPDATA%\BoCoach\recordings\<fecha>: session.json, frames.csv y un PNG por región y captura. Sirve para probar el OCR sin volver a jugar.%LOCALAPPDATA%\BoCoach\informes: cada paso contra el plan de la BO, los clics de edad, el centro urbano parado, los inactivos, las trabas por población y los recursos acumulados.
BO sugerida: en la pantalla de carga, con tu civ, el mapa y los rivales, el overlay (que sin reloj baja a la esquina de abajo a la derecha) sugiere la BO de tu biblioteca que mejor encaja (el rival de enfrente pesa más que los demás, y cuenta si sos flanco o bolsillo) y da un consejo contra el rival de enfrente; Ctrl+Alt+B la usa. Las aperturas típicas de cada civ, qué le gana a qué y los consejos están en data/civ_styles.json.
Señales de la partida: el coach avisa cuando el rival hace clic en una edad (lo ve en el panel de puntajes: su puntaje cae la décima parte de lo que cuesta), cuando te atacan y cuando perdés aldeanos. Si la BO trae una para esa señal (se arma en el editor con "Pasos de"), sus pasos van primero en el overlay; Ctrl+Alt+→ la cierra.
Si dejás la BO (más de 5 unidades militares que la BO no tiene mientras la de la BO no sale hace un minuto, o 3 minutos sin avanzar ningún paso), el overlay dice "BO abandonada" y por qué, deja de pedir los pasos y se queda con lo básico: centro urbano produciendo, casas, inactivos y la guía de aldeanos contra lo que tenés.| Atajo | Qué hace |
|---|---|
| Ctrl+Alt+S | Empieza o detiene el coach |
| Ctrl+Alt+→ | Da por hecho el paso actual |
| Ctrl+Alt+← | Deshace lo último (un paso hecho, salteado o un clic mal detectado); con la BO abandonada, la retoma |
| Ctrl+Alt+↓ | Saltea el paso actual |
| Ctrl+Alt+P | Pausa o sigue la lectura |
| Ctrl+Alt+H | Oculta o muestra el overlay |
| Ctrl+Alt+D | Muestra CPU, RAM y milisegundos por captura |
| Ctrl+Alt+M | Prende o apaga los recordatorios junto al mouse (casa, centro urbano parado, inactivos) |
| Ctrl+Alt+B | Usa la BO sugerida en la pantalla de carga |
| Ctrl+Alt+X | Captura de diagnóstico: a los 2 s guarda la pantalla sin pérdida y un .txt con lo que encontró la app en %LOCALAPPDATA%\BoCoach\diagnostico (para mandar si algo no se lee bien) |
Para probarlo sin el juego, sobre una grabación: BoCoach.exe --replay "<carpeta de la grabación>" --bo scouts [--speed 4] [--stats uso.csv]. Para ver cómo queda el overlay en un momento de una partida: BoCoach.exe --overlay-screenshot salida.png --readings lecturas.csv --bo scouts --at 8:20.
La web (web/, ver web/README.md) es una biblioteca pública de BO: cada una muestra la línea de tiempo calculada por el mismo motor que la app (compilado a WebAssembly). Desde la app:
bocoach:// para que el botón «Abrir en BO Coach» de la web abra la app directo.BoCoach.exe --publish <carpeta> [--dry-run] publica todas las BO de una carpeta con esa misma cuenta (así se subieron las de build_orders/civs), o las reemplaza si ya se publicaron desde esta PC. Con --dry-run solo dice qué haría. La app no tiene consola: para ver lo que escribe, redirigila (| Write-Output en PowerShell).En la web, una BO dice quién armó la guía (el author del JSON) y, si es otro, la cuenta que la subió: "por Hera, subida por Ana".
Los números del HUD se leen por plantillas (data/fonts), sacadas de una grabación real; el log de eventos, con el OCR de Windows. Todo se puede correr sobre una grabación, sin el juego:
dotnet run --project tools/ReplaySession -c Release -- replay "%LOCALAPPDATA%\BoCoach\recordings\<carpeta>"
Escribe lecturas.csv (reloj, recursos, aldeanos, edad y eventos por captura) y avisa si alguna caja corta los números. Otros comandos (ver el comienzo de tools/ReplaySession/Program.cs): coach corre el loop completo (visión, motor y economía) con una BO y muestra lo que diría el overlay cada vez que cambia (también desde un lecturas.csv, sin OCR); bench mide cuánto tarda cada parte de la lectura; glyphs agrupa los caracteres de una región para etiquetarlos, font arma una letra con esas etiquetas, read lee una región y ocr pasa el OCR de Windows; autocalibrate <pantalla.png> --read calibra sobre una captura entera (por ejemplo la de diagnóstico) y muestra lo que lee; loading <pantalla.png> --nombre "tu nombre" lee la pantalla de carga (jugadores, equipos y civs). Con el juego en castellano, --idioma es o --idioma mx.
data/game_data/v<versión>.json sale del .dat del juego con un script de Python que no se usa durante la partida. El mismo script arma las frases del log de eventos con los textos del juego: data/events.json (inglés), data/events.es.json (castellano de España) y data/events.mx.json (de Latinoamérica), con los mismos ids.
py -3.12 -m venv tools/extractor/.venv
tools/extractor/.venv/Scripts/python -m pip install -r tools/extractor/requirements.txt
tools/extractor/.venv/Scripts/python tools/extractor/extract.py
Por defecto lee H:\Steam\steamapps\common\AoE2DE\resources\_common\dat\empires2_x2_p1.dat; se cambia con --dat. Para agregar entidades, sumalas a ENTIDADES en extract.py por su id del .dat.
| Proyecto | Target | Qué tiene |
|---|---|---|
src/BoCoach.Core | net10.0 | Lógica pura: datos del juego, build orders, motor y economía. Sin dependencias de Windows. |
src/BoCoach.Vision | net10.0-windows10.0.19041.0 | Captura de pantalla, OCR y suavizado. |
src/BoCoach.App | net10.0-windows10.0.19041.0 | App WPF: overlay, calibración, editor de BO, hotkeys y conexión con la web. |
src/BoCoach.Wasm | net10.0 (browser-wasm) | El Core en WebAssembly para la web. |
web | Next.js | Biblioteca web (Supabase + Vercel). |
tests/BoCoach.Core.Tests | net10.0 | Tests de Core, incluido uno que verifica que no dependa de Windows. |
tests/BoCoach.Vision.Tests | net10.0-windows10.0.19041.0 | Tests de Vision. |
tests/BoCoach.App.Tests | net10.0-windows10.0.19041.0 | Tests de los ViewModels del editor, el overlay y la sesión de coach. |