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 :
Comment envoyer des données de façon efficace et portable ?
Possible problème avec la lecture des données en fonction du système mais rapide.
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 :
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.