Sur les BDD : voir pour les BD de règles,faits du côté des BDD logiques (déductives ou pas) ce qui existe. ( http://georges.gardarin.free.fr/ ) Sur le langage scénaristique(LMJ): commencer par donner un maximum d'exemples de définitions de <>, je suis intentionnellement très vague, du genre: Ambre est un chateau: en pierre, grande porte est une entrée située au sud souvent ouverte un jour de fête, Oberon s'y promène rarement la nuit Bon, clairement, il faut pouvoir parser un tel langage : il faut plein d'exemples pour définir les différentes "formes de phrase" nécessaires. (Faut que j’apprenne à formater le texte sur le wiki mais...) Ici, Ambre hérite de Chateau, y'a pas de "un" devant Ambre donc c'est un objet unique. "en" devant une caractéristique ça peut avoir des conséquences sonores? c'est le matériau de construction... "grande porte" c'est le nom d'un objet unique de type "entrée" (il en faut au moins une), "souvent" c'est un modal auquel on peut affecter une probabilité, "ouverte" c'est une caractéristique de l'"entrée", "situé..." etc. "Oberon" est définie dans l'environnement supérieur.. C'est de la vase pour le moment, mais faut bien commencer/avancer. Une fois que ce sera suffisamment clair, on pourra commencer à formaliser les tournures de phrase, récursivement.. Ca? On a des sons, ce sont des patch puredata, exemple une abeille . Puredata est lancé au démarrage du jeu. Si dans notre langage on dit "Abeille = ," puis "En x,y abeille de 8h à 17h" Ce sera compilé, et dans l'arbre seront placés le chemin vers le patch, la position(c'est ce qui permet de ranger de façon triée dans l'arbre), le rayon(ou portée) ainsi que la plage temporelle. Ainsi, lorsque le personnage se balade, à chaque fois qu'il se déplace, on recalcule la feuille(carreau) de l'arbre dans laquelle il se trouve et on regarde dans les voisins (l'arbre étant trié c'est rapide) tout les objets potentiellement audibles. S'il l'est, alors on déclenche l'ouverture du patch s'il ne l'est pas, au bon volume et avec les paramètres aditionnels ayant pus être déclaré au codage (genre l'accent de l'abeille). Comment d'un programme extern à puredata on peut donner lui donner des ordres et lesquels? On peut lui parler en osc. Messages internes : http://puredata.info/community/pdwiki/PdInternalMessages Concernant les messages internes, j'ai testé un truc simpliste : on utilise netreceiver dans pd avec "Sys.command /usr/bin/pdsend ..." dans ocaml, les messages sont routés dans pd, cela permet de créér des objets ou d'ouvrir des patch, de faire des connection. MAIS j en'ai pas trouvé comment détruire les objets donc on fait que pas ouvertures? auquel cas les params sont passés avec des send/receive. Faire comme ça demande un gros boulot du coté d'ocaml de conservation des numéros d'objets send/receive toussa toussa.. plus d'infos : http://www.mail-archive.com/pd-list@iem.at/msg43036.html On va voir que dans les cases voisines, premier filtrage, puis on applique d'autres filtrage en fonction de règles, du moment, etc. Comme il est aussi possible d'avoir des objets/sons se déclenchant indépendamment de la position, on à un autre stockage pour tous les objets/sons de ce type. ?? Portée max nécessaire.