Finale Cod'INSA 2025 Help

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 :

python mysuperia.py [OPTIONS]...

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é (CATS, MOUSE)

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

Last modified: 29 March 2025