Ici, il ne s'agit pas de connaître tout le moteur par cœur. Il s'agit de comprendre les trois décisions que prend votre équipe et de les affiner jusqu'à gagner des matchs. Nous vous emmenons du modèle qui joue déjà à votre première victoire contre un vrai adversaire.
Nul besoin d'écrire une équipe à partir de rien. Le chemin court est celui-ci : vous partez de quelque chose qui fonctionne déjà et vous l'améliorez avec méthode, en mesurant chaque changement.
Il joue déjà de façon compétitive : il passe, tire dans les lucarnes et presse les ballons libres. C'est votre point de départ, pas une page blanche.
Modifiez seulement la tactique, ou seulement le joueur. Un seul changement à la fois est la seule façon de savoir ce qui améliore et ce qui dégrade.
Affrontez plusieurs adversaires sur de nombreuses graines et regardez le win-rate et les statistiques. Ainsi un match chanceux ne vous trompe pas.
Envoyez votre équipe sur la plateforme et mesurez-vous en ligues avec classement ELO, ou créez la vôtre. Le code parle.
Votre équipe décide à trois niveaux. L'idée clé : l'IA (si vous l'utilisez) fixe le plan à un rythme lent, et une couche déterministe et rapide l'exécute à chaque instant. Ainsi un modèle n'a jamais à décider 20 fois par seconde. Personnalisez seulement la couche qui vous intéresse ; le reste, vous le réutilisez.
Lit le score et le chrono et fixe l'état d'esprit : attaquer, équilibre ou défendre. Décide rarement, mais donne le ton. CoachBrain.decide(ctx)
Place l'équipe sur le terrain avec quatre curseurs : hauteur de ligne, largeur, pressing et côté. C'est presque toujours ici qu'on gagne ou qu'on perd. TeamStrategy.plan(ctx)
Décide à chaque instant : se déplacer, passer, tirer, sprinter. Rapide et réactif, un par joueur. PlayerBrain.decide(view)
Vous voulez le détail de ce que reçoit et renvoie chaque couche ? C'est dans le Guide du participant.
Vous ne calculez pas les positions à la main. Vous choisissez quatre valeurs et le moteur les traduit en placement de chaque joueur. Vous pouvez les fixer ou les faire varier selon le match (une tactique réactive).
À quel point votre équipe joue haut. Basse = bloc replié et sûr ; haute = vous pressez haut mais laissez de l'espace dans le dos.
À quel point l'équipe est étirée. Compact bouche l'axe ; large cherche les ailes et étire l'adversaire.
Avec quelle intensité vous allez chercher le ballon. Attention : aujourd'hui, presser beaucoup fatigue et ne récupère pas toujours (lisez le «meta» plus bas).
Par où vous orientez le jeu. Axe par défaut ; orientez-le vers un côté pour y attaquer ou chercher l'appel de votre attaquant.
Une tactique fixe est un dictionnaire de curseurs. Une tactique réactive est une fonction qui les recalcule en observant le match. Les deux, courtes.
# 1) Tactique FIXE : un style constant
from aicup import TacticalStrategy
mi_estilo = TacticalStrategy("Mi estilo", {
"line_height": 0.35, # replié, sûr
"width": 0.45, # compact dans l'axe
"pressing": 0.30, # j'attends, je ne me projette pas
})
# 2) Tactique RÉACTIVE : change selon le match
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} # je me replie
return {"line_height": 0.74, "pressing": 0.50} # à la récupération, je me projette
mi_contra = TacticalStrategy("Mi contraataque", mandos)
Le curseur que vous ne réglez pas prend sa valeur par défaut. La galerie complète (tiki-taka, catenaccio, gegenpressing…) et comment écrire le joueur et l'entraîneur sont dans les docs des tactiques.
Des conseils issus de centaines de matchs. Ce n'est pas magique : ce sont les habitudes qui séparent une équipe qui rivalise d'une équipe qui fait de la figuration.
Un match ment : la chance pèse. Utilisez le sparring sur de nombreuses graines et décidez au win-rate, pas au ressenti.
Aujourd'hui, un bloc compact et replié rend plus que le pressing haut. Commencez solide derrière et construisez à partir de là.
Sprinter et frapper fort fatigue. Gardez des sprints pour le money time et pressez l'adversaire déjà à bout de souffle.
Dans votre joueur, lisez view.plan : il vous dit où vous placer et à qui revient d'aller au ballon. N'improvisez pas dans votre coin.
Frapper au centre, c'est offrir le ballon au gardien. Visez les poteaux et ajustez la puissance : tout n'est pas dans la force maximale.
D'abord la tactique (curseurs), puis le joueur (passes, tirs, marquages) et enfin l'entraîneur (quand prendre des risques).
Presque tout le monde trébuche ici au début. Les voir venir vous épargne une demi-douzaine de défaites bêtes.
Vous espérez récupérer et vous ne faites que vous épuiser. Correctif : baissez le pressing et pressez par séquences, pas en continu.
Un GK loin de sa cage, ce sont des buts offerts. Correctif : qu'il ne s'éloigne pas ; regardez comment le joueur d'exemple le gère.
Vous montez tout le monde et on vous prend dans le dos. Correctif : montez les milieux et attaquants plus que la défense, ou baissez la ligne.
Vous battez l'un et perdez contre tous. Correctif : mesurez contre plusieurs adversaires et plusieurs graines avant de valider quoi que ce soit.
Toujours à fond = vous manquez d'endurance et tirez moins bien en fin de match. Correctif : dosez la kick_power.
Le moteur vous protège, mais un joueur qui échoue reste immobile et vous perdez des ticks. Correctif : testez en local et vérifiez la visionneuse.
Un détail honnête sur le moteur actuel : les tactiques compactes et défensives rendent mieux que le pressing haut. La raison est que, pour l'instant, presser ne «récupère» pas le ballon de façon efficace —la possession est collante et la reprendre exige de s'approcher avec beaucoup de marge—. C'est pourquoi les styles à la catenaccio marchent souvent très bien et le gegenpressing souffre.
Les tactiques d'exemple sont des points de départ, pas des solutions optimales. Le moteur évoluera (la feuille de route prévoit que le pressing finisse par récupérer le ballon), donc le meta changera aussi. Trouver la combinaison qui gagne maintenant est votre avantage compétitif.
Passez en revue cette liste rapide. Si vous cochez tout, vous pouvez déjà l'envoyer et vous mesurer aux autres.
Créez votre compte et concourez en ligne en quelques minutes, ou clonez-le et travaillez en local. En mode basique, il fonctionne sans API ni configuration.