IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Plateforme multi-agent en C++/LUA


Sujet :

Projets

  1. #1
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut Plateforme multi-agent en C++/LUA
    Bonsoir à tous.

    J'arrive à la fin de mon cursus ingénieur et je suis en train d'essayer de me monter un petit portfolio pour mes candidatures à venir (dev dans le secteur du jeu vidéo en IA ou en 3D).

    Je vous présente donc un de mes projet qui s'inscrit dans ce cadre.

    • Sujet
      Le but est de réaliser une plate-forme d'intelligence artificielle rapide, simple et souple afin de permettre la mise en place rapide d'algorithme d'IA (évitement par exemple).
    • Technique
      Le moteur est réalisé en C++ et s'interface avec le langage LUA afin de permettre une modification rapide des comportements des différents agents. L'interface graphique permettant la visualisation de la simulation est une simple fenêtre SFML.
    • La suite
      Le projet est très jeune (une quinzaine d'heures) et il y a pas mal de choses à ajouter.

      A venir dans le projet, on doit pouvoir définir les paramètres de la simulation depuis un fichier de configuration.

      Réalisation d'un mini jeu vidéo à l'aide d'une approche 100% orientée agent (à priori un petit shooter 3D comparable à Zombie Apocalypse)

    • Exemple
      Voilà une vidéo d'exemple de ce que peut donner le code LUA attaché (à renommer en .lua).
      La première partie montre quelques itération (génération frame by frame), la seconde est en mode continu).


    • Note
      Je ne suis absolument pas un pro de Lua, que j'ai découvert pour ce développement. Le comportement donné en exemple est loin d'être à la hauteur de mes attentes, mais ça donne une idée...
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Moi je trouve cela très bien, bon courage :-)

    Question en passant: tu vas permettre quelle flexibilité pour les programmeurs LUA ?

    Jc

  3. #3
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Merci pour les encouragements

    Etant donné que je découvre encore et que ma deadline est proche (max mi septembre avant d'attaquer les candidatures), je pense rester comme c'est actuellement:

    Pour chaque agent, on appel une fonction qui prend en paramètre l'ensemble des objets perçus, ainsi que les caractéristiques de l'agent courant, après le programmeur en fait ce qu'il veut et renvoie au programme une influence, c'est dire un vecteur avec la direction voulue et l'angle voulu.

    Le programme se charge de clamper ces valeurs aux vitesses linéaires et angulaires maximales autorisée.

    Ce soir j'attaque normalement une représentation des agents en 3D. Je réfléchis surtout à comment tout représenter par des agents.

    Au fil des besoins, je pense exposer des bitfields qui permettraient de mettre en place des machines à état (chaines de Markov, systèmes décisionnels par apprentissage toussa).

    De plus, je pense mettre en place un petit jeu pour les gens qui voudraient découvrir LUA et les systèmes multi-agents sur ce forum (si ça intéresse des gens bien sûr )

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Sympa la démo
    Je me pose cependant une question, quel est l'intérêt du LUA car clairement il faudra un programmeur pour coder les comportements ?
    A partir du moment où c'est un programmeur qui script, je pense que LUA devient inutile, en tout cas pour l'appli définitive, ça reste intéressant pour les phases de tests. Je parle uniquement du contexte IA et hors portabilité.

  5. #5
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    Merci Djakisback

    En fait, je pensais coder une mini lib pour LUA (je ne sais pas si "lib" est le terme pour lua, mais vous voyez l'idée) avec les outils pour tout ce qui est vecteurs/trigo, et proposer les comportements de base (déplacement au hasard, évitement d'obstacle etc). Une telle lib existe probablement, mais le but c'est aussi de se faire à LUA.

    Le but à terme est que la programmation des comportements soit la plus simple possible, et qu'on soit capable d'ajouter de nouveaux agents sans avoir à toucher au code c++.

    Étant donné le secteur d'activité que je vise, je sais d'avance que ce genre de chose est très utilisé (le dérivé de javascript dans l'UDK, le LUA dans le cryengine etc).Je voulais tenter l'expérience, et j'ai vraiment trouvé que le binding avec python était une galère...

    Il se trouve que par mes études de ce semestre et mon travail (je suis dev pour une SSII à temps partiel) j'ai beaucoup travaillé sur des systèmes multi-agents, et j'ai dans la tête des plans pour créer un jeu (simple, certes) uniquement basé sur ce type de système, donc c'était l'occasion.

    Disons que j'ai réduit la difficulté d'un cran pour l'utilisateur (C++ -> LUA) et à part une interface pousse bouton (dans laquelle il sera difficile de comprendre ce que l'on fait d'après moi), je ne vois pas comment la réduire encore d'autant plus effectivement, il faut certaines notions de maths (espaces vectoriels, trigo de base...) pour arriver à quelque chose.

    Avancement:

    • Models 3D: On peut désormais attribuer un model 3D aux agents (pas encore d'affichage, prise en charge via la lib assimp, le chargement de models 3D n'étant pas le but de ce projet).
    • Architecture: Mise en place d'une architecture la plus simple possible et qui soit OGL 3 compliant => recoder tous les opérateurs de maths, ce genre de choses.
    • Sources: Mon serveur était HS, on vient de le relancer, j'en ai profiter pour tester git qui fonctionne pas mal. Ca change de SVN... Les sources devraient bientôt être dispos, de même qu'un binaire qui vous permettra de faire mumuse avec les agents

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Merci pour les précisions, effectivement l'avantage est non négligeable

    Je trouve ça un peu étrange que tes fonctions vectorielles retournent des copies et pas le vecteur passé en argument, est-ce qu'il y a un intérêt particulier ?

    Un lien sympa sur les perfs en général (et si les tests sont corrects) : http://trac.caspring.org/wiki/LuaPerformance

    Et sinon la bible , les cours et tutoriels C++ : http://cpp.developpez.com/cours/ et la FAQ C++ : http://cpp.developpez.com/faq/
    Ce serait d'ailleurs intéressant de stresser un peu tout ça avec un paquet d'agents. Bonne continuation

Discussions similaires

  1. Programmer un système multi-agent
    Par elalia dans le forum Programmation par agent
    Réponses: 10
    Dernier message: 29/04/2011, 11h22
  2. meilleure documentation sur les plateformes SMA (Système multi agent)
    Par kinfo dans le forum Programmation par agent
    Réponses: 0
    Dernier message: 03/09/2010, 00h17
  3. Plateforme multi-agent en C++
    Par touga dans le forum Intelligence artificielle
    Réponses: 0
    Dernier message: 30/05/2010, 19h28
  4. Création d'un simulateur multi-agent similaire à la plateforme Netlogo
    Par housni dans le forum Programmation par agent
    Réponses: 1
    Dernier message: 09/05/2007, 10h22
  5. Création d'un simulateur multi-agent similaire à la plateforme Netlogo
    Par housni dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 09/05/2007, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo