Finale Codinsa 2026 Help

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

pip install -U codinsa-finale-2026 --index-url https://gitlab.com/api/v4/projects/76285034/packages/pypi/simple

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.

uv run codai2026
cargo run

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é (LEFT, RIGHT, NONE)

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 : true si le joueur peut passer au secteur suivant, false sinon

      • state : 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 NONE

    • horizontal_direction : LEFT ou RIGHT pour se déplacer latéralement, sinon NONE

    • attacking : true pour faire une fente

    • sword_orientation : UP ou DOWN pour monter/descendre l'épée, ou NONE pour 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.

Last modified: 18 March 2026