Étiquettes :

Une bataille d’intelligences se prépare pour nos jus de liens en herbe, cette année sur le terrain de l’école Supinfo Caen 🧠⚔️

⏱️J-31

Avant la journée d’affrontement du 22/05/2024, pendant laquelle les équipes des NSI d’Argentan affronteront celles des 1A de Supinfo sur l’arène virtuelle Pynals, un Capture The Zone !

A vos claviers et vos neurones, il est temps de coder 🤖

🗺️ La map

Dans l’arène PYnals, 2 équipes se combattent pour prendre le contrôle d’une zone au centre de la map ci-dessous 👇

Arena schema

Map réalisée avec ❤️‍🔥 par le talentueux Mathis (le 4e Ma de l’équipe)

Symétrique de 30×30 cases, cette map est constituée de 2 zones de spawn, 1 pour chaque équipe, une en bas à gauche, et une en haut à droite, reliée par plusieurs chemins. Attention à ne pas vous égarer dans les buissons ralentisseurs, vous risqueriez de mettre un certain temps pour retrouver chemin !

Chaque équipe est constituée de 3 agents (=robots virtuels), qui apparaissent au début d’une manche dans la zone d’équipe dans un coin de la map. Au spawn, l’agent se verra attribuer un profile par le serveur de jeu, selon la demande formulée dans son programme (voir statistiques dans le paragraphe ci-après 👇).

Pour gagner, une équipe (au moins un agent) doit rester seule (sans aucun agent de l’autre équipe) au sein de la zone au centre de la map, pendant au moins 20 secondes.

👾 Les agents

3 profiles sont disponibles par équipe avec les statistiques suivantes : ”Light”, ”Medium”, ”Heavy”. Pour les choisir, nommer votre agent du nom de celui que vous souhaiter incarner (le paramètre playerId du constructeur de la classe Agent).

StatisticsLightMediumHeavy
Life points3060100
Couldown between 2 moves100250500
Couldown between 2 fires200400800
Hit fire152530

🚧 Work in progress
Les statistiques ci-dessus sont susceptibles de changer avant le jour J par soucis d’équilibrage. Mais l’état d’esprit reste le même : le Heavy sera toujours plus lent avec une force plus importante, le Light son opposé, et le Medium la moyenne des 2.

🏆 Les équipes

🚧 Work in progress
Le déroulement en manches peut encore évoluer car il dépendra du nombre définitif de candidats qui est encore à valider.

  • Supinfo Caen
    • 6 joueurs
    • 3 joueurs distincts par équipe
    • 2 équipes : SC1, SC2
  • JDA Argentan (JA)
    • 7 à 8 joueurs
    • 1 personne dans 2 équipes à la fois par soucis arithmétique
    • 3 équipes : JA1, JA2, JA3

Phase 1 : sélection des 2 meilleures équipes JA (JAB1, JAB2) en 2 manches. En cas d’égalité, départage via nombre total de kills par équipe, et si égalité l’équipe la plus rapide à gagner la zone l’emporte

  • JA1 – JA2
  • JA1 – JA3
  • JA2 – JA3

Phase 2 : sélection des 2 meilleures équipes JAB et SC en 2 manches

  • SC1 – SC2
  • SC1 – JAB1
  • SC1 – JAB2
  • SC2 – JAB1
  • SC2 – JAB2

Phase 3 : finale en 2 manches gagnantes (3 manches si égalité)

🎲 L’arène

🚧 Work in progress
Les arènes ”Pynals-Training1” et ”Pynals-Training2” sont visibles et joignables en ligne depuis le 22/04/2024 à 18h. Comme les règles sont encore en cours d’implémentation, des mises à jour journalières pourront êtres installées entre 8h et 10h du matin.

Pour commencer à coder votre agent dans l’arène, il vous faut télécharger l’API. Deux options s’offrent à vous :

  • Faire un fork sur Replit (un IDE full web collaboratif), pour rien n’avoir un installer : au lien 👉 https://replit.com/@jusdeliens/pytactx
  • Cloner l’API localement sur votre ordinateur en la récupérant sur Github au lien 👉 https://github.com/jusdeliens/pytactx.git . Dans ce cas, vérifier sur votre réseau local que votre parefeu et/ou proxy autorise la connexion sortante le port 1883 (ce qui n’est pas le cas sur la plupart dans la plupart des organisations). Sinon mettez-vous en partage de connexion 4G ou bien optez pour la solution Replit ci-dessus.

