top of page
Image de Mikael Kristenson

PROJETS ÉTUDIANTS

Projet de jeu dans le cadre de cours universitaires

Guano_logo.png

Guano est un jeu d’action-aventure dans lequel le joueur incarne le goéland susnommé dont la mission sera de sauver son archipel (les îles Pohemeda), des griffes de la malveillante multinationale Food Inc. Le joueur devra localiser et sauver les trois grands maîtres de ces îles, tout en semant le chaos en déféquant, en criant et en volant la nourriture des touristes présents sur la station balnéaire.

RÔLE DANS LE PROJET

  • Chef d'équipe du département de programmation:

    • Travailler en équipe dans un contexte agile;​

    • Itérer sur le 3C en fonction des rétroactions des playtests;

    • Coordonner et diriger le département de programmation au quotidien;

    • Collaborer à l’élaboration de différents systèmes de jeux avec les autres départements;

    • Participer et diriger les différentes réunions de programmation;

    • Participer à l’écriture de récits d’utilisateurs;

    • Maintenir à jour la documentation, le carnet de développement Scrum (backlog);

    • Collaborer avec le département sonore (Wwise) pour pouvoir intégrer les sons aux animations et au contrôleur de personnage.

  • Programmeur 3C principal:

    • Mise en place du système de simulation de vol;​

    • Concevoir un schéma de contrôle de vol;

    • Collaborer avec le département d’animation pour pouvoir intégrer les animations du personnage principal;

    • Collaborer avec le département de conception de niveaux pour établir des métriques précises en fonction des paramètres du contrôleur de personnage.

  • Responsable principal de l'intégration du système d'animation des personnages:

    • Création d’un système d’animation procédural (control rigs);​

    • Intégration des animations de personnages dans Unreal Engine;

    • Développeur de technologie artistique (tech art) dans Unreal Engine:

      • Intégration des animations​;

      • Création et gestion d'Animation Blueprint (ABP);

      • Création de Control Rigs

      • Intégration de physique de squelettes (ragdoll);

      • Collaborer avec le département des effets visuels (VFX) pour les intégrer au personnage.

DÉFIS ET ENJEUX

  • Ce jeu a été créé dans le cadre d'une simulation de studio pour le projet final.

    • Avant tout, il y a eu 12 propositions de jeu. Après un processus de sélection sévère, seules 4 ont passé en phase de preuve technique et seulement la moitié de ces 4 jeux ont pu passer en production;​

    • Au tout début de la preuve technique, Guano devait être un jeu à la Untitled Goose Game qui se passerait principalement dans les airs. Cependant, un jeu similaire (Pigeon Simulator) était déjà sur le marché, alors nous avons dû trouver une autre identité;

    • C’est grâce à ma maitrise du 3C que Guano a pu finalement trouver son identité à travers les multiples défis de conception:

      • Cela a permis au jeu d’avoir une nouvelle direction, ce qui lui a permis de se démarquer des quatre autres jeux proposés lors de la preuve technique.​

  • Guano est avant tout un jeu de simulation de vol qui doit être accessible au grand public, contrairement aux simulateurs de vol de type Microsoft Flight Simulator:​​

    • Pour ce faire, il a fallu créer un système de vol agréable et intuitif tout en conservant le plaisir de maîtrise;​

    • La simulation de vol est quelque chose de complexe, alors j'ai dû établir un système de contrôle et l'itérer chaque semaine lors de plusieurs playtests afin de pouvoir l'améliorer;

    • J’ai utilisé mes connaissances en mathématiques vectorielles et géométriques pour pouvoir correctement implémenter les formules de simulation de physique de manière optimale;

    • Pendant mon travail sur Projet Caet, j'ai dû concevoir un système de contrôle aquatique, ce qui m'a vraiment aidé à trouver un système de contrôle adéquat pour Guano.

  • Unreal Engine n’a pas été conçu à l’origine pour être compatible avec de la physique, surtout dans un contexte où il faut garder un contrôle parfait et précis sur un corps physique:​

    • Pour y arriver, j’ai dû effectuer plusieurs recherches pour pouvoir appliquer la physique de manière à ce qu’elle soit indépendante du framerate.​

  • Un autre grand enjeu 3C est la gestion de la caméra:​

    • Dans un jeu en 3D, le positionnement de la caméra est l’élément le plus important. Si le joueur ne voit pas correctement son environnement, alors le jeu n’est plus agréable à jouer;​

    • Pour pouvoir corriger la caméra, j'ai dû implémenter un système de gestion de caméra;

    • Il a fallu mettre en place un système intelligent pour réagir à son environnement, mais aussi aux mouvements de Guano;

  • Puisque Guano est un jeu peuplé de nombreux personnages intéressants et amusants, il était essentiel d’ancrer chacun d’entre eux dans leur environnement:​

    • Pour y arriver, j’ai créé un système d’animation procédural qui permet de rendre tous les personnages réactifs à leur environnement et aux autres personnages;​

    • Par exemple, cela peut se faire en utilisant la technique des « inverse kinematics » afin de positionner les pieds des personnages sur le sol, ou encore en mettant en place un système qui permet aux personnages de regarder certaines choses dans leur environnement;

    • J'ai dû mettre en place un système d'animation complexe afin d'animer correctement le vol de Guano:

      • En effet, ses animations changent et s’adaptent au fur et à mesure que le joueur vole, en fonction notamment de sa vitesse ou du degré de rotation.​

    • Tous ces systèmes différents permettent aux personnages d’être ancré, présents et surtout tangibles dans l’univers du jeu.​

