README.md 3.7 KB

Projet Reseaux Master 1 Artois 2018-2019

Brandao Arthur & Maxence Bacquet

Utilisation

Pour lancer le serveur il suffit de le compiler avec make (il est possible de recréer les dépendances avec make depend). Pour lancer le serveur il suffit d'executer le fichier main. Pour couper le serveur Ctrl+C.

Pour lancer le client il suffit d'executer le fichier start.sh. Pour la compilation ou il faut inclure la bibliothèque json.jar présente dans le dossier lib. De même pour la bonne execution de Client.jar (lancé par start.sh) le dossier lib contenant la bibliothèque json.jar doit être dans le même dossier je l'archive java.

Commandes

Menu

  • Z : Menu précédent
  • S : Menu suivant
  • Entrée : Valider

Jeu

  • Z : Vers le haut
  • Q : Vers la gauche
  • S : Vers le bas
  • D : Vers la droite
  • I : Regarder vers le haut
  • J : Regarder vers la droites
  • K : Regarder vers la bas
  • L : Regarder vers la droite
  • A : Poser une bombe
  • E : Poser une mine
  • R : Poser une remote
  • F : Activer remote
  • Echap : Retour vers le menu

Le BomberStudent pose les bombes vers la où il regarde

Fonctionnement réseaux

Pour le réseau notre projet utilise un serveur UDP et deux serveurs TCP. Le serveur UDP permet le broadcast pour repèrer les serveurs disponibles. Le 1er serveur TCP permet la communication entre le client et le serveur, c'est pat celui-ci que passe toutes les requetes du client au serveur (exemple : déplacement du personnage), et c'est par cette connexion que le serveur y répond (exemple : déplacement autorisé ou non). La seconde connexion permet la communication entre le serveur et le client, il est utilisé par le serveur pour notifier un evenement au client (exemple: explosion d'une bombe), le serveur n'attend pas de réponse du client.

Fonctionnement serveur

Le serveur possède 3 Threads (le principal, le serveur UDP, le serveur TCP) plus un Thread par client. Le serveur attend la reception d'une requete client, la parse et regarde si il possede un handler pour l'action demandée. Si il y en a un alors il l'execute sinon il renvoi un message d'erreur. Le serveur posséde aussi une fonction delay qui va créer un thread attedre X secondes et appeler un callback, elle est utilisée pour gérer le temps d'explosion des bombes et de l'invicibilité.

Fonctionnement client

Le client utilise 3 Threads, le thread principale qui lance le jeu, le thread d'attente de notification du serveur (attend en boucle la prochaine notification du serveur) et le thread d'affichage (qui utilise JavaFX). L'affichage est fait en utilisant la webview de JavaFX pour afficher du HTML. Le reseau est géré par la class BomberStudentClient qui s'occupe de formatter les requetes et d'utiliser le client TCP. Pour les notifications du serveur c'est la class BomberStudentRequest (qui est lancé dans un thread par BomberStudentClient) qui les receptionne et qui regarde si le client à un handler associé à appeler.

Bugs connus

Serveur

  • Parfois lors d'une explosion en chaine de bombe le serveur crash

Client

  • Rarement lors du ramassage d'un objet le client crash
  • Lors d'un game over suite à la pression d'une touche pour revenir dans le menu l'ecran de jeu se reaffiche, il est necessaire de bouger dans le menu (Z/S) pour actualiser l'affichage et voir le menu.
  • Lorsque l'on selectionne rejoindre alors qu'il n'exsite aucune partie l'ecran devient blanc, il est necessaire de bouger dans le menu (Z/S) pour actualiser l'affichage et revoir le menu.
  • Lors d'une explosion en chaine de bombe il reste parfois quelques cases qui garde le sprite de l'explosion, il suffir de marcher dessus pour les faires redevenir normal