Travail 2 (T2)

Code source: log740-travail2-code.zip

Pour ce travail, vous avez à prendre le code source de "Jeu 3D" et le modifier. Avant de le modifier, lisez le fichier classes.txt qui est inclus avec le code source pour savoir comment fonctionner le logiciel et pour avoir des indications sur l'organisation du code. Compiler, exécuter, et jouer avec les différentes fonctions du logiciel.

Comme il y a seulement un poste de travail au laboratoire A-3446, les équipes vont devoir venir au laboratoire une à la fois, accompagnée du chargé de labo en tout temps. Chaque équipe aura deux heures au laboratoire avec le chargé de labo, pour faire le débogage de leur logiciel, finaliser leurs changements, et faire une démonstration des changements au chargé de labo avant la fin des deux heures. Cela implique que chaque équipe prépare ses changements d'avance. Veuillez communiquer avec le chargé de labo par courriel pour réserver vos deux heures. De plus amples instructions seront données lors de la séance d'introduction du 28 janvier.

Le programme peut fonctionner avec un des deux périphériques suivants:

Les équipes de 2 à 3 personnes doivent apporter trois changements au programme: Un changement provenant de la liste "difficile", un de la liste "facile" et un de votre choix n'apparaissant pas dans les listes (ce changement devra être approuvé par le chargé de laboratoire, par courriel ou en personne).

Si vous le désirez, il est possible de remplacer le changement facile par un difficile ou un deuxième changement en dehors des listes (encore une fois, avec approbation).

Les équipes de 4 personnes doivent effectuer un quatrième changement de la liste "difficile" ou bien un quatrième changement proposé et approuvé par le chargé de lab.

Vos trois changements (ou quatre, si vous êtes en équipe de 4 personnes) doivent être finalisés dans une seule version du code que vous allez démontrer au chargé de laboratoire à la fin de votre deuxième séance, et soumettre par courriel. Vos changements doivent être actifs et démontrables en compilant votre code une seule fois (c.-à-d. sans changer des constantes internes et en recompilant pour chaque changement différent).

Certains des changements proposés demandent de rajouter une fonctionnalité pour permettre de faire x, sans spécifier si x doit être fait avec la souris, le clavier, le périphérique, etc. Dans ces cas, vous êtes libres de choisir la méthode d'entrée.

Comme l'accès aux périphériques disponibles au laboratoire est restreint, il est fortement recommandé de commencer le travail à l'avance en lisant la documentation du code et en élaborant une stratégie de dévelopement pour chacun des problèmes à résoudre. Il est possible et même encouragé de contacter (par courriel ou en personne) le chargé de laboratoire pour discuter des solutions envisagées avant la séance de laboratoire qui vous est allouée. Pour ceux qui veulent travailler de manière plus concrète à la maison, voir la section "Installation" à la fin du document.

Vous aurez à faire une démonstration de vos changements à la fin de votre période de laboratoire.

