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 langage 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.