Vincent Coubray revient sur le Codingame Fall Challenge

Lors des vacances de fin d’année, Vincent Coubray – Senior Software Developer @Sedona, ainsi que 3 autres sedoniens ont participé au Codingame Fall Challenge.

Adepte de ce type de concours, Vincent revient avec nous sur ce dernier challenge et nous en dit plus sur ses motivations.

 

En quoi consistait ce concours ?

Ce concours était un combat de bot. Le principe est simple : tous les participants ont plusieurs jours pour écrire un programme qui joue à un jeu. Votre programme affronte ensuite celui des autres joueurs et grimpe ou descend dans le classement en fonction de ses résultats.

Le but étant de battre le plus de bots possible et d’aller le plus loin dans le classement.

 

Le jeu en question est différent à chaque concours, il est souvent inspiré d’un jeu vidéo ou d’un jeu de société existant.

Pour celui ci, les joueurs devaient écrire un programme contrôlant plusieurs petits robots pouvant se déplacer d’une case par tour. Chaque case traversée par un robot est marquée par la couleur du joueur. Le gagnant est celui qui possède le plus de case dans sa couleur à la fin de la partie.

Les joueurs gagnent également des ressources à chaque tour, qu’ils peuvent dépenser pour créer des robots supplémentaires ou des recycleurs (des bâtiments qui augmentent le nombre de ressources gagnées par tour mais détruisent petit à petit les cases alentours, ils sont intéressants pour construire plus rapidement plus de robots mais peuvent diminuer votre score en détruisant vos propres cases ou en bloquant des chemins).

Voici un exemple de partie, pour mieux visualiser à quoi cela ressemble : https://www.codingame.com/replay/698733562

Tu participes régulièrement à ce type de challenge, qu’est-ce qui t’intéresse ?

J’ai découvert la plateforme codingame il y a 5 ans et je me suis inscrit à mon premier concours à cette période là, plus par curiosité que par autre chose. Cela m’a beaucoup plus et je continue d’y participer encore aujourd’hui principalement parce que ça m’amuse énormément : j’adore les jeux et j’aime beaucoup coder, alors coder un programme qui joue à un jeu, c’est le meilleur combo!

 

Cela me permet de sortir de ma zone de confort et de voir de nouvelles choses. Les problématiques de ce genre d’exercice sont souvent différentes de ce que je peux rencontrer dans mon travail de tous les jours (on a rarement besoin d’utiliser un algorithme génétique ou un Monte Carlo Tree Search lorsqu’on développe des sites web).

D’autant plus qu’a la fin de ces concours, beaucoup de joueurs partagent leurs approches. C’est souvent l’occasion de découvrir des algorithmes ou des méthodes très performantes que je ne connaissais pas. C’est très enrichissant.

 

Encouragerais tu d’autres collaborateurs à en faire (ou est-ce déjà le cas) ?

Oui, j’encourage tout le monde à participer au moins une fois à ce genre de concours. J’ai déjà réussi à convertir quelques collègues.

Pour ce concours, nous avions d’ailleurs organisé une soirée le premier jour parce que c’est toujours plus sympa d’être à plusieurs pour découvrir les règles du jeu, échanger nos premières idées et se faire affronter les premières versions de nos bots entre eux.

C’était aussi un bon moyen de motiver des collaborateurs qui peuvent penser que ce genre d’exercice prend du temps et demande des connaissances très poussées en algorithmie et en programmation.

 

En réalité, ce genre de concours est accessible même aux profils débutants et ne prend pas forcement beaucoup de temps.

En une heure ou deux, il est possible d’avoir un bot qui joue juste au jeu sans stratégie particulière. C’est toujours très satisfaisant de voir la première version de son bot jouer sans planter pour la première fois, même s’il fait n’importe quoi et qu’il perd la plupart de ses matchs.

 

Le risque c’est qu’ensuite, en regardant ses premières défaites, on peut avoir des idées d’amélioration rapide à implémenter, on gagne quelques places dans le classement, puis on a une autre idée, puis une autre, puis encore une autre… On se prend au jeu et soudain, on vient de passer plus de 20h en un weekend sur son programme alors qu’à la base on s’était inscrit un peu par hasard, juste par curiosité 🙂

 

Qu’as-tu réalisé pendant ce codingame ?

J’ai commencé par faire une première version simple qui joue à chaque tour des actions aléatoires parmi les actions possibles.

Cela m’a permis d’avoir rapidement une base que j’ai amélioré petit à petit, en testant différentes stratégies.

A force de modifications et de débogages, je suis arrivé à une stratégie assez simple mais plutôt efficace :

Mon programme commence chaque tour par vérifier les cases en ma possession qui peuvent être capturées par l’adversaire.

S’il y en a, il défend celles qui peuvent l’être en créant des robots ou un recycleur dessus s’il a suffisamment de ressources. Sinon il déplace un robot à proximité sur la case à défendre si c’est possible.

S’il reste des robots qui n’ont pas encore bougé, il les déplacent en priorité vers les cases neutres (n’appartenant encore à personne) les plus proches de l’adversaire (afin de limiter le plus vite possible l’expansion de l’adversaire).

S’il n’y a plus de case neutre accessible, le programme tente de déplacer des robots sur les cases adverses pour les capturer.

Quels ont été tes résultats à ce concours ?

J’ai terminé 187ème / 4577 sur ce concours, c’est un très bon score pour moi, je crois même que c’est l’un de mes meilleurs classements jusqu’à présent.

 

Et comme on était plusieurs Sedoniens à participer, l’entreprise à également un classement : 58ème entreprise / 164.

Ce qui est aussi un score tout à fait honorable compte tenu du fait que nous étions que 4 dans l’équipe et que tout le monde n’a pas forcement eu beaucoup de temps à passer sur ce concours (c’était en plein pendant la période de Noël).

 

Quel sera le prochain Coding Game auquel tu comptes participer ?

Le prochain concours n’a pas encore était annoncé mais habituellement, il y en a deux par an, un au printemps et un en automne. Le prochain devrait avoir donc lieu très bientôt entre mars et avril et je compte bien y participer 🙂

Inscrivez vous gratuitement et découvrez le résultat de ce concours en jeu libre: https://www.codingame.com/multiplayer/bot-programming/keep-off-the-grass-fall-challenge-2022