Vous aurez aussi à prendre au moins une photo (la caméra sera fournie) montrant un ou plusieurs utilisateurs et/ou un ou plusieurs périphériques et/ou l'écran de projection, et au moins une capture d'écran montrant votre logiciel. Au total, au moins six images (photos et captures d'écran) devront être préparées. Le but est de mettre en évidence l'utilisation des périphériques spéciaux pour la manipulation directe. Les images les plus intéressantes seront utilisées par le département à des fins promotionnelles (affiches, site web), possiblement en citant les noms des étudiants qui ont créé les images, à moins que l'équipe qui a produit les images demande qu'on ne mentionne pas leurs noms, ou bien nous demande qu'on n'utilise pas leurs images.

Le rapport devra contenir les sections suivantes:

Aussi, ne changez pas des parties du code qui ne sont pas nécessaires à changer, car votre chargé de labo regardera une comparaison de la version originale du code avec votre version, et verra tous les changements surlignés. Si vous faites des changements inutiles, par exemple changer les noms de plein de variables ou changer les espaces, ces changements seront surlignés et vont grandement distraire et faire perdre le temps de votre chargé de labo.

Finalement, dû au fait que tous vos changements au code seront surlignés lorsque votre chargé de labo visualise la comparaison, il sera facile pour nous de détecter des cas de plagiat. Alors, ne partagez pas de copies de vos changements entre équipes! Il est permis que deux équipes discutent comment faire les changements, mais ne partagez pas de copies du code. Chaque équipe doit écrire sa propre version des changements choisis. Si, pour effectuer une partie de vos changements, vous utilisez une équation ou un algorithme que vous avez trouvé dans un livre ou sur un site web ou que quelqu'un d'autre vous a donné, indiquer clairement dans le code source et dans votre document la source et la nature de cette partie. De telles parties dont vous n'êtes pas l'auteur doivent former au plus une minorité des changements que vous effectuez au code. Évitez soigneusement toute forme de plagiat, ou même la possibilité de donner l'impression d'un plagiat, car il existe plusieurs moyens pour un professeur et ses chargés de cours de détecter des cas de plagiat, et lorsque ces cas arrivent, c'est une situation grave qui sera traîtée sévèrement.


Listes des changements

Difficiles:

D1.
Afficher une barre de vie pour l'ennemi vers lequel le curseur pointe (modification pour que l'ennemi ne meure pas en un seul coup)
D2.
Changer la couleur des ennemis au fur et à mesure que leur vie diminue
D3.
Ajouter une trainée de particules derrière les projectiles (la trainée devra persister temporairement après contact entre le projectile et un ennemi)
D4.
Faire bouger les ennemis en 3D (vérifier qu'ils ne sortent pas du champ de jeu)
D5.
Modifier/Inverser le contrôle des mouvements (par exemple, utiliser l'orientation du wiimote pour les déplacements et le joystick pour l'orientation de la vue. Discuter des avantages/incovénients de la nouvelle configuration dans votre rapport. NOTE: Ce point est plus exploratoire que technique)

Faciles:

F1.
Tirer des projectiles continuellement quand le bouton est enfoncé
F2.
Ajouter des ennemis continuellement au fur et à mesure qu'ils sont détruits
F3.
Ajouter un temps limite entre chaque tir
F4.
Permettre au joueur de sauter (seulement quand ses pieds touchent le sol)
F5.
Donner un nombre limite de projectiles, après lequel le joueur est forcé de "recharger" son arme d'une manière quelconque

Remise

À remettre par courriel à l'adresse log740remise@... mentionnée sur la page principale du site web du cours:

À remettre dans la chute du département:


Évaluation de T2 (15% de votre note finale au cours)

Dû au peu de temps disponible, la qualité du code ne sera pas jugée sévèrement

Total                   100%
Rapport:                 76%
        Documentation    20%
        Changements      30%
        Discussion       20%
        Images            6%
Code:                    24%
        Choix difficile   8%
        Choix facile      8%
        Choix proposé     8%

Installation

Cette section est pour ceux qui veulent travailler à la maison pour préparer leurs changements avant la séance de laboratoire.

Message de votre changé:

Si vous voulez travailler à la maison sans faire une installation complète, vous aurez probablement une erreur de build pour la librairie TDxInput dans la classe Exemple3dx. Cette librairie vient avec le driver du Space Navigator. Dans ce cas, vous pouvez juste retirer ce fichier du projet et vous servir exclusivement de la classe ExempleKeyboard (pour votre travail à la maison seulement, évidement).

Lorsque viendra le temps de travailler au laboratoire, vous n'avez qu'à amener le dossier /src contenant les fichiers sources, on se servira des libs et des project files déjà sur la machine de lab.

Installation Minimale

Vous permet de développer votre application mais ne contient pas la documentation des différents frameworks. Sans les périphériques, l'application ne peut être testée que de manière minimale.

Un environnement de dévelopement C#
   Voir Visual C# 2008 Express Edition

Les sources du projets
   Contient:
      Tao Framework (lib partielle seulement) et WiimoteLib (lib seulement)
      Project Files pour Visual Studio 2008 (Express Edition disponible sur le web) et 2005 (installée au laboratoire)

Installation Complète

Vous donne des exemples des différents frameworks (ceux d'OpenGL sont particulièrement utiles) et permet l'utilisation complète de l'application.

Software:
   Visual C# 2008 Express Edition
   http://www.microsoft.com/express/download/default.aspx#webInstall

   Tao Framework
      Contient plusieurs exemples OpenGL
   http://www.taoframework.com/downloads

   WiimoteLib
   http://www.codeplex.com/WiimoteLib/Release/ProjectReleases.aspx

   Driver pour Space Navigator
   http://www.3dconnexion.com/support/downloads.php

Hardware:
   SpaceNavigator de 3D Connexion
   http://www.3dconnexion.com/

   Wiimote de Nintendo
   *Disponible partout*

   Adapteur Bluetooth pour connection au Wiimote
      Recommendation: adapteur bluetooth Trendnet TBW-104UB (30$ environ, disponible chez Microbytes)