Skip to content

Releases: Dev1Nox/FootballSim

FootballSim v.2025-26.02.05

Choose a tag to compare

@Dev1Nox Dev1Nox released this 03 Jul 17:03
af76097

v2025-26.02.05

🗂️ Datos de ligas refactorizados: de un JSON monolítico a un fichero por liga

Antes, todos los equipos vivían en un único teams_data.json. Ahora cada liga tiene su propio archivo en assets/:

  • LaLiga.json
  • Premier League.json
  • Serie A.json
  • Bundesliga.json
  • Ligue 1.json
  • Brasileirão Série A.json
  • Primeira Liga.json
  • Eredivisie.json
  • MLS.json
  • Saudi Pro League.json

(mundial.json se mantiene aparte, como hasta ahora, para el modo Mundial).

⚙️ Seeder dinámico

DatabaseSeeder ya no busca un nombre de archivo fijo: ahora recorre todos los .json de assets/ (excepto mundial.json) y los siembra uno a uno, con manejo de errores por archivo individual y log del total de equipos sembrados.

Beneficio de cara al futuro: añadir una liga nueva será tan simple como soltar un .json con el mismo formato en assets/ — sin tocar código.

🔼 Room DB v11 → v12

Se sube la versión de la base de datos (con fallbackToDestructiveMigration) para forzar el re-sembrado en las instalaciones existentes y que reciban las ligas y equipos nuevos automáticamente al actualizar.

🧹 Limpieza

Eliminada la carpeta data/models (estaba vacía y sin uso).


Versión completa: 2025-26.02.05

FootballSim v2025-26.02.04

Choose a tag to compare

@Dev1Nox Dev1Nox released this 01 Jul 10:35
af76097

Changelog

v2025-26.02.04

✨ Nuevo

  • Comprobador de actualizaciones (Feature 12)

    • Nuevos archivos: ui/components/UpdateAvailableDialog.kt, util/UpdateChecker.kt.
    • Al arrancar la app, MainActivity.kt consulta si hay una versión más reciente publicada en GitHub Releases.
    • Si existe, muestra un diálogo con opción de descargar (abre la URL del APK/release) o descartar.
    • NotificationPreferences.kt: nueva clave SKIPPED_UPDATE_VERSION para no volver a mostrar el aviso de una versión ya descartada por el usuario.
  • Modo Mundial

    • simulation/CompetitionSystem.kt: nuevo CompetitionType.MUNDIAL con sus propios multiplicadores (más táctico, más tensión, sin rotación de plantilla, sede neutral).
    • ui/screens/TournamentScreens.kt y ui/viewmodels/TournamentViewModel.kt: nueva pantalla/diálogo para crear un Mundial (12 grupos A–L, 48 selecciones, fase de grupos fija → octavos → cuartos → semis → final).
    • Nuevo archivo de datos Mundial.json con las selecciones y grupos.
    • ui/screens/ScreensV2.kt: el selector de competición ahora usa availableCompetitions (dinámico) en vez de mostrar siempre CompetitionSystem.ALL_COMPETITIONS.

🔁 Cambios

  • Banquillo ampliado a 12 jugadores (simulation/LineupGenerator.kt)

    • Antes: se cogían los 7 suplentes con mejor puntuación, sin control de posición.
    • Ahora: composición fija — 1 portero, 2 centrales, 2 laterales, 3 centrocampistas, 2 extremos, 2 delanteros — rellenando con los mejores restantes si falta gente en alguna posición.
  • Muerte súbita más variada en penaltis (simulation/PenaltyEngine.kt)

    • Los 5 primeros lanzadores siguen siendo siempre los 5 mejores rematadores.
    • A partir del 6º lanzador, el orden se baraja con rng en cada tanda, para que la muerte súbita no recaiga siempre en los mismos 2-3 jugadores.
  • Ajustes de UI relacionados

    • ui/screens/ManagerModeScreen.kt y ui/viewmodels/ManagerModeViewModel.kt: adaptados al nuevo sistema de banquillo/decisiones.
    • ui/screens/PenaltyShootoutScreen.kt: adaptación visual a los cambios del motor de penaltis.
    • data/database/DatabaseSeeder.kt: reorganización interna del seeding (sin cambios de comportamiento).