Vous n’aurez le droit de démarrer votre programme qu’une seule fois au début d’une partie, suite à quoi aucune interaction ne sera possible avec votre programme en cours d’exécution. Pensez-donc a bien coder votre agent pour qu’il soit autonome.

Dans une boucle principale, le programme réalise les actions suivantes :

  • Se connecter au serveur de jeu à l’adresse précisée sur le port 1883, en précisant le nom du joueur à incarner dans l’arène
    • Pendant la phase d’entrainement avant le jour J sur les arènes ”Pynals-Training” : mqtt.jusdeliens.com
    • Pendant les phases de préparation le jour J sur les arènes ”Pynals-Training” : 192.168.42.42
    • Pendant l’affrontement le jour J sur l’arène ”Pynals” : 192.168.42.42
  • Attendre que le serveur de jeu démarre s’il est en pause
  • Puis tant que le joueur est en vie, exécuter les instructions autorisées par l’API : déplacement, tir, changement de couleur …
  • En cas de mort, redémarre la boucle principale

A chaque agent.update(), l’API interroge le serveur de jeu, met à jour l’état de l’agent enregistrée par le serveur (comme un pull git), puis envoie toutes les actions demandées avant l’update (bufferisées localement comme un git commit avant update, et envoyées durant l’update comme un git push). Le serveur de jeu vérifie et effectue les requêtes demandées valides périodiquement, puis notifie les clients viewer pour afficher l’état des agents dans l’arène.

L’arène est visualisable via son viewer dans un navigateur (Google Chrome de préférence), aux adresses et ports suivants :

  • Pendant la phase d’entrainement sur les arènes ”Pynals-Training” avant le jour J : 👉 https://play.jusdeliens.com
  • Pendant les phases de préparation le jour J sur les arènes ”Pynals-Training” : 👉 http://192.168.42.42:5500, en sélectionnant au login ”Join a private arena” puis le port 9001
  • Lors de l’affrontement, le viewer sera visible uniquement via projection sur un écran

Pour plus d’informations sur l’API, rendez-vous sur 👉https://tutos.jusdeliens.com

💻 Le matériel

Chaque candidat possède un ordinateur portable (sous Windows ou Unix) qu’il doit emmener avec lui le jour J, avec une configuration minimale permettant d’installer et d’exécuter

Le candidat doit être administrateur de sa machine de sorte à pouvoir paramétrer ses interfaces réseaux pour désactiver/activer ses interfaces et configurer les paramètres IPv4 (ip et masque de sous-réseau).

⛔ Interdits ✅ autorisés

✅ Seule l’API officielle de PytactX (via Github ou Replit) est autorisée pour programmer un agent

⛔ Interdiction de modifier les sources de l’API : à chaque lancement du programme Agent, le serveur vérifie l’intégrité des sources. En cas de détection de modification, le joueur est banni du tournoi

✅Pour développer son programme avant et pendant le jour J, le candidat pourra utiliser son IDE avec certaines extensions (linters, deboggeurs, intellisense) ainsi que l’API et les dépendances installées

⛔Par soucis d’équité et pour des raisons académiques, il est interdit de consulter des IA génératives pour écrire tout ou partie du code qui pourrait être utilisé le jour J. Le candidat veillera donc à désactiver tout extension Copilot ou similaire, et n’utilisera pas de chat type GPT.

✅Le jour J, durant une partie, l’apprenant ne pourra utiliser qu’un seul ordinateur qui devra être hors ligne et ne pourra être connecté qu’au LAN qui sera dépourvu de routeur (et donc dépourvu de connexion Internet). Le candidat veillera à désactiver ses cartes wifi, bluetooth et tout autre interface réseau

⛔Interdiction pour son ordinateur portable d’être connecté à un autre réseau. Interdit également de tenter des attaques réseaux (de type déni de service) qui pourrait nuire au bon déroulement de l’évènement

✅Seuls les noms des agents donnés par le serveur par équipe pourront être sélectionnés par les joueurs de cette équipe

⛔ Aucun autre nom d’agent ne sera toléré. En cas de tentative d’usurpation de nom d’agent, le joueur sera banni du tournoi

✅Entre chaque partie, le candidat disposera de quelques minutes pour modifier son programme d’Agent, pour pouvoir sélectionner son profile ou corriger quelques lignes de code si besoin.

⛔Durant la partie, interdiction au candidat d’interagir avec son programme en cours d’exécution

ℹ️ Plus d’informations

N’hésitez pas à 👉nous rejoindre sur le serveur discord pour poser vos questions ou nous partager vos feedbacks.

Bon courage à vous et à bientôt pour l’affrontement ⚔️

Catégories

Les commentaires sont fermés.