IUP MIAGE 3 - 1999
Christian Hoffman - Pierre Foresi - Guillaume Chamard
Le jeu est organisé en quatres packages distincts :
- JBam.Launcher : Interface de lancement du jeu. Ce package propose les menus de démarrage. C'est de la que sont configurés les options, qu'est lancé le serveur et que s'effectue la connection à un serveur déjà lancé.
- JBam.Reseau : Gestion réseau du jeu. Les autres classes font appel aux diverses classes de ce package pour effectuer toutes les opérations mettant en jeu des méchanismes du réseau.
- JBam.Gestion : Algorithmes de gestion des boules, de leurs déplacements et tout et tout.
- JBam.Graphique : Objetcs Graphiques de l'application.
Documentation Javadoc des sources (a voir pour plus d'info sur le jeu)
- Générales
- Utilisation du JDK 1.2 de SUN
- Utilisation des packages javax.swing
- Réseaux
- Lancement dynamique du deamon rmi (rmid). Non documenté par SUN en utilisant les classes sun.*
- Utilisation des propriétés Activatable du serveur, qui permet de ne l'executer qu'au premier appel réseau et donc de lancer le serveur depuis le client. (jdk 1.2)
- Gestion multi-Clients.
- Communications bi-directionnelles (le client est aussi serveur pour le serveur : les appels rmi se font dans les deux sens)
- Execution d'un thread Nettoyeur qui verifie la validité de chaque client toutes les 5 secondes. Ainsi, un client peut "planter" sans bloquer le jeu si il n'avait pas lancer lui même le serveur.
- Algorithmes
- Nous utilison des algorithmes de type greedy pour savoir quelles boules vont tomber, etc. Le niveau est stocker dans JBam/Gestion/niveau/test.niveau. C'est un fichier de 18x9 characters qui indiquent la couleur de la boule. Un 0 (zero) indique que la place est vide. Les couleurs son : j(aune), g(rise), v(ert), r(ouge), b(leu).
- Graphiques
- Nous avons un structure d'heritage pour afficher des differents elements, comme les boules, la fleche, etc.
- Bugs Connus
- Il est impossible de lancer un serveur, lorsque le permier essay de le lancer n'a pas marché.
- Prochaines évolutions
- Reprise du serveur par un autre client lorsque le client l'ayant lancé se termine.
- Optimisation du nombre de messages rmi.
- Lancement de la rmiregistry aussi dans le jeu, comme le rmid
- Ajout de paramètres de jeu (Niveaux, Nouvelles Options, ...)
set (ou export) CLASSPATH=Racine du répertoire JBam
rmic -d JBam/Reseau/ JBam.Reseau.JBamClient JBam.Reseau.JBamServer (sous Windows)
javac JBam/Reseau/*.java
javac JBam.Launcher/*.java
javac JBam.Gestion/*.java
javac JBam.Graphique/*.java
rmic -d . JBam.Reseau.JBamClient JBam.Reseau.JBamServer (sous Solaris)
Il est fortement conseillé d'executer le jeu sur une machine puissante. Pour nos tests nous avons utilisé un K6 200Mhz 64MB et un K6 II 333 64MB. D'ailleurs, Sun Microsystems vient de sortir la nouvelle machine viruelle Java (HotSpot) qui va ameliorer la performance des machines virtuelles.
- Windows :
- JBam\Launcher\Launch.bat
- UNIX :
- java -Djava.security.policy=JBam/Reseau/JBamPolicy JBam.Launcher.JBamSplashScreen
Définir les options dans le menu option (ces options sont sauvegardées au niveau du client et réutilisés à chaque démarrage) :
- Nom du joueur : un nom unique pour chaque joueur.
- Affichage Frame : temps de rafraichissement entre chaque frame du jeu. Il est conseillé de le ralentir petit à petit jusqu'a une valeur correcte de jeu.
- Affichage Boules : temps entre l'affichage des boules lorsqu'elles se déplacent. Mêmes conseil que précedement.
- Liste des hôtes : Liste de machines (séparées par un ';') où rechercher une registry et des serveurs
Lancer un serveur (optionnel) : Enregistre le serveur JBamServer sur la machine locale. Tous les clients recherchant une registry sur cette machine trouveront ce serveur.
Connection à un serveur : Choisir le serveur désiré dans la ComboBox pour s'y connecter.
Le but du jeu est de faire tomber toutes ses boules. Les boules tombent
lorsque au moins trois boules de la même couleurs sont collées
ou que les boules du dessus tombent.
Lorsque l'on fait tomber des boules, celles-ci passent en malus chez les
autres clients. Il est donc conseillé d'essayer de construire des
architectures complexes pour faire tomber le plus de boules d'un coup.