SuperFourmi

SuperFourmi

un simulateur de fourmillière multi-agent du dernier millénaire (!) – Lien Github

Historique

SFourmi est le premier projet C++ développé au lycée (Michel Tran Ngoc, Manik Bhattacharjee pour la conception et le code, graphiques par Tristan Millner et nettoyage de code par François Leiber) – période 1998-2002.

Son site web est toujours en ligne, dernière mise à jour il y a 18 ans !

Pour construire cette simulation, nous avons cherché des livres sur les fourmis à la BNF, observé des fourmis dans la nature et pris des photos argentiques de nos observations.

 

 

 

 

Ce projet était une occasion d’apprendre la programmation orientée objet et le C++, l’affichage graphique sous Windows et Linux en utilisant DirectX, GTK et enfin SDL.

Présentation basique

Les fourmis explorent leur monde 2D pour rechercher de la nourriture qu’elles rapportent à la fourmillière.

Chaque fourmi est indépendante et en fonction de sa situation, de son environnement et de sa catégorie (ouvrière, reine, nourrice, soldat) effectue la tâche appropriée. Elles laissent des pistes de phéromones (flèches bleues pour la nourriture, points rouge pour le danger), se déplacent sur la carte, prélèvent de la nourriture (les formes jaune brun) et élèvent de nouvelles fourmis à partir de larves dans la fourmillière. Elles peuvent tuer d’autres insectes et des fourmis issues d’autres fourmillières (les confettis colorés représentent un cadavre d’insecte).

L’interface montre à la fois une mini-carte avec toutes les fourmis (à gauche), et une vue locale (à droite). Une fourmi peut être sélectionnée pour afficher ses caractéristiques (à gauche), et lorsqu’elle transporte de la nourriture, c’est affiché.

Des ouvrières ramassent de la nourriture et laissent/suivent des phéromonesUne fourmi-soldat patrouille près d’un insecte mort et de phéromones de danger Dans la fourmilliére les nourrices s’occupent des larves près de la reine. Les ouvrières apportent de la nourriture de l’extérieur.

Etat actuel

J’a récemment (février 2020) essayé de relancer le programme, et j’ai pu le recompiler avec les anciennes librairies toujours distribuées avec ma version de linux.

La dernière version 2D a été compilée après quelques modifications (apparemment les processeurs 64 bits et du C++-98 mal codé, ça crée des bugs). Ca fonctionne assez bien avec plusieurs milliers de fourmis, bien qu’il n’y ait pas d’accélération matérielle pour l’affichage.


Nettoyer le code source représenterait beaucoup de travail, mais ce serait bien de voir SFourmi avec des librairies plus modernes, avec de l’accélération matérielle et SDL2, du code C++-20 propre utilisant le parallèlisme (voire les GPU !).

La version 3D – OpenGL développée par Michel la dernière année compile mais crashe fréquemment et n’a pas l’air de bien fonctionner car l’affichage est incompréhensible.

Tout le code a été mis sur Github, la nouvelle license est la GNU Affero GPL v3.

Ce contenu a été publié dans software project. Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à SuperFourmi

  1. manik dit :

    Le code 2D a été converti en SDL2 et tourne très bien, plus rapidement même, et plusieurs bugs ont été corrigés (cf github)

  2. FL dit :

    Wouhou, salut Manik, toujours vivant ?
    Ça fait plaisir de voir que SFourmi n’a pas été complètement oublié… mais moi j’avais déjà une page pour ça depuis 20 ans (gloups j’avais oublié en fait) : http://leiber.free.fr/programmation/sfourmis… et en Comic Sans en plus 😀

    Je me souviens surtout que passer derrière une équipe de devs pas forcément perfectionnistes, sans même avoir un vcs, c’était la souffrance totale, donc j’avais fini par aller faire mes propres projets. Mais retrospectivement, c’était une bonne intro au reste de ma carrière

Répondre à manik Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*