Auteur : Cindy Even

Compétition Bot Contest 2017 lors de la plate-forme PFIA 2017 à Caen, du 4 au 6 juillet 2017

Bot Contest 2017

L’Association Française pour l’Intelligence Artificielle (AFIA) organise une compétition Intelligence Artificielle & Jeux Vidéo lors de la plate-forme PFIA 2017.

Traditionnellement, les compétitions d’IA et Jeu Vidéo évaluent la performance, avec comme objectif de jouer le mieux possible et d’obtenir le meilleur score. Le but de la présente compétition est de programmer le bot le plus crédible pour le jeu Unreal Tournament 2004 (UT2004). Le bot qui se confondra le plus parmi les joueurs humains sera le vainqueur de cette compétition et l’équipe (ou l’individu) à l’initiative de ce bot se verra attribuer un prix et un diplôme par l’association française d’intelligence artificielle (AFIA).

Le jeu utilisé pour la compétition sera basé sur une version modifiée du mode DeathMatch de UT2004. Cette version modifiée fournit une interface (appelée Gamebots) qui permet de contrôler des bots à partir d’un programme externe. Plusieurs modifications supplémentaires seront apportées pour la compétition. Par exemple, le chat sera désactivé (ce n’est pas une compétition de chatbot!).

Votre bot devra être capable de s’adapter aux différentes cartes du jeu et de fonctionner de façon autonome. Il ne fera pas parti d’une équipe mais jouera en solitaire; il n’y a donc pas besoin de prévoir des comportements de collaboration.

Pour participer aux qualifications, vous avez jusqu’au 10 juin 2017 pour créer un compte et déposer votre bot sur notre site internet. Si vous êtes qualifié, votre bot sera évalué lors des finales qui auront lieu à Caen du 4 au 6 juillet 2017. Les participants n’auront pas besoin de venir à Caen pour la compétition, en revanche, ils devront être en mesure de répondre à une interview (en visioconférence) le jeudi 6 au soir lors de la remise des prix.

Les trois finalistes de la compétition se partageront un prix d’une valeur minimale de 1500€. Ils recevront aussi un diplôme de la part de l’AFIA.

Cette compétition est ouverte à tous, seul ou en équipe. Nous invitons donc les chercheurs, étudiants, académiques, lycéens, ingénieurs, amateurs, industriels, et grand public à participer. Déclarez-nous déjà votre intention de participer, et n’hésitez pas à nous contacter pour toute information.

Comité d’organisation : Carole Adam, Florence Bannay, Cédric Buche, Cindy Even, Philippe Morignot, Sylvie Saget.
Contact et questions : competition@afia.asso.fr

Membre du jurys invité : Eddy Celestine, passionné de jeux vidéo (et de pleins d’autres trucs), travaille dans l’industrie du jeu vidéo depuis 15 ans environ. Il a commencé sa carrière comme testeur, puis Deployment Manager (entre la production et les équipes marketing et commercial), Key Account Manager, Business Developer EMEA. Aujourd’hui, il met ses connaissances aux services des autres par le biais d’Atlangames où il est l’un des 2 permanents depuis 3 ans.

Flyer BotContest2017

Nos Sponsors :

CERV LAb-STICC

Bot Contest 2017 – Développement

 Développement

Pour participer à la compétition, vous devrez développer un bot pour le jeu Unreal Tournament 2004 (UT2004) qui utilise l’interface GameBots2004. Vous pouvez développer votre programme en utilisant le language de programmation et l’IDE que vous souhaitez, tant que le programme utilise l’interface GameBots2004 et s’exécute sous Windows 10. Un IDE simple à utiliser est Pogamut.

La compétition utilisera la version de GameBots2004 qui est fournie avec Pogamut 3.7.0.

 

A. Si vous choisissez d’utiliser Pogamut, voici les étapes à suivre pour l’installation :

Avant de commencer l’installation il est recommandé de modifier les paramètres de contrôle de compte d’utilisateur en choisissant l’option « Ne jamais m’avertir ». Vous devrez redémarrer votre ordinateur.
A la fin de l’installation, n’oubliez pas de remettre le paramètre par défaut.
L’installation est expliquée dans cette vidéo :

