Lux

Lux est le projet que je réalise avec une équipe dans mon cours de d'atelier de production d'un jeu vidéo. Il s'agit d'un platformer 3D ayant pour but d'éduquer les joueurs sur les bonnes pratiques d'éclairage afin de réduire la pollution lumineuse en ville. La production du projet se fait sous la forme de simulation de l'industrie, dans laquelle les professeurs agissent comme les clients.

Création du projet

Lors du cours de réalisation d'un jeu vidéo, il nous a été demandé de faire des One Pagers pour les concepts de jeux que nous souhaitions explorer. Voici le One Pager de Lux:

Suite à la création des One Pagers, je suis entré dans le projet pour construire le premier prototype du jeu. Dans ce prototype, nous avons exploré plusieurs idées autant au niveau artistique qu'au niveau du gameplay. J'ai programmé le mouvement du personnage, l'interface des lampes ainsi que les changements d'ampoules dans ce prototype.

À la fin du prototype, nous avons pu remarquer que quelques éléments allaient bien (le changement des lampes, le style des maisons), mais que d'autres éléments devraient partir (l'arêne et les fenêtres dynamiques). Avec des changements majeurs niveau gameplay vient un nouveau One Pager!

Nous avons ensuite entamé la phase de préproduction du jeu. L'équipe s'est agrandie beaucoup (11 personnes), et nous avons produit une tranche verticale du jeu qui représente plus notre vision du produit final. Dans cette tranche verticale, j'ai programmé le mouvement du personnage et ses animation et le changement de lampe du lampadaire.

LuxPreprod.mp4

Après cette superbe tranche verticale que nous avons produit, il était maintenant temps d'amorcer la production! Avec tout l'apprentissage que j'ai fait dans les prototypes précédents, nous nous sommes mis au travail. En tant que programmeur gameplay et 3C, j'ai principalement programmé le mouvement du personnage et de la caméra, ainsi que les changements de lampe.

luxprod.mp4

J'ai aussi beaucoup travaillé sur le système d'interaction et de quêtes, utilisé dans tout le jeu. Les personnages non-joueur ont la capacité de donner des quêtes à Lux, qui devra faire les changements nécessaires pour aider les animaux. Ce système a été un bon défi car pour qu'il soit facile d'ajouter des quêtes et des personnages au jeu, il nous fallait un système simple et générique, permettant beaucoup de flexibilité dans le contenu des quêtes.

Une fois le système de quêtes terminé, une idée folle nous est venue: un ledge grab! Sans plus tarder, je me suis mis à prototyper pour voir si la mécanique serait faisable dans les temps. Après quelques heures, j'avais un prototype fonctionnel, sans animation. Au fil des jours, j'ai continué de paufiner le système jusqu'à ce qu'il soit complètement fonctionnel et intuitif pour le joueur. Le ledge grab est un des systèmes du jeu dont je suis extrêmement fier, comme je suis le seul à avoir travaillé dessus.

ledgegrab.mp4
Ledgegrab2.mp4

Une fois le niveau 1 terminé et les systèmes en place, nous avons pu nous concentrer sur l'ajout de contenu. Pour le niveau 2, nous avons fait 2 quêtes: une avec un papillon qui demande de changer deux lumières, et une avec une maman opossum qui cherche ses trois petits perdus. La quête du papillon était plutôt simple à faire puisque nous réutilisions des systèmes déjà en place, mais la quête de l'opossum nécessitait plus de travail. Nous avons décidé de programmer un système qui permettrait d'attacher des modèles sur le joueur et de faire en sorte que lorsqu'on récupère un bébé opossum, il se retrouve dans le sac à Lux. Ce système a aussi nécessité une bonne communication avec l'animateur afin d'assurer que les poses des bébés étaient adéquates.

Finalement, après 14 semaines de développement, Lux est terminé. Nous sommes tous très fiers du résultat final et nous avons beaucoup appris de ce projet.

Défis techniques

Travail en grande équipe

L'équipe de lux est constituée de 11 membres. Évidemment, travailler avec autant de personnes différentes présente un défi de taille, surtout au niveau de la communication. J'ai du rapidement trouver une façon de bien communiquer avec les autres programmeurs et les artistes du NAD, ce qui m'a fait apprendre beaucoup sur la méthodologie de travail en grande équipe.


Comme je travaillais beaucoup sur le personnage de Lux, j'ai dû communiquer en grande quantité avec notre animateur, pour s'assurer que l'intégration de l'animation dans le contrôle du personnage avait du sens et fonctionnait bien pour le joueur. Ces interactions m'ont appris comment expliquer mes besoins et contraintes à des artistes qui ne connaissent pas nécessairement les contraintes des systèmes en place.

Unreal Engine et Perforce

Lux est le premier projet de jeu vidéo que j'entreprend sur Unreal Engine et en C++. J'ai donc du apprendre une énorme quantité de particularités et de techniques pour travailler efficacement dans ce moteur qui ne m'était pas très familier. Disons que la route a été plutôt sinueuse mais au final l'expérience que j'ai gagnée en apprenant par moi même le moteur est indispensable. La partie la plus difficile était de comprendre la structure C++ d'Unreal Engine avec les macros et les fonctions spécifiques, mais je me sens maintenant très à l'aise avec ce moteur.

Lux est aussi le projet avec lequel j'ai appris comment utiliser Perforce. Mes projets personnels utilisaient Git, donc je ne connaissais pas du tout ce logiciel. Comme avec Unreal Engine, j'ai du apprendre "sur le tas", et après bien des problèmes et de l'apprentissage, je suis autant à l'aise avec Perforce qu'avec Git.

Crédits

Professeurs

Programmeurs (DIM)

Artistes (NAD)






Musiciens (UdeM)

Yannick Francillette

Pierre Tousignant

Kevin Lavigne-Bourque

Thomas Bergeron

Ann-Laurie Lapointe

Patrick McRea-Desjardins

Félix Brassard

Virginie Juteau

François Chiasson

Jonathan Larose

Jade Côté

Marianne Ouellet

Marie-Ève Côté

Karîm Désir

Andrew Cheng

Alexandre Ruel

David Caron

Agathe Lavarel

Frédérique Le Duc-Moreau

Édouard Morcellet