CRÉDITS

Caet est un projet de recherche étendu sur deux cours différents. Le jeu est un jeu de plateformes 3D typique où Caet, le personnage du joueur, doit ramasser des poissons dispersés dans le niveau. La première partie est faite en équipe, et la seconde individuelle en reprenant, avec l’accord de l’équipe, les ressources du premier projet.

​

Dans la première partie, un changement soudain d’atmosphère survient et les 3C changent considérablement.

​

Dans la seconde partie, on explore plutôt les différents modes de contrôle aquatiques.

RÔLE DANS LE PROJET

  • Concepteur et programmeur 3C;

  • Participer à la conception de niveau;

  • Participer au texturing;

  • Participer à la conception UX/UI.

DÉFIS ET ENJEUX

Première Partie

  • Pour la première partie, l’enjeu était de trouver comment changer le 3C d’un contrôleur de personnage de plateformes 3D afin de venir supporter le changement d’ambiance soudain du jeu tout en mesurant les impacts sur l’expérience de jeu des joueurs;

  • J’ai programmé tout le contrôleur du personnage 3D, ce qui demande une bonne compréhension des mathématiques et des physiques;

  • Afin de pouvoir amplifier les changements d’atmosphères, j’ai dû rendre la maniabilité plus nerveuse en réduisant le contrôle aérien et amplifier l’accélération des sauts et de la gravité:

    • Cela est arrivé à la suite de l’analyse du contrôleur principal du jeu indé Toree 3D​.​​

  • Cela m’a permis d’apprendre les effets que le 3C a sur l’expérience du joueur dans le jeu.​

Deuxième Partie​

  • L’enjeu était avant tout de reprendre la première partie du projet et de créer un contrôleur aquatique plaisant à utiliser tout en offrant un niveau qui le met en avant-plan;

  • J’ai fait une recherche sur les différents types de contrôleur aquatique, qui a résulté de deux types de contrôleurs :

    • J’ai ensuite fait des playtest afin de trouver celui qui est le plus accessible​​.

  • Ensuite, j’ai aussi eu à créer un niveau qui permet de jouer avec le contrôleur aquatique :

    • Cela m’a permis de comprendre comment mettre de l’avant le contrôleur​ à l’aide du design de niveau.

  • J’ai donc appris quels sont les éléments qui rendent un contrôleur aquatique agréable à manipuler tout en conceptualisant un niveau de sorte à soutenir un schéma de contrôle.​

CRÉDITS

Christian Forget - Concepteur UX/UI, Concepteur sonore

Cédric Laroche - Concepteur de niveau, musiques