Description des étapes d’installation :

  1. Java JDK 1.7

    • Vous pouvez télécharger le JDK à partir de cette page.
    • Dans les fichiers de l’installation, trouvez de dossier nommé bin. Ajoutez le chemin vers ce dossier (exemple : C:\Program Files\Java\jdk1.7.0_79\bin) à la variable d’environnement Path.
    • Créez une nouvelle variable d’environnement JAVA_HOME avec le chemin vers le dossier jdk (exemple : C:\Program Files\Java\jdk1.7.0_79).
  2. Maven

    • Récupérez l’archive zip (.zip) à partir de cette page.
    • Copiez les fichiers de l’archive dans un nouveau dossier comme par exemple : C:\Program Files\Maven)
    • Ajoutez le chemin vers le dossier bin (exemple : C:\Program Files\Maven\bin) dans la variable d’environnement Path.
  3. NetBeans 7.4

  4. Unreal Tournament 2004 (Editor’s choice edition)

    • Ce jeu est un FPS (jeu de tir à la première personne) qui est livré avec son propre langage de script : UnrealScript. Ceci permet de modifier le jeu très facilement.
    • Vous pouvez obtenir le jeu en ligne sur Steam ou GOG pour moins de 15€.
  5. Pogamut

    • Téléchargez le Pogamut UT2004 Installer 3.7.0 sur cette page.
    • Exécutez une invite de commandes en tant qu’administrateur et allez à l’endroit où se trouve le fichier téléchargé grâce à la commande cd.
    • Entrez la commande : java -jar nomdufichier.jar
    • Précédez à l’installation.
      ⚠ Décochez Maven puisqu’il a été installé précédemment. ⚠
    • Une fois l’installation terminée, vous pouvez exécuter NetBeans en tant qu’administrateur et attendez que le pluging soit ajouté.

 

B. Comment lancer un bot ?

Un tutoriel est disponible ici. Attention ce dernier n’est peut-être pas à jour.

  • Dans NetBeans, cliquez sur File puis New Project...
  • Choisissez Maven and Project from Archetype puis cliquez sur Next.
  • Une fois que les archétypes sont chargés, choisissez 00-empty-bot-archetype et cliquez sur Next.
  • Vous pouvez changer le nom et la localisation du projet si vous le souhaitez puis cliquez sur Finish.
  • S’il y a des problèmes dans le projet, fermez la fenêtre et effectuez un « Clean and build », ceci devrait corriger les erreurs.
  • Après un moment vous devriez obtenir un « BUILD SUCCESS ».
  • Il est maintenant temps d’exécuter votre Serveur. Une solution est de lancer le fichier .bat « startGamebotsDMServer.bat » situé dans votre installation de Pogamut (exemple : C:\Program Files\Pogamut – UT2004 Edition) ou dans le dossier « System » de votre installation d’UT2004 (C:\GOG Games\Unreal Tournament 2004\System).
    Vous pouvez aussi créer votre propre ficher .bat, (plus d’informations sont données ici). Ceci vous permet de lancer différentes cartes par exemple.
    Voici une liste de noms de cartes :

  • Dans NetBeans, allez sur l’onglet Services. Faite un clic droit sur UT2004 Servers et choisissez Add server.
  • Dans la propriété URI, mettez localhost et fermez la fenêtre.
  • Vous pouvez maintenant lancer votre projet (F6), ceci connectera votre bot au serveur.
  • Pour voir la carte du jeu dans NetBeans, vous pouvez effectuer un clic droit sur le serveur que vous avez ajouté puis cliquez sur Show Map.

 

C. Il est maintenant temps de développer votre propre bot !

  • Dans un premier temps nous vous invitons à étudier le code de la classe EmptyBot du projet 00-empty-bot-archetype. Vous pouvez consulter la documentation de la classe dont elle hérite : UT2004BotModuleController et suivre ce tutoriel.
  • Après avoir bien compris comment ce simple bot fonctionne, vous pouvez analyser les autres projets de l’archétype disponibles. Nous vous recommandons de suivre le tutoriel pour le01-responsive-bot-archetype et que vous appreniez à utiliser les modules pour les capteurs et commandes avec ce tutoriel : Chapter 10. Pogamut sensor and command modules – the basics .
  • La documentation de Pogamut est disponible ici et toutes les classes peuvent être trouvées sur cette page.

 

D. ⚠ Connecter votre bot à un serveur

Il est important que votre bot puisse se connecter à nimporte quel serveur en lui spécifiant une adresse IP et un port.
Si vous utilisez Pogamut, modifiez la fonction main de la façon suivante :

public class YourClass extends UT2004BotModuleController {

    [votre code ...]

