Client IA
Installation de la librairie
Récupérez le dossier qui vous correspond sur discord et suivez les instructions du readme à l'intérieur.
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. Pour mettre à jour la lib libai, référez-vous au README.md de votre template.
Lancer une IA
Pour lancer une IA, vous devez avoir un serveur (et un client graphique) de lancer comme indiquer dans : Lancer une partie. Vous pouvez ensuite executer votre ia. L'appel à la fonction libai.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.
Par défaut, la librairie accepte les arguments CLI suivant :
Option | Description |
|---|---|
-h, --help | Affiche le message d'aide. |
--log <level> | Set the application logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
--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 :
rayon : le rayon de l'hexagone qui contient la map
terrain : une liste de coordonnées (q,r) sur lesquels votre IA est autorisé à se déplacer
walls : une liste des murs sur la map (q,r,side) avec q, r les coordonnées du murs et side le coté de l'hexagone associé (BOTTOM_LEFT, BOTTOM_RIGHT ou RIGHT)
le role de votre IA (CATS ou MOUSE)
cat_count : le nombre de chats sur la map (3)
mouse_count : le nombre de souris sur la map (1)
cat_spawn : la liste des coordonnées (q,r) des spawns de chats
mouse_spawn : la liste des coordonnées (q,r) des spawns de souris
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 :
ControllerInput :
player_controlled_count : le nombre d'entités que vous contrôlez
cat_positions : une liste des positions (q,r) des chats
mouse_positions : une liste des positions (q,r) des souris
dash_cooldown : le temps restant du cooldown du dash de la souris (en tick)
dbg : une instance de DbgDraw qui vous permet de dessiner sur l'écran du viewer (Python uniquement, voir le readme pour les autres langage)
Vous devez répondre en moins de 200ms en retournant les informations suivantes :
ControllerResponse :
moves : une liste des déplacements à effectuer pour chaque entité que vous contrôlez.
emotes : la liste des emotes à envoyer pour chaque entité que vous contrôlez.
dash : la liste avec une valeur qui indique si la souris doit dash ou non.
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 : Le nombre de tours que la partie a duré
La fonction libai.run retourne ensuite automatiquement pour fermer votre programme