Léa Villeneuve - Artiste de Personnage

Jay Huang-Auclair - Rigging, Animation

Speedhook est un prototype de jeu de course multijoueur local avec un concept novateur. Chaque joueur dispose d'un harnais qu'il peut utiliser pour déplacer les obstacles du circuit comme il le souhaite.

RÔLE DANS LE PROJET

  • Développeur principal;

  • Artiste 2D/3D;

  • Compositeur et concepteur sonore;

DÉFIS ET ENJEUX

  • Le défi consiste à mettre en place un système de gestion des laps en et des positions des joueurs:

    • Pour ce faire, j’ai effectué des recherches sur les systèmes utilisés dans les jeux de courses. J’ai choisi celui de Mario Kart Wii;​

    • J'ai implémenter la totalité du système en C++.

  • Un autre défi personnel est le UI:​

    • Concevoir un UI agréable est important dans un jeu de party:​

      • J’ai donc conçu tous mes menus sur papier avant de les intégrer au jeu.​

    • Utiliser le système Common UI d'Unreal pour gérer des menus complexes:​

      • Pour cela, j’ai effectué des recherches et j’ai mis en place un système de menu avec une gestion d'état.​

    • Utiliser des nuanceurs (shaders) procéduraux pour afficher des éléments de UI:​

      • Les éléments de UI procéduraux m'ont permis d'éviter d'avoir trop de textures différentes en mémoire;​

      • J’ai donc utilisé des «Signed Distance Fields» (SDF) pour avoir une interface utilisateur propre et sans trop de tracas;

    • Concevoir des animations d’UI en se basant sur le motion desing (conception du mouvement des éléments de l’interface utilisateur):​

      • J'ai créé une chorégraphie unique et plaisante pour chaque transition de menu.​

    • Implémentation d'un écran de sélection de personnages inspirés de Super Smash Bros:​

      • Puisqu’il s’agit d’un jeu multijoueur, il fallait trouver un moyen simple pour que chaque joueur puisse rejoindre ou quitter la partie facilement;​

      • Pour ce faire, j’ai utilisé le système de gestion de joueurs de Super Smash Bros, qui permettait de gérer les joueurs inscrits à même l'écran de sélection;

      • Pour rendre le UI ludique, j'ai aussi implémenté un système de sélection de personnages par «jeton» :

        • Chaque joueur a son propre jeton, qu’il place sur le portrait du personnage qu’il souhaite utiliser;​

        • Les jetons se replacent automatiquement selon leurs collisions en utilisant de la physique, un système qui n'existe pas pour les interface utilisateur de Unreal Engine:

          • J'ai dû donc utiliser mes connaissances en physique et en mathématiques pour gérer leurs positions.​

  • Intégrer ensemble le mode multijoueur local, Common UI et le système de gestion des laps:​​​​

    • Il n’existe aucune documentation permettant une implémentation correcte de Common UI avec plusieurs joueurs locaux:​

      • J’ai donc dû me renseigner sur le fonctionnement de Common UI afin de pouvoir gérer plusieurs manettes en même temps.​

  • Implémenter un outil de conception de niveaux dans Unreal Engine afin de pouvoir générer une architecture de niveaux qui s’intègre au système de gestion de laps:​​

    • J'ai utilisé une spline pour générer des boîtes de collision qui permettent de suivre la progression des joueurs sur le circuit;​

    • Cela permet au concepteur de niveaux de se concentrer uniquement sur la modification des splines du circuit pour en modifier la configuration.

temperedTitle.png

Tempered est un jeu FPS insipiré des jeu PlayStation où le joueur doit trouver un code secret dispersé dans plusieurs pièces d'un vaisseau fantôme afin de pouvoir ouvrir chambre forte et d'y piller son cœur nucléaire.

RÔLE DANS LE PROJET

  • Responsable du design de niveau;

  • Participer à la programmation 3C

  • Programmeur graphique;

  • Participer à la conception de l'économie de jeu;

  • Design audio;

  • Texture artist;

  • Prop artists;

  • Modélisation des armes.

