Previous Up

3  Précisions

3.1  Organisation modulaire

Il est demandé une arborescence modulaire pour votre projet. Les trois bibliothèques graphique, réseau et flux d’exécution doivent avoir leur propre répertoire ainsi que les deux exécutables, serveur de jeu et client graphique. Le projet doit pouvoir être compilé par la simple commande make tapée dans le répertoire principal du projet. Le Makefile principal doit aussi implanter la cible clean qui permet de nettoyer l’arborescence des fichiers objets, bibliothèques et exécutables.

Les bibliothèques doivent respecter les paradigmes de généricité et d’encapsulation :

Ainsi, dans votre cas, la bibliothèque réseau doit totalement occulter l’utilisation de la bibliothèque socket, la bibliothèque flux d’exécution doit totalement occulter l’utilisation des pthreads et des pthreads_mutex et, enfin, la bibliothèque graphique doit totalement occulter l’utilisation de la bibiliothèque SDL2.

3.2  Structures de données

Les structures de données sont principalement utilisées par le serveur de jeu. Ce dernier doit stocker :

En cours de jeu, les 3 dernières structures de données sont fusionnées pour obtenir une liste d’éléments 3D pouvant être des rectangles ou des sphères (globules et boules d’énergie). Pour chaque joueur cette scène est traitée avant que le résultat soit envoyé en UDP au dit client :

Le client n’a besoin que de la structure des éléments en 2D pour les récupérer dans le paquet UDP et les afficher.

3.3  Protocoles

Deux protocoles sont à concevoir et implémenter. Un protocole en mode connecté et un protocole en mode non connecté. Vous devez vous concerter avec les autres binômes pour que ces protocoles soient compatibles.

Le protocole en mode connecté va permettre de gérer les phases du jeu. Ce protocole doit fonctionner en mode ASCII avec un code par commande sur quelques caractères suivis d’éventuels arguments (e.g. JOIN <pseudo>).

Ce protocole doit permettre :

Lors de l’implantation de ce protocole un grand soin sera porté à la gestion des connexions et en particulier au traitement propre de la déconnexion non annoncée d’un client ou du serveur.

Le protocole en mode non connecté gère le transfert d’informations durant un jeu :

Les deux protocoles sont liés par l’identifiant qui permet de reconnaître le client dans les paquets UDP reçus par le serveur et qui permet au serveur de connaître comment contacter le client.

3.4  Travail à effectuer

Si vous ne voyez pas par où commencer voici quelques étapes que vous pourriez suivre :


Previous Up