Projet ZZ1 : Labyrinthe

Architecture Client - Serveur

Architecture

Une architecture client serveur pour pouvoir faire du multijoueur dans le monde entier :



Diagramme de séquence pour les interractions entre le serveur et un client théotique :



Implémentation réel car plus efficace dans la vrai vie :



Transfère de données

Comment envoyer des données de façon efficace et portable ?

  • Envoie en binaire ?
  • Possible problème avec la lecture des données en fonction du système mais rapide.

  • Envoie en texte ?
  • Portable quelque soit le système mais lent.

Nous avons choisi le mode texte pour pouvoir utiliser le multijoueur sur tous nos PC, en sacrifiant un petit peu de performances.

Attention, nous devons limiter au maximum le nombre d'échange entre les clients et le serveur.

Voici une visualisation de la trame passant du serveur à un client :

La version du serveur :



Les paramétres du labyrinthe (taille, seed, pourcentage Kruskal et le nombre de salles) :



Le client envoyant ses informations au serveur :



Le serveur distribuant ses informations aux clients :



Le serveur

La console du serveur :



Un bout de code interresant :

On attache une fonction à un signal, quand un signal est reçu par le processus, cette fonction est appelée.

Cela permet de ne pas tuer le serveur à chaque fois qu'un client se déconnecte.



Un bout de code interresant 2 :

La boucle principale du serveur, elle accepte les clients et lance un thread pour échanger avec le client en question.