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
역대 MLB 전설을 영입하고 시대 시너지를 만들며 주사위 굴리는 중독성 턴제 야구 로그라이크, 브라우저에서 무료 플레이
Draft historic MLB legends, create unstoppable era synergies, and roll the dice in this addictive turn-based baseball roguelike. Play free in your browser!
게임JavaScript · CSSGitHub @luissalasb17-dotcom온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Roguelike de béisbol por turnos, jugado con un dado d100. Draftea una alineación de 9 leyendas históricas (o reales de una temporada específica), armá sinergias de era, y derrotá rotaciones rivales de 3 pitchers en series de 3 entradas para llegar a campeón. Sitio estático — sin build step, sin framework. Todo es HTML/CSS/JS plano servido directamente. No hace falta instalar nada de Node — es un sitio 100% estático. Cualquier servidor HTTP simple sirve:README 전문 보기 ↗
Roguelike de béisbol por turnos, jugado con un dado d100. Draftea una alineación de 9 leyendas históricas (o reales de una temporada específica), armá sinergias de era, y derrotá rotaciones rivales de 3 pitchers en series de 3 entradas para llegar a campeón.
Sitio estático — sin build step, sin framework. Todo es HTML/CSS/JS plano servido directamente.
No hace falta instalar nada de Node — es un sitio 100% estático. Cualquier servidor HTTP simple sirve:
python -m http.server 8000
y abrir http://localhost:8000/index.html. Abrir index.html directamente como file:// también funciona para la mayoría de las pantallas, pero rompe el default de idioma (ver nota en src/i18n.js sobre por qué el init es síncrono) y puede tener problemas de CORS con algunos assets — preferir siempre un server.
Cache: los <script>/<link> en index.html usan ?v=N como cache-busting manual. Si editás ui.js, game.js, simulation.js, style.css o src/i18n.js y no ves el cambio reflejado, subí el número de versión de ese archivo en index.html.
| Archivo | Qué hace |
|---|---|
index.html | Todas las pantallas (mode-select, draft, mapa, combate, modales) viven acá, se muestran/ocultan con .hidden |
game.js | Estado del run (GameState/window.Game): roster, mapa, sinergias, draft, historial |
simulation.js | Motor de combate (InteractiveBattle): probabilidades del dado (calcBoundaries), resolución de cada tirada, lógica de sinergias de era en combate |
ui.js | Todo el renderizado DOM y los event listeners — el archivo más grande, agrupa por pantalla |
players.js | Pool de bateadores legendarios (fallback), definición de Eras y sus sinergias (EraTraits) |
pitchers_pool.js, game_cards_pool.js | Pools generados por los scripts ETL — NO editar a mano |
opponents_database.js | Rosters de Story Mode por año (1901-2025) — generado, NO editar a mano |
src/i18n.js | Sistema de traducción ES/EN (window.t()), default en, persistido en localStorage |
audio.js | Sonidos sintetizados con Web Audio API, sin archivos de audio externos |
basedex.js | El "BaseballDex" — pool de cartas coleccionables/desbloqueables |
Requieren pip install pandas numpy y los CSVs de lahman_1871-2025/ (Lahman Database + war_daily_bat.txt/war_daily_pitch.txt de Baseball-Reference).
lahman_etl_v5.py → game_cards.csv / game_cards_pool.js — pool de bateadores para el draft (Quick Play y Story Mode comparten este pool para bateadores). Selecciona el pico de 7 mejores temporadas por WAR de cada jugador.pitchers_etl.py → pitchers_pool.csv / pitchers_pool.js — pool de pitchers rivales para Quick Play. Mismo criterio de pico de 7 años, con un boost 1.6x al WAR de temporadas de relevo dominante al rankear qué años entran en el pico (ver RELIEF_WAR_BOOST), para que un pitcher como Eckersley no pierda sus mejores años como cerrador frente a años mediocres como abridor.story_pitchers_etl.py → opponents_database.js — rosters de Story Mode, un pitcher-temporada individual por año (no picos de carrera). Reutiliza las mismas fórmulas que pitchers_etl.py (suavizado bayesiano, curva de OVR, umbrales de rareza) pero aplicadas a una sola temporada. Escribe primero a opponents_database.preview.js — copiar a mano sobre opponents_database.js después de revisar el resultado.export_career_db.py → career_data.js — stats de carrera completa (no pico) para mostrar en el resumen de fin de run / BaseballDex.Ejecutar cualquiera con python <script>.py desde la raíz del proyecto.
Vercel, conectado al repo de GitHub (origin) — deploy automático al pushear a main. No hay vercel.json ni build step; Vercel sirve los archivos estáticos tal cual.