My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
FonctionnementGeneral  
Updated Apr 2, 2010 by magerifi...@gmail.com

Java3D est une librairie qui fonctionne par la construction d'un arbre de scène. On y ajoute des groupes de transformation puis des objets qui dépendent de ces groupes.

Une scène mabave comprend trois types d'objets : Joueur, Barre, Balle. Un objet renferme : 1) une représentation graphique (une instance de la classe BranchGroup) 2) une représentation physique (une instance de la classe PhysiqueSolide) 3) deux matrices de transformation affine (la transformation précédente et la transformation actuelle) Un type annexe est appelé BoiteInvisible et sert uniquement à représenter une collision avec un parallélépipède de dimensions finies (par opposition à un demi-espace infini).

Le programme se compose de plusieurs classes qui fonctionnent de manière parallèle. Elles se découpent en trois grandes catégories : 1) les classes d'animation d'objet 2) les classes de calcul physique 3) les classes de contrôle

Les classes d'animation utilisent les deux matrices de transformation d'un objet : la transformation précédente est inversée puis multipliée avec la transformation actuelle. On agit ensuite sur le groupe de transformation de l'objet actuel pour modifier sa position et son orientation dans l'espace. Les rotations sont représentées par des quaternions.

Les classes de calcul physique comportent trois phases :

1) intégration physique (à partir de l'accélération, vitesse, position, angles, rotation)

2) détection des collisions

3) détermination des collisions (correction des positions, des vitesses, plusieurs contacts)

Les classes de contrôle traitent l'information de l'interface homme/machine. Il faut s'assurer que les données capturées donnent lieu à des situations physiques crédibles (la barre ne doit pas se déplacer à l'infini, par exemple).

En fonction de l'importance de la classe, celle-ci est appelée à intervalles de temps plus ou moins long. Ces réactivités sont définies dans un fichier qui comporte la majorité des constantes du jeu.

Pour avoir une horloge plus précise (chronomètre qui s'affiche en bas de l'écran à droite pour le joueur), j'ai utilisé la Java Native Interface. J'ai créé une petite fonction en C qui donne le temps tel que le renvoie le système d'exploitation. Ce chronomètre, appelé HorlogeWindows, n'est activé que si l'on se trouve sur le bon système.

Le module de jeu en réseau a été testé sur le réseau de la Maison des Mines et fonctionne convenablement (le placement des objets est bien synchronisé) mais trop lentement pour être jouable. On profite de l'interface Serializable pour envoyer des informations au serveur.

La musique est gérée par la classe MP3 et les sons par la classe Xylophone, qui tourne en permanence. Lorsqu'on détecte une collision, on indique le prochain son a jouer. Puis celui-ci est consommé.

Powered by Google Project Hosting