🏷️ Versión

  • Número de versión mostrado actualizado a 2025-26.02.04 en:
    • ui/screens/ScreensV2.kt (pantalla "Acerca de")
    • ui/screens/SettingsScreen.kt (tarjeta de información)

📁 Archivos modificados (resumen)

MainActivity.kt
data/database/DatabaseSeeder.kt
simulation/CompetitionSystem.kt
simulation/LineupGenerator.kt
simulation/PenaltyEngine.kt
ui/screens/ManagerModeScreen.kt
ui/screens/PenaltyShootoutScreen.kt
ui/screens/ScreensV2.kt
ui/screens/SettingsScreen.kt
ui/screens/TournamentScreens.kt
ui/viewmodels/FootballViewModel.kt
ui/viewmodels/ManagerModeViewModel.kt
ui/viewmodels/TournamentViewModel.kt
util/NotificationPreferences.kt

📁 Archivos nuevos

ui/components/UpdateAvailableDialog.kt
util/UpdateChecker.kt
Mundial.json

FootballSim v.2025-26.02.03

Choose a tag to compare

@Dev1Nox Dev1Nox released this 31 May 16:24
af76097

⚽ Football Simulator — Dev1Nox

Simulador de partidos de fútbol con motor probabilístico · v2025-26.02.03


📱 Descripción

App Android que simula partidos entre equipos reales usando estadísticas de rendimiento, distribución de Poisson y simulación Monte Carlo. Cada simulación produce un resultado diferente con goleadores, eventos detallados y estadísticas realistas.


📥 Instalación

  1. Descarga el APK desde la sección Releases
  2. En tu Android, ve a Ajustes → Seguridad → Instalar apps desconocidas y actívalo para tu navegador/gestor de archivos
  3. Abre el APK descargado e instala
  4. Android 8.0+ requerido

🆕 Novedades — v2025-26.02.03


🏆 Modo Torneo

Organiza tu propio torneo con 4, 8 o 16 equipos y nombre personalizable. Incluye fase de grupos con tabla de clasificación en tiempo real y eliminatorias completas hasta la gran final. Los torneos se guardan y se pueden retomar en cualquier momento.


🥅 Tanda de Penaltis

Desempate automático por penaltis al final de un partido igualado. Se simulan 5 rondas completas y, si persiste el empate, muerte súbita hasta que haya ganador.


🎯 Modo Penaltis Puro

Modo dedicado exclusivamente a tandas de penaltis, accesible desde el menú principal. Tres formatos disponibles: 5 rondas, 3 rondas y muerte súbita pura.


🧑 Modo Carrera

Elige un equipo real y disputa una temporada completa en liga. El sistema genera el calendario de jornadas, calcula la clasificación y lleva el registro de goleadores. Incluye gestión de plantilla entre jornadas y pantalla especial de campeón al ganar la liga.


🤖 Análisis IA Post-Partido

Al terminar cada partido aparece una tarjeta con el análisis generado por IA del encuentro: evaluación del resultado, rendimiento por equipo y momentos clave. Se expande automáticamente al recibir la respuesta.


📊 Comparador de Equipos

Duelo estadístico entre dos equipos: ratings de ataque, defensa y forma en barras comparativas, historial de enfrentamientos anteriores y resumen del equipo con más victorias.


🎬 Replay de Gol

Pulsa sobre cualquier gol del marcador para ver la jugada reconstruida en 4 pasos: recuperación, progresión, remate y celebración. Más de 40 variantes distintas para que ningún gol se cuente igual. Funciona sin conexión.


🔥 Sistema de Rivalidades — El Clásico

La app detecta automáticamente si los dos equipos son rivales históricos y muestra un banner especial con el nombre del derbi. Más de 25 rivalidades incluidas:

