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