Lancer l’application serveur de LabPyrinthe sur une machine. Une simple console apparait:

serveur init

En bas s’affiche l’adresse et le statut de connexion du serveur, en l’occurrence

  • 192.168.0.4:10325 pour l’adresse au format ip:port
  • Connecté pour le statut

L’ip est déterminée par le réseau, le port est ici défini dans le fichier de configuration texte du jeu (tcp_config.txt de raccourci Config dans la liste de programmes): host=192.168.0.4&port=10325. Sans cette configuration, le port est choisi aléatoirement dans la plage 10000-20000.

Attention:

N’affectez pas de numéro de port dans la plage 0-2000 (réservée au système).

Après avoir modifié le fichier de configuration réseau sur deux machines on lance deux clients:

1 client

2 clients

En haut le serveur liste les clients et leur statut. Il indique le nombre de requêtes échangées avec chaque client. En bas la zone consacrée au jeu indique qu’aucune partie n’a encore été créée.

Après chargement et connexion au serveur, les clients affichent le menu.

menu

Remarque:

En bas de l’interface du client, son adresse et celle du serveur ainsi que leurs statuts sont affichés. Des flèches de couleur (vert, orange, rouge) indiquent l’état de la communication bilatérale.

Le premier client faisant un choix de partie ou de démo, lance la création du jeu. Dans cet exemple un des deux clients choisit de lancer une partie de niveau 3. Le serveur la créée:

creation

Les clients la chargent:

charge partie

Puis affichent l’écran de démarrage suivant:

debut

Tant qu’aucun client n’a démarré le jeu, d’autres clients peuvent se connecter et devenir de nouveaux joueurs de la partie. Une fois la partie démarrée, les nouveaux connectés seront seulement spectateurs.

Lorsqu’un client démarre le jeu, la liste des joueurs est triée aléatoirement et le jeu commence.

jeu

Le fonctionnement est identique à la version standalone à la différence près que l’on ne peut pas interrompre le jeu (partie ou démo). Le retour au menu est désactivé. Il faut attendre la fin du jeu pour choisir une nouvelle partie.

L’interface du serveur donne des indications sur le déroulement du jeu:

infos

Jusqu’à ce que la partie s’achève:

fin

fin client

Quelques instants plus tard, tous les clients retourneront au menu.

Remarques:

  • Le mode client/serveur du jeu pourrait être grandement amélioré. En l’état il est surtout une application concrète des développements génériques TCP.
  • En mode réseau, l’exécution du jeu est plus lente. Ceci pour deux raisons :
    • Le serveur vérifie la synchronisation de chacun des clients avant de passer à l’action suivante.
    • Les requêtes sont pour une bonne part effectuées avec accusé de réception (ce qui ralentit de fait les échanges). Le fait que les requêtes soient envoyées séquentiellement (client par client) dans ce prototype de framework client/serveur est une autre source de ralentissement.
  • Dans cette implémentation du jeu en réseau le principe des échanges est « peu de données échangées mais beaucoup de requêtes ». Le nombre de requêtes est lié à une recherche de « qualité de service » et à la problématique de synchronisation des clients. On peut remarquer qu’à la fin de la partie, clients et serveur ont envoyé plus de 750 requêtes chacun.