.

Comment créer sa propre équipe dans Warbot

Les équipes sont créées dans des fichiers de "formalisme", lesquels se trouve dans le directory <madkit>/lib/formalisms. Il s'agit de fichiers .xml qui suivent la syntaxe de SEdit, un éditeur et animateur de structures de graphes, intégré à MadKit (en fait, Warbot tourne à l'intérieur de SEdit, et utilise ses fonctionnalités).

Ces fichiers de formalisme, pour Warbot, ont la structure suivante:


    <node-desc name="redMissileLauncher" class="warbot.kernel.RocketLauncher"  category="dumb">
<icon url="images/world/redRobot1.gif"/>
<property name="radius">12</property>
<property name="team">red</property>
<property name="detectingrange">80</property>
<property name="energy">4000</property>
<property name="brainClass">warbot.demo.HomeKiller</property> -->
<graphic-element class="warbot.kernel.GBasicBody">
<property name="imageaddress">images/world/redRobot1.gif</property>
<property name="labelLocation">4</property>
<property name="displaylabel">false</property>
</graphic-element>
<action description="toggle show detection range">
<java-method name="toggleShowDetect"/>
</action>
<action description="toggle show user message">
<java-method name="toggleShowUserMessage"/>
</action>
<action description="toggle show energy level">
<java-method name="toggleShowEnergyLevel"/>
</action>
</node-desc>

Chaque node correspond à un type de robot appartenant à une équipe. Les parties en bleu sont celles que vous avez à modifier pour faire votre équipe.

Le plus facile pour démarrer est d'ajouter votre équipe au fichier de formalisme <madkit>/lib/formalisms/warbot04.fml. Ce fichier contient déjà un ensemble d'équipes contre lesquelles vous allez pouvoir vous confronter.

Vous ajoutez vos équipes en copiant/collant trois types de robots d'une autre équipe (par exemple l'équipe des Green ou des Red, qui sont des équipes élémentaires), puis vous modifier les champs suivants d'un 'node-desc':

Lorsque vous écrivez des agents en Python, c'est légérement différent:


<node-desc name="redDetector" class="warbot.kernel.Explorer"  category="dumb">
<icon url="images/world/redRobotAntenna.gif"/>
<property name="radius">12</property>
<property name="team">red</property>
<property name="detectingrange">130</property>
<property name="energy">1000</property>
<property name="brainClass">warbot.kernel.PythonBrain</property>
<property name="behaviorFileName">plugins/warbot/scripts/explore1.py</property>
<graphic-element class="warbot.kernel.GBasicBody">
<property name="imageaddress">images/world/redRobotAntenna.gif</property>
<property name="labelLocation">4</property>
<property name="displaylabel">false</property>
</graphic-element>
</node-desc>

Il n'y a que la ligne en rouge qui diffère. Vous ne modifiez pas la classe du robot en Java (qui en python est toujours une classe warbot.kernel.PythonBrain) mais vous rajoutez la ligne en rouge qui indique quel fichier Python vous associez à votre robot.

Vous trouverez dans le fichier template_warbot_fr.xml (fichier à télécharger, si vous l'ouvrez dans le navigateur vous aurez une erreur) un fichier .xml qui contient un template d'équipe (ce template est défini pour des "brain" écrits en Java) et qu'il est facile de modifier et ensuite de coller dans un fichier de formalisme (par exemple le fichier warbot05.fml).