Previous Up Next

2  Description des composants du projet

2.1  Architecture générale

Le projet produit deux exécutables, un exécutable serveur dont une seule instance est nécessaire et un exécutable client qui doit être lancé par tous les joueurs.

Le serveur se révèle aux clients par des diffusions, accepte les connexions des clients, permet au client administrateur de lancer le jeu puis traite les datagrammes des clients pour gérer la position des joueurs. C’est aussi le serveur qui envoie régulièrement aux clients les données leur permettant de dessiner ce que voit leur globule. Ces données sont des polygones pleins et des disques triés par profondeur. Dans la phase d’attente des joueurs, le serveur transmet à l’administrateur les pseudos des nouveaux inscrits. Un message confirme au client qu’il vient d’exploser et un message en fin de partie annonce le pseudo du vainqueur.

Le client lancé sur la même machine que le serveur est considéré comme étant l’administrateur. Les clients attendent la diffusion du serveur, demandent aux joueurs leur pseudo et les inscrivent auprès du serveur. Le client administrateur décide de lancer le jeu. Une fois prévenus du lancement du jeu, les clients démarrent une fenêtre graphique (bibliothèque SDL). Les appuis sur les touches de direction et sur la barre espace sont transmis au serveur, les objets graphiques envoyés par le serveur sont dessinés dans la fenêtre graphique. Les messages tapés dans la fenêtre texte sont transmis au serveur qui les transfère aux clients un par un. Ceci permet d’avoir un chat primitif. Certains messages sont interprétés pour déconnecter le client ou arrêter le jeu (dans ce dernier cas, seul l’administrateur en a le pouvoir).

2.2  Utilisation d’UDP et de TCP

UDP est utilisé pour que le serveur puisse se révéler aux clients, pour recevoir les déplacements des globules et pour envoyer les éléments à afficher aux clients.

TCP est utilisé pour l’inscription des joueurs, pour l’envoi de message sur le chat et pour diffuser les divers messages vers les joueurs.

2.3  Affichage des objets

Les murs du labyrinthe sont modélisés par des carrés perpendiculaires au sol y=0 et orientés suivant l’axe des x ou l’axe des z. Les globules sont représentés par une sphère de couleur. Les boules d’énergie sont aussi des sphères plus petites.

C’est le serveur qui va se charger de projeter en 2D les murs du labyrinthe, les globules et les boules d’énergie. Cette projection est réalisée pour chaque joueur en fonction de sa position et de son orientation. L’orientation est prise en compte par une rotation des éléments autour de la position du joueur. Par ailleurs, on utilise une projection de type perspective faible : x′=x/z et y′=y/z en notant (x′,y′) la projection sur l’écran et (x,y,z) les coordonnées en 3D.

Il faut prendre soin d’envoyer aux clients les éléments à afficher (murs, globules, boules) dans l’ordre décroissant de la distance au globule du joueur. Ceci pour que les éléments proches puissent cacher les éléments lointains. Il serait bon de n’envoyer aux clients que les éléments visibles par son globule. Cela nécessiterait de vérifier pour chaque élément s’il est occulté par des éléments plus proches.

Comme la partie graphique n’est pas le coeur du projet le code correspondant est donné. Il est disponible à l’URL http://rex.plil.fr/Enseignement/Systeme/Tutorat.IMA2a4.XMaze/xmazev2.tgz.


Previous Up Next