code:orga
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | code:orga [2024/02/09 17:26] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Organisation des codes et des données ====== | ||
+ | * du code [[https:// | ||
+ | * début de {{: | ||
+ | il existe | ||
+ | |||
+ | * sur le reseau une BD mondes ou tout les objets qui existent sont référencés | ||
+ | * sur le reseau une BD géographique qui défini l' | ||
+ | * locale une BD géographique , monde des faits , jeu en cours présente sur le joueur | ||
+ | * locale une BD feuille de perso , carac etc et objets | ||
+ | * locale une BD connaissance du perso ( c'est un peu aussi l' | ||
+ | * locale dupliquée au depart une BD de regles | ||
+ | * locale puis sur le reseau des fichiers trace et log du systeme de jeu pour les MJ (ou par extraction, la communication inter-joueur) | ||
+ | |||
+ | différents modules en daemon: | ||
+ | * **ZOU** : | ||
+ | * interroge le GPS et le compas (OSC) | ||
+ | * lit dans une base geo ( base locale ) | ||
+ | * filtre les données présentes | ||
+ | * no de jeu correspondant ( on peut gerer plusieurs jeux) | ||
+ | * destinataire ( le destinataire peut etre un groupe, un pnj , gérés aussi par la machine ) | ||
+ | * extrait un script | ||
+ | * scripte pour le système (shell) | ||
+ | * scripte pour le jeu, commandes MJ, maj PNJ et objets non joeur | ||
+ | * événement pour le jouer | ||
+ | * discute avec YAKA | ||
+ | * trace pour Mouche (log systeme, historiques perso et traces au MJ) | ||
+ | |||
+ | Questions. faire la BD avec OpenStreetMap ou autre ? Informe6/7 ? | ||
+ | * **TOUÇA** [[: | ||
+ | |||
+ | * **YAKA** [[: | ||
+ | * gère les evenements pour jack et SONIC | ||
+ | * ordonnance les ordres à SONIC | ||
+ | * **Chronos** gére les actions temporelles mises en place ou non par Zou | ||
+ | * se base sur cron et at | ||
+ | * gere une priorité | ||
+ | * scriptes | ||
+ | |||
+ | * **KOI** [[: | ||
+ | | ||
+ | * interroge une BD de connaissance / règle et en déduit une action | ||
+ | * maj perso | ||
+ | * actionne un événement en le transmettant à ZOU | ||
+ | * modifie quelque chose | ||
+ | * **TEKI** [[: | ||
+ | * routage et proxy des paquets OSC | ||
+ | * établi les connexions entre les appli | ||
+ | |||
+ | * **Mouche(s) ** ( chacun pourrait avoir cette fonction de log ) | ||
+ | * trace et met en forme ce qui se passe | ||
+ | * le poste au MJ | ||
+ | * le stock en historique | ||
+ | |||
+ | * **Perso** Gestion du personnage | ||
+ | * gère une feuille de perso, interroge et la lit | ||
+ | * carac | ||
+ | * conpétences/ | ||
+ | * liste d' | ||
+ | * gere une interaction | ||
+ | * question et commande vocale? / boutons | ||
+ | * action locale, modif param | ||
+ | * **action** | ||
+ | * **VOX** [[: | ||
+ | * stream la voix avec certains param | ||
+ | * envoi à TAKA l'odre d' | ||
+ | * **SONIC** [[: | ||
+ | * écoute en OSC | ||
+ | * reçoit les ordres de lecture sonore | ||
+ | * à lire en directe , ambiance lointaine | ||
+ | * à spatialiser | ||
+ | * en synthèse vocale : **vox** | ||
+ | * **MANO** interfaces les interfaces, boutons, afficheurs etc | ||
+ | * ouvre ou ferme, gère des flux OSC | ||
+ | * connecte les interfaces aux flux | ||
+ | * **compas2OSC** [[: | ||
+ | * **gps2OSC** [[: | ||
+ | |||
+ | |||
+ | * lancement lance le jeu | ||
+ | * position-init | ||
+ | * jackd | ||
+ | * | ||
+ | * position-init initialise gps et compas et lance compas2OSC.py et gps2OSC.py | ||
+ | |||
+ | |||
+ | ===== Messages OSC ===== | ||
+ | **port 9001** | ||
+ | * /pos/gps/ latitude longitude altitude erreur | ||
+ | * latitude | ||
+ | * longitude décimale ex -2.212748 | ||
+ | * altitude en m | ||
+ | * erreur en m (err latitude) | ||
+ | * / | ||
+ | |||
+ | ex : dump_osc 9001 | ||
+ | / | ||
+ | / | ||
+ | |||
+ | |||
+ | |||
+ | ===== Un objet sonore: ===== | ||
+ | |||
+ | * ID | ||
+ | * type | ||
+ | * fichier son à spacialiser une fois | ||
+ | * son en déplacement | ||
+ | * texte à causer entrée par stream / ou afficher | ||
+ | * son directe sans spacialiser | ||
+ | * priorité , kill eventuel | ||
+ | * nom de fichier (mono) | ||
+ | * volume relatif | ||
+ | * position angulaire | ||
+ | * distance ( si distance= -1 > lecture directe hors VBAP ) | ||
+ | * boucle de lecture 0=toujours | ||
+ | * durée max | ||
+ | * chemin? ( suite de position , vitesse de transition ) | ||
+ | |||
+ | * **vox** patch de synthèse vocale stream | ||
+ | * nom du texte a lire | ||
+ | * nom de la voix | ||
+ | * paramètres de lecture ( mbrola ou picotts ) | ||
+ | * filtre ladspa supplémentaire | ||
+ | * boucle | ||
+ | * durée max | ||
+ | |||
+ | |||
+ | |||
+ | ===== notes ===== | ||
+ | |||
+ | recup http:// | ||
+ | |||
+ | cf aussi http:// | ||
+ | |||
+ | Genre d' | ||
+ | |||
+ | //en x,y entrer dans une tres grande piece aux murs mates// : un filtre d' | ||
+ | |||
+ | //en x,y Raoul LeBegue raconte en suivant : " | ||
+ | * le texte " | ||
+ | * 2 fois. | ||
+ | * Il est normalement à coté de façon fixe, posé dans l' | ||
+ | * Puis le meme perso, | ||
+ | * en écoute posé au sol, se deplace vers le nord | ||
+ | * et en lisant le texte " | ||
+ | * et le scripte corne_de_brune_batiste est déclenché | ||
+ | |||
+ | //à 15h12 si souffle_de_Jean.inventaire alors Cloches_bleu au loin et execute script1.souffle_de_Jean | ||
+ | + en x2, y si Abeille_Jaune2.inventaire alors carac2.Joueur=-1 et entendre Abeille_petite tourne 0 pendant 10 hasard, | ||
+ | * le progamme chronos(cron ici) à déclenche le scripte, test de la presence dans le fichier invenaire de Abeille_Jaune2, | ||
+ | * si oui, le programme Perso met a jour une carac, ce qui entraine peut etre une action, | ||
+ | * et le son Abeille_petite est lu par Sonneur, il crée une instance de lecture avec les parametres donnés. | ||
+ | |||
+ | [[code: | ||
+ | |||
+ | ==== Codage avec une base de fait ==== | ||
+ | en supplément du déclenchement directe d’événement autonome, on peut définir des faits exploitables. Cela permet de définir des PNJ légés, (ce ne sont pas des programmes) | ||
+ | |||
+ | * rue-du-bac = x, | ||
+ | * promenade-de-Marcel-22 = x, | ||
+ | * à 15h Marcel-22 bouge sur promenade-de-Marcel-22 a 10 min, rencontre forte | ||
+ | * a 15 le perso Marcel-22 commence sur le chemin promenade-de-Marcel-22 | ||
+ | * il avance de 10 m en 10 min ( en tenant compte du chemin promenade-de-Marcel-22 ) | ||
+ | * la probabilité de le croiser est forte (4/5) | ||
+ | * une rencontre se fait a 10 min et a 10 m prêt | ||
+ | |||
+ | delcenchement a partir de l' | ||
+ | |||
+ | ==== langages MJ(Prise en main FLEX/BISON) ==== | ||
+ | Zoulang: | ||
+ | |||
+ | un parser bison + un scanner flex (tout dans le namespace Zoulang): | ||
+ | C'est dans ce langage qu'on fait la description de scenes (je commence a faire ça): | ||
+ | * "Jouer SYMBOL" | ||
+ | * " | ||
+ | * "si QUELQUE_CHOSE alors AUTRE_CHOSE" | ||
+ | * ... | ||
+ | |||
+ | 2 modes de fonctionnements : | ||
+ | * normal : c'est lié statiquement a zou et utilisé par lui dans ce mode. | ||
+ | * test : c'est utilisé pas MJlang (en dessous) quand c'est une description de scène qu'on lui passe | ||
+ | |||
+ | MJlang: | ||
+ | |||
+ | un parser bison + un scanner flex (tout dans le namespace MJlang) : | ||
+ | C'est dans ce langage que le MJ travail, ça range dans la BDD les objets, en collant verbatim les scènes qui seront interpretés par zou (mais ce qui peut être testé l'est : références a des symboles existants, grammaire correcte). | ||
+ | |||
+ | * SYMBOL est zone : \[(x1, | ||
+ | * SYMBOL est une scene : { <les actions (voir Zoulang)> | ||
+ | * SYMBOL est un fichier sonore. | ||
+ | * ... | ||
+ | |||
+ | Les Makefile.am et le configure.ac sont à regarder. (marchent) | ||
+ | |||
+ | Quand on voudra une grammaire plus riche il faudra transformer celle de zoulang en parser de " | ||
+ | |||
+ | EDIT: | ||
+ | Les 2 parseurs sont maintenant en mode C++, ce sont donc des parseurs réentrant : 2 triplets Scanner-Driver-Parser. L' | ||
+ | |||
+ | [[code: | ||
+ | |||
+ | [[code: |