Documentation du serveur de jeu - Ensiwiki
Transcription
Documentation du serveur de jeu - Ensiwiki
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Documentation du serveur de jeu Introduction Ce document décrit le rôle de notre serveur de jeu et les fonctionnalités qu’il fournit à l’application Android. Nous détaillerons aussi l’architecture et les services fournis par tous les paquetages du serveur. Enfin, nous décrirons la base de données que le serveur interroge. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 1/5 ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Table des matières Introduction ..................................................................................................................................... 1 Description du serveur de jeu ......................................................................................................... 3 Description de l’architecture du serveur ......................................................................................... 3 Schéma des paquetages du serveur .......................................................................................... 3 Description et services fournis par les paquetages .................................................................... 3 Paquetage server .................................................................................................................... 3 Paquetage GGPpacket ........................................................................................................... 4 Paquetage game ..................................................................................................................... 4 Paquetage dataBase ............................................................................................................... 4 Détail de l’architecture de la BD ..................................................................................................... 5 Diagramme de Classes ............................................................................................................... 5 Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 2/5 ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Description du serveur de jeu Le serveur de jeu permet de faire l’interface entre les clients et la base de données où sont enregistrées toutes les données relatives au jeu. Ce serveur permet aussi de faire le traitement des requêtes des joueurs et de leurs actions. Le serveur écoute sur un port spécifique et attend les connexions. À chaque nouvelle connexion, il crée un thread indépendant qui va traiter la requête et renvoyer la réponse. Les paquets sont envoyés grâce au protocole de communication Geo Game Protocol (GGP), un protocole, développé par nos soins, facilitant la communication de données de localisation ainsi que la communication d’action interactive des joueurs. Les traitements des requêtes effectués par les threads du serveur permettent de traiter les différents types de paquets du protocole GGP. Ils permettent aussi de lancer les algorithmes du jeu, notamment celui du combat. Description de l’architecture du serveur Schéma des paquetages du serveur Description et services fournis par les paquetages Paquetage server Ce paquetage se compose de plusieurs classes : ● la classe ServerMain qui contient le main du serveur et permet la création du serveur ainsi que sa mise en écoute sur une socket. ● la classe ServerThread qui est appelée par ServerMain à chaque nouvelle connexion au serveur. Cette classe permet la réception des requêtes, l’appel à leurs traitements ainsi que le renvoi de la réponse au client. ● La classe PacketProcessing qui a pour seul but d’appeler la bonne fonction de traitement pour un type de paquet reçu. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 3/5 ENSIMAG 2A ● Projet de spécialité jeudi 14 juin 2012 La classe ThreadDeconnection qui est lancée au démarrage du serveur et qui permet de détecter les joueurs inactifs et de les déconnecter du serveur. Ce paquetage contient aussi une interface, l’interface RequestProcessing. Elle permet de définir les signatures des fonctions de traitement des paquets qui sont appelées par PacketProcessing. Cette interface fait la liaison entre la partie communication du serveur et la partie traitement du jeu. Elle permet ainsi d’implémenter facilement un autre jeu ou une autre application basée sur les même principes tout en gardant la base commune. Paquetage GGPpacket Ce paquetage implémente le protocole GGP, créé au cours de notre projet. Pour voir les spécifications détaillés de GGP, se référer à la documentation détaillée du protocole GGP. Ce paquetage définit les structures de données associées au paquet GGP (en-tête, données, …). Il définit également la réception et l’envoi des messages dans la socket créée avec le client. Sous paquetage: Création Le paquetage Création, permet de convertir un message de type Packet (avec les structure de données définies dans GGPpacket) en un message de type String. Cette conversion est nécessaire pour envoyer un message au travers de la socket. Sous paquetage: Validation Le paquetage Création permet de convertir un message de type String en un message de type Packet (avec les structures de données définies dans GGPpacket). Cette conversion est nécessaire lors de la réception d’un message pour pouvoir faciliter les traitements ultérieurs sur le paquet. Sous paquetage: Exception Le paquetage Exception définit les différentes exceptions que le paquetage GGPpacket peut lever. Elles sont liées à l’utilisation d’un message qui ne respecte pas le protocole GGP (voir la documentation du protocole GGP pour plus d’information). Paquetage game Ce paquetage contient l’implémentation de l’interface RequestProcessing, appelée GameRequestProcessing et permet ainsi de traiter les différents paquets reçus suivant notre spécification pour le jeu. Le paquetage game contient aussi une classe PlayProcessing qui contient des traitements spécifiques et complètement dépendants du jeu comme la gestion de l’achat/vente d’objets, les combats ou encore le stockage des messages et combats en attente de transmission au destinataire. Paquetage dataBase Le paquetage dataBase fournit toutes les interactions avec la Base de Donnée. La classe AbstractDB permet d’initialiser et de créer la connexion avec la base de donnée mysql. La classe JoueurDB assure l’interaction avec la table Joueur de la BD. Les principales méthodes sont : ● créer un nouveau joueur ● mettre à jour de la position d’un joueur Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 4/5 ENSIMAG 2A ● ● ● ● Projet de spécialité jeudi 14 juin 2012 récupérer le pseudo, le mot de passe et la position d’un joueur mettre en ligne / hors ligne un joueur avoir les objets d’un joueur connaître les joueurs disponibles dans la zone d’interaction d’un joueur La classe ObjetDB assure l’interaction avec la table Objet de la BD. Les principales méthodes sont : ● créer un nouvel objet ● obtenir les informations de l’objet (prix, valeur, type, nom, …) La classe LieuDB assure l’interaction avec la table Lieu de la BD. Les principales méthodes sont : ● créer un nouveau lieu ● connaître les objets disponibles du lieu ● avoir la position géographique du lieu Détail de l’architecture de la BD Diagramme de Classes Ceci est le diagramme de classe de notre base de donnée. Il est composé de trois éléments principaux: joueur, lieux et objet. Ils représentent les différentes composants de notre jeu. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 5/5