Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:gdevelop-osc:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:gdevelop-osc:accueil [2019/07/15 17:53]
laurent [Matériaux]
projets:gdevelop-osc:accueil [2019/07/15 19:10] (Version actuelle)
laurent [Principes de fonctionnement]
Ligne 1: Ligne 1:
-====== Titre du projet ======+====== Gdevelop-OSC ======
   * Porteur du projet : Laurent   * Porteur du projet : Laurent
   * Date : 15/07/2019   * Date : 15/07/2019
   * Licence : libre !   * Licence : libre !
-  * Contexte :  +  * Contexte : oui 
-  * Fichiers : lien +  * Fichiers : {{ :projets:gdevelop-osc:exgdevelop.zip |exemple Gdevelop (html5)}} {{ :projets:gdevelop-osc:projetgdevelop.zip |projet Gdevelop}}
-  * Lien lien vers un site éventuellement+
  
  
Ligne 16: Ligne 15:
  
 ===== Technos ===== ===== Technos =====
-Pour pouvoir répondre à une requête GET ou POST envoyée par Gdevelop, il faut utiliser un serveur web. L'utilisation du module python [[https://pypi.org/project/Flask/|Flask]] permet de créer un serveur web en quelques lignes de codes qui répondra aux requêtes. L'OSC sera géré par [[http://das.nasophon.de/pyliblo/|pyLiblo]] qui offre des bindings python pour la bibliothèque liblo originellement écrite en C et particulièrement véloce. Enfin, une extension de flask, [[https://flask-cors.readthedocs.io/en/latest/|Flask-CORS]] ajoutera les en-têtes CORS (Cross Origin Resource Sharing) permettant la communication entre le jeu Gdevelop et le serveur web local.+Pour pouvoir répondre à une requête GET ou POST envoyée par Gdevelop, il faut utiliser un serveur web. L'utilisation du module python [[https://pypi.org/project/Flask/|Flask]] permet de créer un serveur web en quelques lignes de codes qui répondra aux requêtes. L'OSC sera géré par [[http://das.nasophon.de/pyliblo/|pyLiblo]] qui offre des bindings python pour la bibliothèque //liblo// originellement écrite en C et particulièrement véloce. Enfin, une extension de flask, [[https://flask-cors.readthedocs.io/en/latest/|Flask-CORS]] ajoutera les en-têtes CORS (//Cross Origin Resource Sharing//) permettant la communication entre le jeu Gdevelop et le serveur web local.
  
 Côté hardware, n'importe quel ordinateur muni d'une carte réseau fera l'affaire (Raspberry Pi compris), tous les logiciels et modules utilisés étant multiplateforme. Côté hardware, n'importe quel ordinateur muni d'une carte réseau fera l'affaire (Raspberry Pi compris), tous les logiciels et modules utilisés étant multiplateforme.
  
-===== Installation ===== 
-Sous Linux, l'installation des dépendances peut se faire 
-===== Tutoriel ===== 
-Photos ou guide pas à pas 
  
-===== Photos ===== +===== Principes de fonctionnement ===== 
-Autres photosgalerie, ...+Le serveur web n'est accessible en local et utilise un port défini dans le code (par défaut le port 5000). Il doit donc tourner sur la même machine que Gdevelop. 
 +Pour éviter de devoir définir au préalable dans le code toutes les adresses OSC utiliséesune variable globale stocke dans le code chaque adresse OSC reçue ainsi que sa dernière valeur et crée automatiquement une adresse web correspondante. Par exemplela réception de "/monOSC" créera automatiquement l'adresse web http://localhost:5000/monOSC qui répondra à toute requête GET adressée par la dernière valeur reçue ainsi que le code 200. 
 +Dans le cas où plusieurs données sont empaquetées dans le même message OSC, des adresses web seront automatiquement créées et numérotées (ex : "/monOSC1", "/monOSC2"...) pour chaque donnée.
  
 +Pour récupérer les données dans Gdevelop il suffit donc de créer un évènement //Send request to webpage// avec "http://localhost:5000" comme //host//, "/monOSC" dans le //path to page// et créer une variable de scène dans //store the response for this variable// (voir l'exemple) Cette variable sera mise à jour si de nouvelles données sont reçues.
 +
 +En cas de problème, il peut être utile d'accéder au serveur web directement depuis son navigateur pour vérifier que les données sont correctement reçues et mises à jour http://localhost:5000/monOSC Le script python donne également quelques informations de déboguage sur sa sortie console.
 +
 +===== code =====
 +<code python>
 +#!/usr/bin/env python
 +# -*- coding: utf-8 -*-
 +
 +from flask import Flask
 +from flask_cors import CORS # Cross Origin Resource Sharing, needed by gdevelop
 +import liblo
 +
 +OSClisteningPort = 9002
 +
 +app = Flask(__name__)
 +CORS(app)
 +database = {}
 +
 +@app.route('/<name>', methods=['GET'])
 +def variable(name):
 +    global database
 +    name = "/" + name
 +    if name not in database : 
 +        print(name,"not found in db, setting to 0")
 +        database.update({name:0})
 +    try : return str(database[name])
 +    except Exception as e : return str(e) # data couldnt be stringified
 +    
 +def OSCunknownAddress(add, data, tags, source):
 +    global database
 +    if len(data) == 1 : 
 +        database.update({add : data})
 +        if add not in database : print ("adding", data, "to database")
 +    else :
 +        for i in range(len(data)) : 
 +            address = add + str(i+1)
 +            if address not in database : print ("adding", address, "to database")
 +            database.update({address : data[i]})
 +
 +if __name__ == '__main__':
 +   oscServer = liblo.ServerThread(OSClisteningPort)
 +   oscServer.add_method(None,None, OSCunknownAddress)
 +   oscServer.start()
 +   app.run(host='localhost', port=5000, threaded=True)
 +</code>
 +
 +===== exemple =====
 +L'exemple fourni permet de faire tourner un smiley à partir de l'orientation d'un téléphone. Il nécessite l'application libre et gratuite [[https://sensors2.org/osc/|sensors2OSC]] disponible sous Android depuis [[https://f-droid.org/|fDroid]] par exemple.
 +Le paramètre orientation du téléphone envoie trois données, respectivement l'azimuth, le roulis et le tangage (en degrés). On utilise donc l'adresse http://localhost:5000/orientation1 pour lier l'azimuth du téléphone à la rotation du smiley dans gdevelop. L'IP de la machine qui fait tourner gdevelop et le serveur est entrée dans les options de sensors2OSC ainsi que le port d'écoute par défaut du serveur (9002). Une fois les cases //orientation// et //envoyer les données// cochées, on peut voir l'azimuth du téléphone depuis le pc en naviguant sur  http://localhost:5000/orientation1. Une fois Gdevelop lançé, le smiley suit l'orientation du téléphone.
 +
 +<blockquote>**A noter** : comme Gdevelop stocke les chemins absolus vers les contenus, il ne trouvera pas la seule image du projet (fournie dans le zip) Il faudra lui en indiquer manuellement le chemin</blockquote>
/home/resonancg/www/wiki/data/attic/projets/gdevelop-osc/accueil.1563206032.txt.gz · Dernière modification: 2019/07/15 17:53 de laurent