DÉFIS ET ENJEUX

  • Le jeu a demandé d’avoir une manière de rendre l’exploration des pièces intéressantes, alors un des gros défis du jeu était d’avoir plusieurs pièces tout en restant cohérent :

    • J’a​i donc eu à trouver une manière de rendre chaque pièce unique, tout en permettant une certaine rejouabilité;

    • Cela a donc demandé de faire un plan papier afin de pouvoir conceptualiser l’environnement de manière cohérente.

  • Afin de rendre le jeu intéressant, j’ai dû vraiment penser à une bonne condition de victoire :

    • C’est à la suite plusieurs recherches que j’ai pu trouver le concept de code secret.

CRÉDITS

Julien Plamondon - Narration

Rémi Côté - Programmation IA

Félix Marcoux - Programmation 3C

Dans Claws, vous devez traquer, trouver et éliminer un nombre maximum de mouton avant le lever du soleil! 

RÔLE DANS LE PROJET

  • Responsable du 3C;

  • Participer à la programmation gameplay;

  • Coordination du blocking de niveau de haut niveau;

  • Participer à la conception de niveau;

DÉFIS ET ENJEUX

  • ​Le défi 3C principal du jeu était surtout une question de gamefeel, or, comment donner au joueur la sensation de vitesse tout en lui donnant assez de contrôles :

    • ​​Nous nous sommes rendu compte que plus le personnage va vite, moins le joueur a le contrôle;
    • Il fallait donc trouver une manière alternative de donner au joueur la sensation de vitesse​ :
      • Pour ce faire, nous changeons le champ de vision de la caméra (FoV) tout en ajoutant un tremblement à la caméra (screen shake) :

        • Cela a augmenté l’énergie perçue quand le joueur atteint sa vitesse maximale.

  • J’ai aussi participé au design de niveau en proposant un concept de haut niveau :

    • ​Claws demandait d’avoir une certaine liberté de mouvement qui demandait un type de niveau plus «ouvert» que dans des jeu plus linéaires​

    • Pour ce faire, j’ai utilisé le design en «islets» afin de créer une carte «ouverte» divisée en plusieurs zones différentes;

    • J’ai aussi eu la responsabilité de concevoir la zone centrale de la carte avec l’arbre et la chute d’eau;

    • Un des enjeux principaux cotés 3C et LD était les métriques

      • Il fallait avoir des métriques adéquates afin que le joueur puisse être à l’aise dans ses mouvements :​
        • Nous avons donc dû revoir nos métriques plusieurs fois à travers le développement​.

​

CRÉDITS

Xavier Ménard-Beaudoin - Gestionnaire de projet

Rémi Côté - Programmation IA

Clément Roger - Designer 3C, programmation, concepteur de niveau

Christian Forget - Designer Conception UX/UI, Conception de niveau, concepteur sonore, Intégrateur, Programmation

Benjamin Boulet-Bendezu - Artiste

Jay Huang-Auclair - Artiste

Cédrick Lemaine Romulus - Artiste

Lea Villeneuve - Artiste

Monument Mythos : The Vermont Tower est un jeu inspiré de l'univers de Monument Mythos ou vous incarnez un cthonaute sans nom ayant comme mission de retrouver Président Dean dans un monument surnaturelle au Vermont.

RÔLE DANS LE PROJET

  • Responsable du design de niveau;

  • Responsable de la programmation;

  • Responsable de l'intégration Audio;

  • Responsable de la narration;

  • ​L’enjeu principal de ce jeu d’horreur était de bien parsemer les niveaux de moments narratifs avec un accent sur la courbe d’intensité du niveau :

    • J’ai eu à créer un bon mélange entre les récompenses, les défis et les moments narratifs dans le niveau :

      • Pour y parvenir, j’ai dû placer des journaux audios et des trigger au bon moment dans le cheminement du joueur.​

  • Il fallait aussi réussir à créer ce niveau de manière cohérente avec l’univers du Monument Mythos :

    • À ​cet effet, mon intention dans ce jeu était de soulever le design un peu labyrinthique d’un monument de style «monument de Washington» dans une aberration spatio-temporelle tout en ancrant fermement le joueur dans une structure narrative très linéaire.

  • J’ai aussi eu à programmer les ingrédients de niveaux tout en conceptualisant des casse-têtes simples et intéressants;

  • J’ai aussi appris comment intégrer Wwise dans Unreal Engine.

