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':
node-desc name
= ce nom doit être unique. Il faut impérativement
le modifier.icon url
= c'est le nom d'un fichier .gif qui peut être utilisé pour
donner une apparence originale à votre robot. Ici c'est l'image qui
se trouvera dans le bouton permettant de créer de nouveaux robots.brainclass
= c'est la classe Java que vous utiliserez pour définir
le cerveau (brain) de vos robots. C'est la seule classe que vous ayez à créer.
Tout le reste est automatiquement géré par Warbot (et donc
aussi par MadKit et SEdit)imageaddress
= le nom d'un fichier .gif (généralement le
même que pour icon url) qui est utilisé pour la visualisation
de votre robot dans Warbot.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
).