Liga Derbis
España El Clásico, Derbi Madrileño, Derbi Sevillano, Derbi Vasco
Inglaterra Derbi de Mánchester, Norte de Londres, Merseyside
Italia Derby della Madonnina, Derby della Mole, Derby della Capitale
Alemania Der Klassiker, Revierderby
Francia Le Classique
Portugal O Clássico
Argentina El Superclásico
Holanda De Klassieker

👤 Créditos

Desarrollado por Dev1Nox

"El fútbol es impredecible. Este simulador también lo es."

# ⚽ Football Simulator — Dev1Nox ### Simulador de partidos de fútbol con motor probabilístico · v2025-26.02.03

📱 Descripción

App Android que simula partidos entre equipos reales usando estadísticas de rendimiento, distribución de Poisson y simulación Monte Carlo. Cada simulación produce un resultado diferente con goleadores, eventos detallados y estadísticas realistas.


📥 Instalación

  1. Descarga el APK desde la sección [Releases]
  2. En tu Android, ve a Ajustes → Seguridad → Instalar apps desconocidas y actívalo para tu navegador/gestor de archivos
  3. Abre el APK descargado e instala
  4. Android 8.0+ requerido

🆕 Novedades — v2025-26.02.03


🏆 Modo Torneo

Organiza tu propio torneo con 4, 8 o 16 equipos y nombre personalizable. Incluye fase de grupos con tabla de clasificación en tiempo real y eliminatorias completas hasta la gran final. Los torneos se guardan y se pueden retomar en cualquier momento.


🥅 Tanda de Penaltis

Desempate automático por penaltis al final de un partido igualado. Se simulan 5 rondas completas y, si persiste el empate, muerte súbita hasta que haya ganador.


🎯 Modo Penaltis Puro

Modo dedicado exclusivamente a tandas de penaltis, accesible desde el menú principal. Tres formatos disponibles: 5 rondas, 3 rondas y muerte súbita pura.


🧑 Modo Carrera

Elige un equipo real y disputa una temporada completa en liga. El sistema genera el calendario de jornadas, calcula la clasificación y lleva el registro de goleadores. Incluye gestión de plantilla entre jornadas y pantalla especial de campeón al ganar la liga.


🤖 Análisis IA Post-Partido

Al terminar cada partido aparece una tarjeta con el análisis generado por IA del encuentro: evaluación del resultado, rendimiento por equipo y momentos clave. Se expande automáticamente al recibir la respuesta.


📊 Comparador de Equipos

Duelo estadístico entre dos equipos: ratings de ataque, defensa y forma en barras comparativas, historial de enfrentamientos anteriores y resumen del equipo con más victorias.


🎬 Replay de Gol

Pulsa sobre cualquier gol del marcador para ver la jugada reconstruida en 4 pasos: recuperación, progresión, remate y celebración. Más de 40 variantes distintas para que ningún gol se cuente igual. Funciona sin conexión.


🔥 Sistema de Rivalidades — El Clásico

La app detecta automáticamente si los dos equipos son rivales históricos y muestra un banner especial con el nombre del derbi. Más de 25 rivalidades incluidas:

Liga Derbis
España El Clásico, Derbi Madrileño, Derbi Sevillano, Derbi Vasco
Inglaterra Derbi de Mánchester, Norte de Londres, Merseyside
Italia Derby della Madonnina, Derby della Mole, Derby della Capitale
Alemania Der Klassiker, Revierderby
Francia Le Classique
Portugal O Clássico
Argentina El Superclásico
Holanda De Klassieker

🎥 Intro Animada del Partido

Antes de cada simulación se muestra una pantalla de presentación con los escudos de ambos equipos acercándose al centro, efecto de choque y aparición del "VS". Duración total: ~2,5 segundos.


🔊 Efectos de Sonido

Sonidos reales en cada momento clave del partido: pitido de inicio, rugido del estadio al marcar, tarjeta amarilla y triple pitido final. Se activan y desactivan desde Ajustes.


🔔 Notificaciones Diarias

Recordatorio diario configurable para que no te olvides de simular el partido del día. Elige la hora desde Ajustes.


📡 Actualización de Ratings en Vivo

