Projet de programmation réseau avec Java

POL

Play On Line


Ce sujet peut être enrichi ou complété. Il est accessible à l'adresse http://igm.univ-mlv.fr/~duris/TTT/pol.html.

Le but du projet

Le but de ce projet est de fournir un couple de programmes, un client et un serveur, permettant de simuler des « jeux en lignes » très simples. L'idée est basée sur le principe de questions basiques, posées aux clients, auxquelles ceux-ci doivent répondre pour essayer de gagner. Voici les principes de base de ce jeu :

Pour les bases de données de questions et de réponses, vous pourrez avantageusement imaginer un format de fichier en mode texte, facilement éditable, que vous pourrez remplir et que le serveur pourra "charger" en mémoire afin d'en disposer pour les proposer aux clients.

La mise en œuvre

Pour réaliser ces programmes, vous devrez utiliser les protocoles TCP et UDP, y compris en multicast pour le mode LAN. Dans ce dernier cas, vous devrez utiliser des adresses de multicast (classe D) : il est important, pour ne pas perturber le réseau de l'université, de ne pas utiliser des adresses "de bord" comme 224.0.0.1 par exemple. Utilisez plutôt des adresses de milieu de plage, comme 231.110.75.40 par exemple.

Même si vous êtes tentés par le développement d'interfaces graphiques utilisateurs pour les clients, afin de rendre leur utilisation plus conviviale, cela vous est fortement déconseillé dans le cadre de ce projet. Ce qui doit être mis en œuvre ici est exclusivement la partie « réseau » et protocolaire, ainsi que la gestion des données et des ressources. Le mode texte dans une console peut facilement suffire à l'implantation de vos programmes.

La base et les options

Les fonctionalités de base des programmes à réaliser sont volontairement assez simples et sont surtout graduelles.

  1. Le mode SOLO est extrêmement basique et peut être très rapidement réalisé.
  2. Le mode CROWD demande de mettre en œuvre plusieurs threads pour gérer les différentes connexions des clients, et également l'accès concurrent à une même variable (le compteur de bonne réponses), étant donnée une question. De plus, plusieurs questions pouvant être "en cours" en même temps, cela ajoute un niveau de difficulté qu'il faudra prendre en compte dans l'architecture de votre implantation.
  3. Dans le mode LAN, il vous faut un peu plus réfléchir à la partie réseau, à l'égibilité d'un client pour passer dans ce mode, à la négociation qu'il devra mener avec le client, etc. Pour cela, vous devez donc d'avantage réfléchir à la partie réseau et afiner le protocole de mise en œuvre du jeu.
  4. Enfin, il faut que le "packaging" de vos applications, du côté serveur comme du côté client, permette d'utiliser indifférement les différents modes (via des options de lancement ou des choix interactifs proposés à l'utilisateur). En effet, il n'est pas envisageable d'avoir 3 programmes clients différents et 3 programmes serveurs différents pour les 3 modes. Vous devrez donc au maximum optimiser votre conception de l'architecture des applications pour qu'elle supporte facilement les 3 modes.

Lorsque les spécifications de bases seront réalisées et fonctionnelles, on attend de vous que vous apportiez des améliorations aux programmes. Voici quelques pistes d'options que vous pourrez tenter d'apporter aux programmes de base.


Ce que vous devez rendre

Ce projet est à réaliser en binôme (deux personnes). Il doit être rendu au plus tard le lundi 26 mars 2007 à 10h00 sous la forme d'un fichier d'archive ZIP (format obligatoire) contenant:

Le fichier d'archive compressé (ZIP) contenant ces différents documents sera envoyé par mail, à partir de votre adresse mail @etudiant.univ-mlv.fr à Etienne.Duris@univ-mlv.fr au plus tard le 26/03/2007 (la non réception de mails envoyés depuis des comptes personnels est fréquente et ne pourra souffir aucune contestation).


http://www-igm.univ-mlv.fr/~duris/TTT/ - © Université de Marne-La-Vallée - Février 2007