Clients IA
Installation de la librairie
Récupérez le dossier qui vous correspond sur discord et suivez les instructions du readme à l'intérieur.
Si vous souhaitez écrire votre IA en Python, un client basique est déjà prêt. Il peut être téléchargé avec un template de son utilisation ici On vous recommande d'utiliser uv pour gérer les dépendances et l'environnement virtuel
Si vous souhaitez écrire votre IA en Rust, un client basique est déjà prêt. Il peut être téléchargé avec un template de son utilisation ici
Mise à jour de la librairie
Vous devez toujours garder la librairie à jour. Vous ne pourrez pas vous connecter aux serveurs publics si vous utilisez une version trop ancienne. Lors de l'évaluation des IAs, seul la dernière version sera utilisée. Votre IA doit donc être compatible avec celle-ci.
Il faut mettre à jour le module codinsa-finale-2026
Pour mettre à jour le runner, remplacez le dossier src/codinsa_lib à partir du template
Lancer une IA
Pour lancer une IA, vous devez avoir un serveur de lancé comme indiquer dans : Lancer une partie. Vous pouvez ensuite exécuter votre IA. L'appel à la fonction run vous connecte automatiquement au serveur. Vous devez fournir à cette fonction l'instance de votre IA, votre équipe ainsi qu'un nom pour votre IA.
Option | Description |
|---|---|
-h, --help | Affiche le message d'aide. |
--host <host_name> | L'adresse du serveur auquel se connecter |
-p, --port <port_number> | Le port du serveur auquel se connecter |
-r, --role <wanted_role> | Le rôle souhaité ( |
Initialisation
Dès que deux joueurs ont rejoint le serveur, la partie démarre. La fonction init de votre ia est alors appellé avec :
La map :
width/height : la taille de la carte en pixels
blocks : une liste de blocs rectangulaires avec lesquels les joueurs entre en collision
position : le centre du bloc
width/height : la taille du bloc en pixels
spawn : les coordonnées des spawns de chaque joueur
side : le côté dans lequel joue votre IA (LEFT ou RIGHT)
Vous disposez de 2 secondes maximum pour retourner de cette fonction. Si vous ne répondez pas, la partie sera annulée et il sera considéré que vous avez perdu.
Tick
A chaque tick, la fonction tick est appelée avec les informations suivantes :
inputs.game_state:
players: hashmap/dictionnaire contenant les données de tous les joueurs
position : position du centre du joueur
sword_angle : l'angle de l'épée entre -1 (en bas) et 1 (en haut)
lookAt : le côté que regarde votre IA (-1 = gauche, 1 = droite)
hasAdvantage :
truesi le joueur peut passer au secteur suivant,falsesinonstate : l'état du joueur
IDLE : à l'arrêt
WALKING : en déplacement
JUMPING : en saut (uniquement pendant la montée)
FALLING : en chute ou en retombée d'un saut
FENCING : en fente
KNOCKED : pendant le recul suite à un coup d'épée
STUN : étourdi après un coup d'épée
dbg : une instance de DbgDraw qui vous permet de dessiner sur l'écran du viewer
Vous devez répondre en retournant les informations suivantes :
ControllerResponse2026 :
emotes : une liste d' 1 seule émote
vertical_direction : UP pour sauter, sinon
NONEhorizontal_direction :
LEFTouRIGHTpour se déplacer latéralement, sinonNONEattacking :
truepour faire une fentesword_orientation :
UPouDOWNpour monter/descendre l'épée, ouNONEpour la faire revenir à l'horizontale
Point marqué
Lorsque un point est marqué, la fonction score_update de votre ia est appellée avec les informations suivantes :
score_left : Le nouveau score du joueur gauche
score_right : Le nouveau score du joueur droit
Les positions des joueurs après réapparition ne vous sont envoyée qu'au tick suivant.
Fin de partie
Lorsque la partie est terminé, la fonction game_end de votre ia est appellée avec les informations suivantes :
has_won : Si vous avez gagné ou perdu (Pour le machine learning des Rennais)
turn_count : 0
La fonction run s'arrête ensuite automatiquement pour fermer votre programme.