TD Jeux Pervasifs

Transcription

TD Jeux Pervasifs
TD
Jeux Pervasifs
Université de Nice – Sophia Antipolis
S. Lavirotte
2015-2016
1 Description du Jeu
Nous souhaitons réaliser un embryon de jeu pervasif. Voici quelques explications sur les règles que nous
souhaitons mettre en place.
1.1 Description des principes du jeu
Un joueur dispose d’un certain niveau d’énergie pour se déplacer. En fonction de l’endroit où il se trouve, il
trouvera dans la ville des zones de ravitaillement en énergie ou bien des zones qui ne lui sont pas favorables et qui
lui feront baisser son niveau d’énergie. Ces zones de gain ou de perte d’énergie ne sont pas connues { l’avance et ne
sont pas localisée de manière fixe dans la ville. Ces zones, que nous nommerons « Energizer », dépendent d’autres
joueurs et sont donc dynamiques.
1.2 Conséquences sur la mise en œuvre
Il n’est donc pas possible de faire a priori une cartographie de ces zones et donc de les programmer { l’avance dans
le programme de jeu. Celles-ci devront donc être découvertes dynamiquement lors de l’exécution du jeu et de
modifier le comportement de l’énergie en conséquence. Pour mettre en œuvre un prototype simplifié de ce jeu,
nous allons dans un premier temps développer un service générique correspondant à ces dispositifs de gestion de
l’énergie (positive ou négative), puis dans un deuxième temps, nous étudierons ce qui est nécessaire pour réaliser
une application qui prend en compte dynamiquement des éléments.
2 Développement du Dispositif UPnP Energizer
2.1 Installation des élements nécessaires
2.1.1 Téléchargement de l’environnement de développement SharpDevelop
Nous allons faire notre programme { l’aide du langage de programmation C#. Nous avons donc besoin d’un
environnement de programmation qui soit capable de compiler ce langage. Nous allons installer SharpDevelop :
http://www.sharpdevelop.net/OpenSource/SD/Download/#SharpDevelop3x
2.1.2 Téléchargement des outils nécessaires à la création d’un service UPnP
Pour nous simplifier le développement, nous allons utiliser les outils développés par Intel pour la création de
service UPnP
1. Téléchargez les outils Developper Tools for UPnP Technologies. Ne prenez pas les outils sur le site
d’Intel qui sont des versions plus anciennes. Téléchargez la dernière version sur OpenTools.
http://opentools.homeip.net/DeveloperToolsForUPnPTechnologies.msi?attredirects=0
2.
Lancez l’outil « Device Spy », qui est un point de contrôle universel appelé UCP (Universal Control Point).
Cet outil permet de tester les invocations de commandes et les réceptions d’événements. Lancez le
dispositif UPnP « Network Light ». Vous pouvez vérifier l’apparition et tester sa manipulation depuis
« Device Spy ».
2.1.3 Les outils pour la Technologie UPnP en vidéo
Pendant ce TD, vous êtes encouragés { consulter les vidéos en ligne des tutoriaux pour l’utilisation des outils de
visualisation et les outils de création de services UPnP.
http://opentools.homeip.net/dev-tools-for-upnp/tutorial
Polytech’Nice – Sophia
Université de Nice – Sophia Antipolis
930, Route des Colles – B.P. 145 - 06903 Sophia Antipolis Cedex – France
Tél : +33 (0)4 92 96 50 50 – Fax : +33 (0)4 92 96 50 55
http://www.polytech.unice.fr/
1
TD
Jeux Pervasifs
Université de Nice – Sophia Antipolis
S. Lavirotte
2015-2015
Maintenant que vous avez installé tout les éléments pour développer le premier élément du jeu, nous allons entrer
dans le vif du sujet.
2.2 Dispositif Energizer
Nous allons débuter avec l’utilisation de l’outil Service Author pour décrire les deux services de notre dispositif
UPnP Energizer.
Figure 1: Description du dispositif Energizer
2.2.1 Création du Service Region pour notre dispositif Energizer
Commencez par créer le service Region (voir la description du service du dispositif sur la figure ci-dessus). Ce
service permet de déclarer la portée de la zone géographique de cet élément Energizer.
Vous veillerez à déclarer tout d’abord les 4 variables X, Y, Width et Height en variables événementielles. Bien
entendu, la fonction GetRegion retournera la valeur des 4 paramètres alors que les 3 autres fonctions SetCenter,
SetHW, SetZone permettront de mettre à jour ces données et utiliseront donc les variables déclarées.
Sauvegardez le service que vous venez de créer dans un document XML (Fichier/Enregistrer sous…). Nous
utiliserons ce service un peu plus tard.
2.2.2 Création du Service ValFreq pour notre dispositif Energizer
Vous procéderez de la même manière pour la création du service ValFreq. Les deux variables Freq et Val sont
événementielles. Les fonctions GetFreq et GetVal retournent respectivement la valeur Freq et Val alors que les
fonctions SetFreq et SetVal permettent de définir ou modifier la valeur de ces variables via le paramètre passé
aux fonctions.
De même n’oubliez pas de sauvegarder la définition de votre service avant de quitter l’outil.
2.2.3 Création du Dispositif Energizer par assemblage de Services
Utiliser le programme Device Builder pour créer votre dispositif et y attacher les services que vous venez de créer
(inclure les fichiers générés par le Service Author). A l’aide de la vidéo, vous veillerez { ne pas oublier de spécifier
les bons paramètres pour votre dispositif. Vous veillerez aussi à spécifier votre nom dans le champ
« Manufacturer », ce qui vous permettra plus tard de retrouver votre service parmi tous ceux qui fonctionnent.
Polytech’Nice – Sophia
Université de Nice – Sophia Antipolis
930, Route des Colles – B.P. 145 - 06903 Sophia Antipolis Cedex – France
Tél : +33 (0)4 92 96 50 50 – Fax : +33 (0)4 92 96 50 55
http://www.polytech.unice.fr/
2
TD
Jeux Pervasifs
Université de Nice – Sophia Antipolis
S. Lavirotte
2015-2016
2.2.4 Génération du code pour le dispositif Energizer
Device Builder vous permet de générer le squelette de code correspondant à votre dispositif « Energizer ». Vous
veillerez { choisir la génération de code pour l’environnement .Net C#. Vous modifierez le namespace du code
généré: Energizer.
2.3 Implémentation du comportement du Dispositif
Le générateur de code a créé plusieurs classes. Etudier plus particulièrement le contenu du fichier
SampleDevice.cs (code correspondant au dispositif) et les deux fichiers créés pour chacun des services
(DvRegion.cs et DvFreqVal.cs).
Modifier le code pour implémenter les actions associées à votre dispositif. De simples messages dans la console
textes permettront de vérifier le comportement correct de votre dispositif.
Le comportement à spécifier est le suivant : toutes les Freq millisecondes, la valeur Val doit être envoyée. Comme
nous l’avons vu, UPnP ne permet d’émettre sous forme d’événement la valeur d’une variable que si sa valeur
change. Il faudra donc, { l’aide d’un Timer, modifier la valeur Val toutes les Freq millisecondes pour remettre la
valeur à 0 avant de remettre la valeur à émettre.
Voici quelques éléments à utiliser pour implémenter ce comportement :
using System.Threading;
timer = new Timer(new TimerCallback(ValFreq_Emit));
private void ValFreq_Emit(object state) {
… // récupération de la valeur, passage à 0, remettre la valeur dans la variable
}
Quand la valeur de la fréquence change (SetFreq), il faudra modifier la valeur du timer :
timer.Change(int dueTime, int period)
 dueTime : délai d’attente en millisecondes avant l’appel de la méthode de rappel. Timeout.Infinite permet
d’arrêter le timer et 0 permet de le relancer immédiatement.
 period : intervalle de temps, en millisecondes, entre les appels de la méthode de rappel spécifiée.
Pensez bien à vérifier la valeur Freq passée en paramètre à la fonction SetFreq. Si la valeur est positive, modifier le
timer, si elle est nulle, arrêter le timer et si elle est négative, ne rien faire.
3 Utilisation des différents dispositifs UPnP dynamiquement
Maintenant que nous disposons d’autant de dispositifs Energizer que d’étudiants qui ont correctement réalisé la
première partie de ce TD, nous allons tester le prototype de jeu { l’aide de WComp. Pour définir une nouvelle zone
Energizer, lancez votre service et configurerez la valeur d’énergie (positive ou négative) et la fréquence { laquelle
elle est envoyée. Le lancement de ce service est automatiquement détecté et relié { la barre d’énergie du joueur.
Nous avons donc spécifié un service paramétrable et réutilisable qui est automatiquement détecté par l’application
de jeu qui gère l’énergie du joueur. Nous n’avons donc pas spécifié dans le jeu, ni la position, ni le nombre, ni le
paramétrage de la zone d’énergie Energizer. Ce protype de jeu pervasif réagit donc bien automatiquement à son
environnement.
Polytech’Nice – Sophia
Université de Nice – Sophia Antipolis
930, Route des Colles – B.P. 145 - 06903 Sophia Antipolis Cedex – France
Tél : +33 (0)4 92 96 50 50 – Fax : +33 (0)4 92 96 50 55
http://www.polytech.unice.fr/
3