Spécialisation des tâches
Dès le début de la compétition, on a réalisé qu'une difficulté majeure allait être de coordonner efficacement les rats. Plus précisément, on devait trouver une façon de balancer le nombre de rats qui se concentrait sur ces différents éléments : récupérer du fromage, attaquer l'équipe adverse, défendre notre roi et les autres rats, attaquer le chat, explorer la carte, poser des pièges, etc...
Pour pallier à ce problème, l'équipe s'est concentrée à créer des spécialisations pour les rats. En fonction des besoins immédiats de la partie, le roi crée un rat et lui assigne le rôle qui est le plus urgent. Par exemple, si le stock de fromage diminue trop, le roi pourrait créer des mineurs pour aller chercher du fromage.
En tout, on a créé 4 rôles distincts:
- Scout : Explore la carte et découvre les points d'intérêt
- Mineur : Récolte le fromage des mines et le rapporte au roi
- Ingénieur : Installe des pièges défensifs autour du roi
- Soldat : Attaque le roi adverse ou défend notre roi d'une attaque
Exploration
Comme la carte était différente à chaque manche, une partie importante d'une manche était donc de déterminer où sont les ressources, les chats et le roi ennemis. Notre stratégie était de créer, dès le début de la partie, plusieurs rats (scout) qui avaient comme objectif de trouver les points d'intérêts sur la carte. Une fois un point trouvé, le scout rapportait l'information au roi.
En centralisant l'information sur le roi, on pouvait former une stratégie globale. Par exemple, si un scout trouvait la position du roi adverse, alors le roi créait une troupe de soldats qui allait attaquer le roi ennemi.
Système intelligent de création des rats
Un point de friction important était la logique de création de nouveaux rats. Chaque rôle était créé selon des évènements différents et certains de ces évènements étaient plus prioritaires que d'autres. Par exemple, on créait périodiquement (à chaque ~100 tours) un scout pour trouver des points qu'on aurait manqués précédemment. Sauf que si au même moment on réalise qu'on a presque plus de fromage, c'est probablement des ressources qu'on préférait utiliser pour créer un mineur qui pourra renflouer nos stocks. Finalement, si au même moment, on réalise que l'ennemi organise une attaque sur notre roi, alors la priorité devrait aller à la création de soldats pour défendre notre roi.
Pour résoudre proprement ce problème, l'équipe a opté pour une solution s'inspirant d'un ordonnanceur de tâches FCFS (First Come, First Serve) à priorité multiple. La logique du roi contient trois files de priorités:
- La file la moins prioritaire contient les tâches qui peuvent être faites quand le fromage est abondant et que notre roi n'est pas en danger. Créer un scout ou organiser une attaque avec des soldats était placé dans cette file.
- En deuxième priorité, on a les tâches qui répondent à un problème rencontré, mais n'annoncent pas immédiatement une défaite si le problème n'est pas adressé. Les tâches de création mineures, quand le stock de fromage atteint un certain niveau, rentrent dans cette catégorie.
- La dernière file représente les tâches les plus urgentes, ces tâches sont marqué par des situations qui demandent une action immédiate, sans quoi on risque une défaite certaine.
Ainsi, à chaque tour, le roi pige dans la file avec la plus haute prioritée pour savoir quel type de rat créer.
Dans l'image, on voit le roi de l'équipe orange (1), des
mines de fromage (2), un chat (3) et plusieurs rats
des deux équipes (4)
Une carte où les deux rois commencent à proximité l'un de l'autre.
On voit le roi rouge communiquer de l'information au rat
alentour.