    public static void main(String[] args) throws PogamutException {
        
        String host = "localhost";
        int port = 3000;

        if (args.length > 0)
        {
            host = args[0];
        }
        if (args.length > 1)
        {
            String customPort = args[1];
            try
            {
                port = Integer.parseInt(customPort);
            }
            catch (Exception e)
            {
                System.out.println("Invalid port. Expecting numeric. Resuming with default port: "+port);
            }
        }

        while (true)
        {
            try
            {
                UT2004BotRunner runner = new UT2004BotRunner(YourClass.class, "Nom_de_votre_Equipe", host, port);
                runner.setMain(true);
                runner.setLogLevel(Level.OFF);
                runner.startAgent();
                Thread.sleep(1500);
            }
            catch (ComponentCantStartException e)
            {
                Throwable cause = e.getCause();
                if (cause instanceof ConnectionException)
                {
                    System.out.println("Connection to server failed... retrying");
                    e.printStackTrace();
                }
                else if (cause instanceof BusStoppedInterruptedException)
                {
                    e.printStackTrace();
                    System.out.println("Aborting...");
                    break;
                }
                else
                {
                    e.printStackTrace();
                    System.out.println("Some other cause for ComponentCantStartException... retrying");
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
                System.out.println("Some other exception... retrying");
            }
        }
    }
}

E. Comment livrer votre bot ?

  • Avant de déposer votre bot, assurez-vous qu’il fonctionne correctement en dehors de NetBeans. Voici les étapes à suivre pour effectuer cette vérification :
    1. Builder le projet (avec les dépendances !)
      Changer la configuration de NetBeans en allant dans : File / Project Properties / Actions et sélectionez Build with Dependencies puis cliquer sur OK.
    2. Créer un dossier quelque part (le bureau par exemple).
    3. Dedans, y mettre le fichier nomdufichier.one-jar.jar ainsi que tous les fichiers dont le bot a besoin pour fonctionner (cf image).
    4. Modifier le fichier GameBots2004.ini dans le dossier System de l’installation de Unreal Tournament 2004 en remplaçant la ligne :
      bRandomPorts=False
      par :
      bRandomPorts=True
    5. Démarrer un Serveur (par exemple avec le fichier startGamebotsDMServer.bat du dossier System)
    6. Repérer le ligne :
      BotServerPort:XXXXX ControlServerPort:XXXXX ObservingServerPort:XXXXX
      Et copier la valeur de BotServerPort.
    7. Ouvrir une fenêtre de commande dans le dossier créer à l’étape 2
    8. Executer la commande :
      java -jar nomdufichier.one-jar.jar adresseIPduServer BotServerPort
      si le bot et le serveur tournent sur la même machine alors on a :
      java -jar nomdufichier.one-jar.jar 127.0.0.1 XXXXX
  • Pour déposer votre bot, il vous suffit de créer un compte puis de suivre les indications.

Bot Contest 2017 – F.A.Q.

F.A.Q.

Q1 – Quel mode de UT2004 est utilisé ?

Le DeathMatch mode sera utilisé pour la compétition.

Q2 – Les parties seront à combien de joueurs ?

Le nombre de joueurs par partie peut varier. Cependant, il n’y aura pas d’équipes donc pas de collaborations possibles, c’est chacun pour soi.

Q3 – Quelle carte sera utilisée pour la compétition ?

Votre bot devra jouer sur plusieurs cartes. Il doit donc être capable de s’adapter à l’environnement. Les cartes peuvent être des cartes présentes dans le jeu ou des cartes importées.

Q4 – L’adrenaline sera-t-elle disponible ?

Non, l’utilisation de l’adrénaline sera désactivée. Elle sera présente sur les cartes et pourra être ramassée mais ne pourra pas être utilisée.

Q5 – Faut-il avoir un meilleur score que l’adversaire ?

Nous ne prendrons pas en compte les scores de votre bot pour la compétition. Il ne s’agit pas de développer un bot performant mais un bot qui se confond avec les humains.

Q6 – Comment est-ce-que le bot sera observé ?

La compétition sera composée de plusieurs phases pouvant avoir des modes d’observation différents. Par exemple, les juges pourront évaluer les bots en jouant directement contre eux. Ils pourront aussi être spectateurs et observer les joueurs via différents points de vue.

N’hésitez pas à nous poser vos questions à l’adresse competition@afia.asso.fr.

Bot Contest 2017 – Résultats

Équipes inscrites

 

Equipes Membres Affiliations Qualifiés en finale Prix remportés Présentations
La Communauté de Nao Sebastien Vallet
Swan Blanc
Université de Savoie Mont-Blanc 2ème prix
A HUMAN GUY Paco Dupont
Rémi Sahl
Axel Chauvin
CERV 1er prix &
Prix coup de cœur du public
PDF
AOP Andreea-Oana Petac CERV 3ème prix PDF
Lepsis_Team Jean-Michel Auberlet
Nicolas Goureau
IFSTTAR PDF
Runners Jean-Baptiste Sarazin
Jeremy Romé
Romain Tardy
Hugo Mathieux
Université Paul Sabatier PDF
Bananium Arnaud Levaufre
Bastien Orivel
ENIB