Actualiza los ratings de los equipos con datos reales desde internet. Compatible con 10 ligas: Premier League, La Liga, Serie A, Bundesliga, Ligue 1, Champions League, Primeira Liga, Eredivisie, Brasileirão y Championship.


🧑‍💼 Modo Manager — Partido a Partido

Elige táctica, observa el partido por intervalos y reacciona a los eventos en tiempo real. Al terminar recibes el análisis completo del encuentro.


🌦️ Clima Real

La app obtiene el tiempo actual de tu ubicación y lo aplica a la simulación. La lluvia, la nieve o el viento fuerte reducen los goles esperados y aumentan los errores, igual que en la vida real.


📈 Estadísticas Históricas

Consulta el registro completo de todas tus simulaciones: victorias/empates/derrotas, media de goles, equipo más usado, máximo goleador, racha actual y mejor racha, y gráfico de los últimos 10 resultados.


📤 Importar / Exportar Plantillas

Exporta cualquier equipo personalizado a un archivo JSON para compartirlo o hacer backup, e importa plantillas de otros usuarios directamente desde tu almacenamiento.


⚙️ Pantalla de Ajustes

Panel centralizado para configurar sonido, notificaciones, hora del recordatorio diario, modo oscuro/claro y actualización de ratings.


✅ Requisitos

  • Android 8.0 (API 26) o superior
  • ~50 MB de espacio libre
  • Conexión a internet solo para clima y actualización de ratings (opcional)

📋 Permisos

Permiso Para qué se usa
Internet Clima en tiempo real y actualización de ratings
Notificaciones Recordatorio diario del partido (Android 13+)

👤 Créditos

Desarrollado por Dev1Nox

"El fútbol es impredecible. Este simulador también lo es."

FootballSim v.2025-26.02.02

Choose a tag to compare

@Dev1Nox Dev1Nox released this 24 May 19:44
af76097

Changelog — FootballSim

Temporada 2025-26 · Todas las versiones notables están documentadas aquí.


[v2025-26.02.02] — 2026-05-24

FootballSim_v_2025-26_02_02

Hito principal: Sistema completo de Equipos Personalizados — el usuario puede crear, editar, configurar alineación y eliminar sus propios equipos directamente desde la app.


✨ Nuevas funcionalidades

Pantalla CreateCustomTeamScreen (803 líneas — nueva desde cero)

  • Formulario completo para crear y editar equipos personalizados.
  • Selección de foto personalizada desde la galería del dispositivo (via ActivityResultContracts.GetContent).
  • Selector de formación táctica con preview visual interactivo del campo.
  • Buscador de jugadores con filtro en tiempo real: busca en todos los equipos de la base de datos para fichar jugadores a tu equipo custom.
  • Pantalla de asignación de alineación con drag interactivo: arrastra jugadores a sus posiciones sobre el campo.
  • Soporte para modo creación (editingTeam = null) y modo edición (editingTeam = <Team>), reutilizando el mismo composable.

Tarjeta CustomTeamCardWithSwipe en la lista de equipos

  • Los equipos personalizados se muestran con un diseño diferenciado: badge "MI EQUIPO", foto personalizada o emoji 🏟️ por defecto.
  • Swipe izquierda → Editar (fondo azul con icono Edit).
  • Swipe derecha → Eliminar (fondo rojo con icono Delete + diálogo de confirmación).
  • Los equipos normales (de datos reales) siguen usando TeamCard sin cambios.

🗄️ Base de datos (Room) — migración v5 → v6

Entidad Team — 2 nuevas columnas

Campo Tipo Default Descripción
isCustomTeam Boolean false Marca el equipo como creado por el usuario
customPhotoUri String "" URI local de la foto seleccionada desde galería
  • Nuevos callbacks en ScreensV2: onCreateCustomTeam y onEditCustomTeam(team).
  • Botón AddCircle en la barra de equipos para acceder a la creación.

🔧 Internos

  • Import de Team añadido en MainActivity.
  • Versión mostrada en UI actualizada: v2025-26.02.01 → v2025-26.02.02.

[v2025-26.02.01] — 2026-05-23

FootballSim_v2025-26_03_01

