Mise en oeuvre d`une application flash réseau appli flash + serveur

Transcription

Mise en oeuvre d`une application flash réseau appli flash + serveur
Mise en oeuvre d'une application flash réseau
appli flash + serveur xml socket (aquaserver)
A) Introduction
Sur le web, les applications flash ne peuvent pas communiquerdirectement entre 2 clients.
Toutefois, pour pouvoir interragir entre 2 clients flash distincts, il existe plusieurs
techniques.
1) Passer par des pages php appelées depuis les applis flash. Ces pages php (ou autres,
asp, jsp , ...) peuvent alors stocker des infos dans des fichiers textes ou dans des
bases de données (mysql par exemple). Simple mais temps de réponse élévé.
Utilisable pour des appli de chat ou jeux tour par tour par exemple.
2) Utiliser « flash communication server» (et flash remoting sur le client) (nous utiliserons
amfphp à la place de flash communication server). Cette option permet d'interfacer
facilement une appli flash client avec tout type de serveur (mysql, sql server , ...) .
comme la premiere solution, elle a pour inconvenient d'avoir un temps de réponse
assez élevé.
3) Passer par un serveur type xml socket (aquaserver, origano, ...) , chaque appli flash
ouvre alors une connexion avec le serveur. Le serveur renvoyant immédiatement toutes
infos émises par un client aux autres clients. Les temps de réponses sont minimisés ce
qui permet d'envisager du jeu réseaux rapide. Gros inconvénient: il faut pouvoir installer
un serveur xml socket sur le serveur !!!
B) Mise en oeuvre de aquaserver avec notre jeu de vaisseau (version d'essai)
Nous allons ici réaliser notre jeu de vaisseau en version réseau 2 joueurs distant (vous pourrez
l'étendre à un jeu multijoueurs plus nombreux)
•
•
Installez un serveur complet (apache, php, mysql) (utilisez sur vos postes easyphp)
Installez le serveur xml socket aquaserver. (installez au préalable l'environnment java car
aquaserver est développé en java: gros avantage car il tourne sur tout type de serveur)
•
faire une copie du jeu des vaisseaux.
Dans cette copie supprimer la gestion de mouvement du 2ieme vaisseau.
ActionScript sur l'image 1 de l'animation:
var connexion:XMLSocket = new XMLSocket();
connexion.onConnect = function (success)
{
if(success!=1) trace("erreur de connexion");
}
connexion.connect("195.83.5.2",1024); //mettre biensur l'IP de votre aquaserver!
ActionScript à ajouter dans la fonction gérant le mouvement du 1ier faisseau :
...
commande= new XML("<player><pseudo>"+_root.pseudoj1+"</pseudo><x1>"+_root.fusee1._x+"</x1><y1>"+_root.fusee1._y+"</y1></player>");
_root.connexion.send(commande);
...
le résultat de ces quelques:
1)on instancie la classe XMLSocket, cette instance va permettre de dialoguer avec le
serveur aquaserver via des chaines au format xml.
2) on déclare tout de même un petit test de connection (.onConnect(...)
3) on lance la connexion ( .connect(... )
4) on envois régulièrement les coordonnées (formaté XML) de la fusée1 au server
aquaserver. ( .send(... )
reste à récupérer ces informations sur un autre poste dans une application flash
spécifique
créer une petite application flash avec 3 zones de texte dynamique
Pseudo:
X1:
Y1:
Associer respectivement les 3 zones aux variables _root.pseudoad , _root.xad , _root.yad
ActionScript sur l'image 1 de l'animation:
var connexion:XMLSocket = new XMLSocket();
connexion.onConnect = function (success)
{
if(success!=1) trace("erreur de connexion");
}
connexion.connect("195.83.5.2",1024); //mettre biensur l'IP de votre aquaserver!
connexion.onData = function(recup) {
var doc = new XML();
doc.ignoreWhite=true;
//permet ici de ne pas tenir compte des retours chariots envoyés par le serveur
doc.parseXML(recup);
_root.pseudoad=doc.firstChild.childNodes[0].childNodes[0];
// recupere le pseudo du client qui envois les coordonnées
_root.xad=doc.firstChild.childNodes[1].childNodes[0];
//recupere x et y
_root.yad=doc.firstChild.childNodes[2].childNodes[0];
}
mettre les swf de cette application sur le serveur que vous avez créé (votre ip étant ici
195.83.5.2) dans le dossier de publication de vos page web
• depuis d'autres postes, appellez votre application de jeu (http://195.83.5.2/monflash.swf) ainsi
que l'appli d'affichage.
• testez l'ensemble.
•
Remarques:
notons ici que pour générer la commande en xml nous n'avons pas utilisé le parseur xml mais
nous avons directement écrit le code xml. Le parseur a été utilisé uniquement pour récupèrer les
données.
Cet exercice nous a permis d'illustrer l'utilisation du serveur xmlSocket.
Nous allons pouvoir mettre en oeuvre cette technique pour le jeu réseau nécessitant des temps de
réponse cours (jeu de tir).
C) Déplacement simultané des 2 vaisseaux sur les 2 postes différents
Modifier la deuxieme application pour que à la place d'afficher les coordonnées cela modifie les
coordonnées d'un clip pour visionner en temps réel la position du vaisseau du joueur.
D) Le jeu final
Modifier l'application principale du jeu pour que le deuxieme vaisseau se déplace en fonction du
mouvement de l'autre joueur.