Aquí no se trata de saberte todo el motor de memoria. Se trata de entender las tres decisiones que toma tu equipo y afinarlas hasta que ganen partidos. Te llevamos de la plantilla que ya juega a tu primera victoria contra un rival de verdad.
No hace falta escribir un equipo desde la nada. El camino corto es este: partes de algo que ya funciona y lo vas mejorando con método, midiendo cada cambio.
Ya juega de forma competitiva: pasa, dispara a las esquinas y presiona balones sueltos. Es tu punto de partida, no un folio en blanco.
Toca solo la táctica, o solo el jugador. Un único cambio cada vez es la única forma de saber qué mejora y qué empeora.
Enfréntalo a varios rivales en muchas semillas y mira win-rate y estadísticas. Así no te engaña un partido con suerte.
Sube tu equipo a la plataforma y mídete en ligas con ranking ELO, o monta la tuya. El código habla.
Tu equipo decide en tres niveles. La idea clave: la IA (si la usas) fija el plan a ritmo lento, y una capa determinista y rápida lo ejecuta cada instante. Así un modelo nunca tiene que decidir 20 veces por segundo. Personaliza solo la capa que te interese; el resto lo reutilizas.
Lee el marcador y el reloj y fija la mentalidad: atacar, equilibrio o defender. Decide pocas veces, pero marca el tono. CoachBrain.decide(ctx)
Coloca al equipo en el campo con cuatro mandos: altura de línea, amplitud, presión y banda. Casi siempre es aquí donde se gana o se pierde. TeamStrategy.plan(ctx)
Decide cada instante: moverse, pasar, tirar, esprintar. Rápido y reactivo, uno por jugador. PlayerBrain.decide(view)
¿Quieres el detalle de qué recibe y qué devuelve cada capa? Está en la Guía del participante.
No calculas posiciones a mano. Eliges cuatro valores y el motor los traduce a dónde se coloca cada jugador. Puedes fijarlos o hacer que cambien según el partido (una táctica reactiva).
Cómo de adelantado juega tu equipo. Baja = bloque replegado y seguro; alta = presionas arriba pero dejas espacio a la espalda.
Cómo de abierto está el equipo. Compacto tapa el centro; abierto busca las bandas y estira al rival.
Con cuánta intensidad vas a por el balón. Ojo: hoy presionar mucho cansa y no siempre roba (lee el «meta» más abajo).
Por dónde cargas el juego. Centro por defecto; cárgalo a una banda para atacar por ahí o para buscar el desmarque de tu delantero.
Una táctica fija es un diccionario de mandos. Una reactiva es una función que los recalcula mirando el partido. Las dos, cortas.
# 1) Táctica FIJA: un estilo constante
from aicup import TacticalStrategy
mi_estilo = TacticalStrategy("Mi estilo", {
"line_height": 0.35, # replegado, seguro
"width": 0.45, # compacto por el centro
"pressing": 0.30, # espero, no me lanzo
})
# 2) Táctica REACTIVA: cambia según el partido
from aicup.tactics import progress, possession
def mandos(ctx):
defendiendo = possession(ctx) == "theirs" or progress(ctx) < 0.45
if defendiendo:
return {"line_height": 0.30, "pressing": 0.35} # me repliego
return {"line_height": 0.74, "pressing": 0.50} # al robar, me lanzo
mi_contra = TacticalStrategy("Mi contraataque", mandos)
El mando que no pongas usa su valor por defecto. La galería completa (tiki-taka, catenaccio, gegenpressing…) y cómo escribir el jugador y el entrenador están en las docs de tácticas.
Consejos que salen de jugar cientos de partidos. No son magia: son hábitos que separan a un equipo que compite de uno que hace bulto.
Un partido miente: la suerte pesa. Usa sparring con muchas semillas y decide por win-rate, no por sensaciones.
Hoy un bloque compacto y replegado rinde más que la presión alta. Empieza sólido atrás y crece desde ahí.
Esprintar y chutar fuerte cansa. Guarda sprints para el tramo final y presiona al rival que ya está fundido.
En tu jugador, lee view.plan: te dice dónde colocarte y a quién le toca ir al balón. No improvises solo.
Chutar al centro es regalar el balón al portero. Apunta a los palos y ajusta la potencia: no todo es máxima fuerza.
Primero la táctica (mandos), luego el jugador (pases, tiros, marcajes) y por último el entrenador (cuándo arriesgar).
Casi todo el mundo tropieza aquí al empezar. Verlos venir te ahorra media docena de derrotas tontas.
Esperas robar y solo consigues cansarte. Arreglo: baja el pressing y presiona por momentos, no todo el rato.
Un GK lejos de su portería son goles regalados. Arreglo: que no se aleje; mira cómo lo trata el jugador de ejemplo.
Subes a todos y te cazan a la espalda. Arreglo: sube medios y delanteros más que la defensa, o baja la línea.
Ganas a uno y pierdes con todos. Arreglo: mide contra varios rivales y varias semillas antes de dar algo por bueno.
Fuerza siempre = te quedas sin estamina y disparas peor al final. Arreglo: dosifica la kick_power.
El motor te protege, pero un jugador que falla se queda quieto y pierdes ticks. Arreglo: prueba en local y revisa el visor.
Un detalle honesto del motor de hoy: las tácticas compactas y defensivas rinden mejor que la presión alta. El motivo es que, por ahora, presionar no «roba» el balón de forma efectiva —la posesión es pegajosa y quitarla exige acercarse con mucho margen—. Por eso estilos tipo catenaccio suelen ir muy bien y el gegenpressing sufre.
Las tácticas de ejemplo son puntos de partida, no soluciones óptimas. El motor evolucionará (el roadmap contempla que la presión llegue a robar balón), así que el meta también cambiará. Encontrar la combinación que gana ahora es tu ventaja competitiva.
Repasa esta lista rápida. Si marcas todo, ya puedes subirlo y medirte con el resto.
Crea tu cuenta y compite online en minutos, o clónalo y trabaja en local. En modo básico funciona sin API ni configuración.