2 mai 2007

Vicuna Guts Raider

Projet complet de développement d'un jeu vidéo en équipe 

L'objectif du projet se déroulant sur une session complète était de développer une véritable "application multimédia interactive" portant sur le thème du corps humain en équipe de 4 à 5 personnes.
Notre choix s'est porté sur un jeu d'action en 3D se déroulant dans le système digestif humain soudain en proie à une attaque sournoise de bactéries mutantes. Le personnage principal va tenter de chasser ces ennemis et de sauver son hôte en détresse.

Le projet principal se déroulait en 3 jalons principaux (alpha,bêta,gold) à l'issue desquels les objectifs fixés dans le game design doc devaient avoir été atteints. Le développement s'effectuait sous la tutelle d'encadrants du studio Ubisoft à Montréal.

Au début du projet, un moteur de base (Vicuña) implémentant un système de contrôle et de rendu simplifié nous était fourni. Nous avons donc adapté l'architecture de notre application pour bénéficier au mieux des fonctionalités de base du moteur.
Pour faciliter la gestion d'équipe du projet, nous avons utilisé de manière extensive le système de gestion de versions SVN.


Le développement du projet a necessité plusieurs étapes et diverses compétences.
  • Conception, organisation et respect du Game Design Doc
  • Création des modèles 3D (3DS max), des textures et du contenu multimédia
  • Codage (C++/HLSL) des modules de rendu (Shaders, Caméras et interface utilisateur)
  • Codage de l'IA, de la physique et des contrôles

1 mai 2007

Analyse d'image - Stéréoscopie

Détermination de la dimension et de la nature d'objets à partir de l'analyse de couple d'images stéréoscopique

A partir de paires d'images stéréoscopiques prises par deux caméras séparée par une petite distance (images gauche et droite), il fallait concevoir un programme C++ capable de déterminer la nature (sphère ou pavé) de l'objet photographié et ses dimensions (rayon ou longueur des arrêtes)



La première étape consistait à extraire des zones d'intérêts sur chaque image (coins, arrêtes ou contour ) en choisissant des points qui sont robustes face à l'influence du bruit, des changements de luminosité etc. Il s'agit principalement d'un travail de traitement d'image ( algos de filtrage par convolution, Canny, Harris, KLT ...)


On effectue par la suite l'analyse à proprement parlée en réalisant l'appariement des points sur les deux images et en calculant les dimensions à partir des hypothèses connues sur les caméras et des points appariés.

1 avril 2007

Joueur intelligent de Scrabble

Projet d'IA utilisant Prolog


L'objectif de ce projet d'intelligence artificielle était de développer un ensemble d'algorithmes permettant à l'ordinateur de former des mots à partir d'un ensemble de lettres tirées au hasard et d'un dictionnaire fourni.

L'étape suivante consistait alors à placer le mot rapportant le plus de points sur le plateau de jeu et si possible de faire en sorte que les autres joueurs fassent moins de points. Il était également nécessaire de procéder à certaines optimisations afin que le temps de calcul du joueur ordinateur ne soit pas prohibitif.

Les règles de base du scrabble et la gestion de l'interface graphique nous était fournies ainsi qu'un module nous permettant de jouer contre l'ordinateur pour tester nos algorithmes.
La programmation se faisait en prolog.

3 mars 2007

Gess - joueur intelligent

Projet d'IA visant à implémenter les algorithmes de décision dans un jeu à deux joueurs

Le jeu GESS est un jeu ayant pour double influence les échecs et le jeu de go. Chaque pièce est composé de 9 cases. Si certaines de ces cases sont occupées par des pions alors elle peut se déplacer dans des directions déterminées par la position relative de ces derniers. L'objectif est de gagner la partie en "mangeant" le roi (pièce représentée par un carré) de l'adversaire. Les algorithmes utilisés sont MinMax et surtout AlphaBeta, tout le problème étant de définir une heuristique efficace.
A la fin du projet, les joueurs de chaque étudiant ont été mis en compétition. Le mien s'en est vraiment pas mal sorti :)