DÉFIS ET ENJEUX

CRÉDITS

Xavier Ménard-Beaudoin - Concepteur de niveau

WI6Rr8.png

Dans ce prototype du jeu Petit Héros!, le joueur doit sauver le monde de la Dame en Noir et de ses sous-fifres du point de vue d’un enfant! En contrôlant l’enfant, le joueur à l’habileté de visiter un monde imaginaire. 

RÔLE DANS LE PROJET

  • Programmeur 3C

  • Programmeur graphique

  • Responsable de la musique

  • Participer au design sonore

  • Participer à la programmation de systèmes

  • Participer au UX/UI

  • Participer à l'écriture de scénarios

  • ​L’enjeu de Petit Héros était d’avoir un 3C assez flexible de type Legend of Zelda : A link to the Past:

    • J’ai donc programmé une bonne partie du 3C​;

    • Avec ce jeu, j’ai appris comment utiliser l’outil de mapping de contrôle d’Unity afin de pouvoir utiliser n’importe quelles manettes;

    • J’ai aussi eu à implémenter un système de dialogue complet à travers l’interface d’Unity qui permet à tout le monde d’ajouter librement du dialogue sans avoir à faire de la programmation.

  • J’ai​ aussi appris comment utiliser les fonctions de rétroactions haptiques d’Unity pour venir pimenter la jouabilité en général;

  • Puis, j’ai aussi appris à intégrer Wwise dans Unity à travers un 3C.

DÉFIS ET ENJEUX

CRÉDITS

Justin Marques - Concepteur de niveau, Concepteur UX/UI, Artiste

Mathieu Gaudreau - Concepteur de niveau, Artiste

Christian Forget - Concepteur de puzzle, Programmation, Concepteur audio

Frédérick Bélanger - Narration, scénariste, Concepteur de puzzle

Gabriel Anctil - Concepteur de niveau, Concepteur de puzzle, Concepteur audio

Latency_logo.png

Latency est un jeu RTS symétrique à 2 joueurs sur manette. Le jeu se joue en écran partagé (sur 2 écrans), avec 2 contrôleurs. Vous contrôlez une colonie d’extra-terrestres et votre but est de survivre en triomphant de votre adversaire.

RÔLE DANS LE PROJET

  • Responsable 3C

  • Participer au UX/UI

  • Participer à la programmation de systèmes

  • Scrum Master

DÉFIS ET ENJEUX

  • ​Latency est un jeu particulier : c’est un jeu RTS qui est exclusivement en multijoueur local qui se joue sur deux écrans différents :

    • Question 3C, le plus important était de rendre la navigation d’un jeu RTS (qui se jouent conventionnellement au clavier-souris) conviviale à la manette, car il est impossible d’avoir plusieurs claviers et souris sur le même ordinateur​ :

      • Pour y arriver, plusieurs recherches ont été nécessaires, et en particulier sur Halo Wars, qui reste notre inspiration principale;​

      • Le mapping des contrôles était aussi un gros enjeu, et en particulier sur la sélection des unités des joueurs;
      • J’ai aussi eu à implémenter des aides de jeu qui change de manière dynamique selon l’état du jeu;

      • J’ai​ appris comment utiliser le nouveau système d’entrée d’Unity afin de créer et de gérer un jeu en écran partagée (splitscreen) tout en permettant n’importe quelles manettes différentes;

CRÉDITS

Roman Cros - Concepteur UX/UI, Gestion de projet, Narration

Alexander Tanasie - Économie de jeu, Concepteur de système

Esteban Gilbert - Programmeur audio, Concepteur sonore

Gabriel Gautier - Programmeur système, Intégrateur, Concepteur UX/UI

Maxime Rioux - Programmeur AI, Programmeur système, Concepteur UX/UI

bottom of page