Versión base de esta rama. Incluye el simulador de partidos, sistema de competición, alineaciones personalizadas, gestión de disponibilidad de jugadores y UI principal con Jetpack Compose.

Incluido en esta versión

  • Motor de simulación (SimulationEngine) con lógica de partido evento a evento.
  • Sistema de competición (CompetitionSystem): liga y torneos.
  • Generador de alineaciones (LineupGenerator) y manager de disponibilidad (PlayerAvailabilityManager).
  • Pantalla de alineación personalizada (CustomLineupScreen).
  • UI principal con navegación Compose (Screens, ScreensV2, Components, ComponentsV2).
  • Base de datos Room v5 con entidades: Team, Player, Match, Competition, PlayerStatusRecord.
  • Importación de datos desde JSON (TeamImporter) y actualización desde API (ApiDataUpdater).
  • Soporte de logos de equipos (LogoManager).

FootballSim v2025-26.02.01

Choose a tag to compare

@Dev1Nox Dev1Nox released this 24 May 14:27
af76097

v2025-26.02.01

✨ Nuevo

  • Editor de alineaciones personalizadas (CustomLineupScreen): antes de simular puedes asignar manualmente cada jugador a su posición en el campo, cambiar la formación y elegir suplentes, tanto para el equipo local como el visitante.
  • Botón "Personalizar" en la pantalla principal (junto a "Simular") para acceder al nuevo editor.
  • Ver resultado desde el historial: toca cualquier partido del historial para volver a ver su pantalla de resultado completa.

⚡ Mejoras

  • Importación parcial de plantillas: el JSON de importación ahora permite enviar solo los campos que quieras actualizar; los datos existentes en la BD se preservan si el campo no viene en el JSON. Soporta la estructura plana (sin clave "team" anidada).
  • Nuevos campos en el JSON: matchesPlayed, starter, injured, summoned, summonedProb para jugadores; logoUrl para equipos.
  • Forzar recarga desde assets: nuevo botón en toolbar para limpiar la BD y reimportar todos los datos originales.
  • Reset de plantillas: botón para deseleccionar ambos equipos rápidamente.
  • Migrado collectAsState() → collectAsStateWithLifecycle() en toda la UI (mejor rendimiento en background).
  • Nombres de posición en español más completos y consistentes; soporte para RWB, LWB, DM, AM.
  • Compose BOM actualizado a 2024.09.00.

🗄️ Base de datos

  • Versión bumpeada a 5 (migración necesaria).

FootballSim v2025-26.02.00

Choose a tag to compare

@Dev1Nox Dev1Nox released this 23 May 20:53
af76097

⚽ FootballSim v2025-26.02.00

Novedades de esta versión

Esta actualización incorpora un sistema de generación de alineaciones completamente renovado que tiene en cuenta la disponibilidad real de cada jugador antes de cada partido:

  • Sistema de lesiones — los jugadores lesionados quedan excluidos automáticamente de la convocatoria y la alineación.
  • Titular habitual — los jugadores marcados como titulares tienen prioridad máxima al construir el once inicial; los suplentes solo entran si es necesario.
  • Probabilidad de convocatoria (summonedProb) — los jugadores sin convocatoria garantizada pasan por un sorteo ponderado según su forma y rol, añadiendo incertidumbre realista a cada simulación.
  • PlayerAvailabilityManager — nuevo módulo que resuelve la cadena completa de disponibilidad (lesionado → convocado → probabilidad de convocatoria) antes de generar la alineación.
  • LineupGenerator v2 — generador de onces consciente de la formación (4-3-3, 4-4-2, 3-5-2, 4-2-3-1, 5-3-2) que coloca a cada jugador en su posición correcta sobre el campo.
  • Datos de plantillas actualizados a la temporada 2025/26 en los 25 clubes y las 5 grandes ligas europeas.

Tecnologías

Kotlin · Jetpack Compose · Room 2.6 · MVVM · Coroutines · Material 3

Requisitos

  • Android 8.0+ (API 26)
  • ~30 MB de almacenamiento

"El fútbol es impredecible. Este simulador también lo es."