Programmez le cerveau de votre équipe —joueur, tactique et entraîneur— et affrontez les autres dans un simulateur déterministe, sur votre machine ou sur la plateforme en ligne. Vous écrivez la logique ; si vous le souhaitez, l'IA la pilote.
git clone github.com/GoNNoTDa/PyLeagueChoisissez votre voie : concourez en ligne sans rien installer, ou clonez le SDK et travaillez en local. Les deux utilisent le même moteur déterministe.
Créez votre compte, enregistrez vos équipes et jouez matchs et ligues depuis le navigateur. Le moyen le plus rapide de commencer aujourd'hui.
Créer un compte gratuitClonez le projet (juste Python 3.13, sans dépendances), copiez le modèle et concourez sur votre machine.
Vous ne déplacez pas les joueurs : vous programmez comment ils décident. Le moteur arbitre de la même façon pour tous et il est déterministe — même seed, même match. L'IA décide à un rythme lent ; une couche déterministe s'exécute à chaque tick, ainsi un modèle n'a pas à réfléchir 20 fois par seconde.
Lit le score et le temps et fixe l'état d'esprit : attaquer, équilibre ou défendre.
Place l'équipe : hauteur de ligne, largeur, pressing et côté d'attaque.
Décide à chaque tick : se déplacer, passer ou tirer. Rapide et réactif.
Un prototype fonctionnel, sans esbroufe : ça tourne aujourd'hui.
Physique vectorielle et règles claires. Le même seed reproduit le match exact : des compétitions justes et débogables.
Entraîneur et tactique pilotés par un LLM — il joue déjà de vrais matchs sur Gemini. Changez de fournisseur (Gemini, Claude, OpenAI, Amazon Bedrock, Ollama…) avec une variable d'environnement.
Chaque joueur gère son effort : sprinter et frapper fort fatigue ; à court d'énergie, il court et frappe moins bien. Une couche de plus à programmer dans ta tactique.
Fait s'affronter toutes les équipes, produit un classement avec points et ELO, et un rapport HTML prêt à partager.
Possession, tirs et tirs cadrés, passes et précision, récupérations et distance. Vous savez quoi améliorer, pas seulement le score.
Mesurez votre équipe contre plusieurs adversaires sur de nombreuses graines et obtenez un taux de victoire et des moyennes. Vous comparez les changements avec des données, pas des intuitions.
Le code tiers s'exécute dans un sous-processus avec des limites de temps et sans réseau ni disque : sûr pour affronter les équipes d'autrui.
Tiki-taka, catenaccio, contre-attaque, gegenpressing… des modèles prêts à ajuster.
Chaque match se rejoue comme une retransmission : terrain à ~60 fps, tableau d'affichage façon TV, statistiques et commentaires de l'IA.
Le moteur n'utilise que la bibliothèque standard. Les SDK d'IA sont optionnels. Vous copiez le modèle et démarrez en quelques minutes.
Vous réglez quatre curseurs —ligne, largeur, pressing et focus— en valeurs fixes ou selon le match. Le moteur les traduit en positions.
from aicup.tactics import TacticalStrategy, progress, possession
def contraataque():
# Sans ballon on se replie ; à la récupération, on se projette.
def mandos(ctx):
defendiendo = possession(ctx) == "theirs" or progress(ctx) < 0.45
if defendiendo:
return {"line_height": 0.30, "pressing": 0.35}
return {"line_height": 0.74, "pressing": 0.50}
return TacticalStrategy("Contraataque", mandos)
En plus du SDK local, il y a une plateforme web : vous créez votre compte, enregistrez vos équipes et jouez des matchs et des ligues depuis le navigateur, sans rien installer. Chaque match s'exécute isolé sur le serveur et enregistre son replay.
Chaque équipe accumule de l'ELO et un historique avec les matchs entre équipes inscrites. Grimpez dans le classement public.
Des compétitions où chacun inscrit son équipe. Vous rejoignez d'un clic et l'organisateur la joue.
Votre page avec vos équipes, votre meilleur ELO, votre bilan et vos replays. Votre parcours, en évidence.
Pour chaque match officiel, nous conservons le code exact de chaque équipe (avec son SHA-256), la graine et la version du moteur. Le moteur étant déterministe, n'importe qui peut reproduire le match et vérifier le résultat — sans faire confiance à personne. En ligue, chaque rencontre est auditée une à une.
Générez un lien public pour n'importe quel match afin de le voir ou l'auditer sans compte. Téléchargez le code et le replay et vérifiez par vous-même.
Créez des ligues à partir de modèles prêts : divisions par métal (du fer au diamant), par pays ou par continent, ou sur mesure. Vous choisissez le format —minutes, limite de buts, mort subite— et chaque match en hérite.
Vous organisez ? Générez un lien d'inscription pour que chacun inscrive son équipe —même si la ligue n'est pas ouverte— et invitez directement des utilisateurs de la plateforme par leur nom.
Enregistrez plusieurs versions de votre équipe, étiquetez-les et choisissez laquelle joue chaque ligue sans changer votre tactique par défaut. Celle de l'adversaire reste masquée sauf s'il décide de la montrer. Chaque équipe a son historique et ses statistiques.
PyLeague est un SDK : tu copies un modèle qui joue déjà bien, tu le fais tien et tu l’améliores en itérant. Tout en local, déterministe et sans dépendances. Première fois ? Passe par l’Académie pour apprendre à programmer ton équipe pas à pas, ou consulte le guide complet dans le dépôt.
Vous n'avez besoin que de Python 3.13 ou plus. Le moteur n'a aucune dépendance externe.
Votre équipe est un dossier à trois couches : entraîneur, tactique et joueur. Commencez par les points marqués et changez une chose à la fois.
Jouez et regardez dans la visionneuse avec statistiques. Utilisez le sparring pour mesurer votre équipe contre plusieurs adversaires d'un coup, et créez des ligues avec classement et ELO.
Programmer cesse d'être un exercice en solo et devient un tournoi. Idéal pour :
GDG, meetups et associations : un défi qui accroche et alimente plusieurs sessions.
Un format compétitif au résultat clair : c'est le meilleur code qui gagne, pas le meilleur pitch.
Universités et bootcamps : enseignez la logique, l'IA et les structures en jouant à gagner des matchs.
Team building technique et marque employeur avec une ligue interne à vos couleurs.
Le SDK est et restera open source. Si vous voulez monter une compétition pour votre événement, nous vous la préparons clé en main.
Des idées sur la feuille de route. Elles ne sont pas encore là — nous les mentionnons car elles indiquent où va la ligue, pas pour vous vendre ce qui n'existe pas.
Format à élimination avec tableau, en plus des ligues toutes rondes.
Des consignes par poste que le joueur exécute, en plus de l'entraîneur et de la tactique.
Touches et corners, hors-jeu et fautes.
Décrivez votre plan en langage naturel et il est traduit en code.
Un arbitre-IA qui revoit les actions litigieuses.
Conteneur/VM par match pour ouvrir l'exécution publique à grande échelle.
Une compétition de football virtuel où l'on ne joue pas avec les jambes mais avec du code : vous programmez en Python le cerveau de chaque joueur, la tactique de l'équipe et les décisions de l'entraîneur, et vous vous affrontez dans un simulateur déterministe.
Non. Vous copiez le modèle inclus —qui joue déjà de façon compétitive— et vous améliorez une couche à la fois. Avec des bases en Python, vous pouvez démarrer en quelques minutes.
Oui. PyLeague est open source et vous pouvez l'utiliser, le modifier et concourir sans frais. Nous proposons seulement des services optionnels pour organiser des tournois sur mesure.
Non. Le moteur et les équipes d'exemple fonctionnent sans aucune API. L'IA est optionnelle : si vous voulez que l'entraîneur ou la tactique réfléchissent avec un modèle de langage, vous connectez votre fournisseur préféré (Claude, OpenAI, Gemini, Groq, Mistral, DeepSeek ou Ollama en local).
Oui. PyLeague s'intègre aux hackathons, communautés de développeurs, formations et événements. Contactez-nous et nous montons une compétition sur mesure.
Sur Windows, macOS et Linux. Le moteur ne nécessite que Python 3.13 ou plus et n'a aucune dépendance externe.
Oui. Sur la plateforme en ligne, vous créez un compte, enregistrez vos équipes et jouez des matchs et des ligues depuis le navigateur. Chaque match s'exécute isolé sur le serveur et enregistre son replay, avec classement global ELO, profil public et arènes ouvertes où chacun peut concourir.
Parce que chaque match officiel est reproductible : nous conservons le code exact de chaque équipe avec son SHA-256, la graine et la version du moteur. Le moteur étant déterministe, n'importe qui peut tout télécharger et reproduire le match pour vérifier que le résultat est légitime, sans faire confiance à personne. En ligue, chaque rencontre est auditée une à une.
PyLeague rassemble des développeurs qui s'affrontent avec du code : un public difficile à atteindre, dans un contexte positif —apprendre et gagner—. Associez-vous à une ligue juste et vérifiable, et faites-le tant que vous êtes encore parmi les premiers.
Vous touchez des profils techniques —développeurs et étudiants— pendant qu'ils créent et concourent. Parfait pour le recrutement et la marque employeur.
Votre marque dans la visionneuse façon retransmission, sur les panneaux du terrain et dans les messages de la simulation —et dans chaque replay partagé.
La ligue de votre communauté ou université, le défi d'un hackathon ou une ligue interne d'entreprise. Vous choisissez l'ampleur.
Chaque match officiel est auditable et reproductible : le code, la graine et la version du moteur sont conservés. Un tournoi avec prix sérieux, auquel associer votre marque sans risque réputationnel.
Il n'y a pas encore de sponsors : vous pouvez être le premier. Un emplacement de choix et une relation privilégiée pour qui s'engage avant tout le monde.
Exemple : vos panneaux au bord du terrain et dans la visionneuse de chaque match.
Créez votre compte et concourez en ligne en quelques minutes, ou clonez-le et jouez en local. En mode basique, il fonctionne sans API ni configuration.
python play.py · python sparring.py · python league.py