Felix Marcoux

Échappe au DM

Un jeu d’exfiltration à l’intérieur d’une partie de Donjons & Dragons

— NOM DU PROJET

Échappe au DM


— RÔLE

Programmeur

Scénariste


— DATE

Janvier – Avril 2022


— LOGICIELS UTILISÉS

Unity

Wwise

Échappe au DM est un prototype de jeu vidéo réalisé dans le cadre d'un cours de l'université UQAT. Le joueur y incarne Renégus, le personnage d'un joueur de Donjons & Dragons qui tente de s'échapper du château du grand vilain à la fin d'une campagne. Son exfiltration est cependant influencée par les interactions entre le joueur et le maître de jeu durant la partie.


Parallèlement à ce prototype, nous devions également créer une animatique originale d'une longueur d'une minute qui pourrait vraisemblablement s'insérer dans notre gameplay.


Ce projet a été réalisé par une équipe de 6 personnes (en m’incluant) sur l’engin Unity:

Vous pouvez visionner une démonstration du jeu par Tommy Gaudet sur sa chaine Douteux.tv. Il est également possible de télécharger et jouer au prototype vous-même sur itch.io via ce lien.


Design narratif

  • Je suis arrivé sur le projet après la présentation du concept de haut niveau par Roman, Julien et Clément. Une majorité des détails de l’histoire avait donc déjà été entâmée par Roman. Afin de faire quelque chose de différent, Maxime, David et moi avons décidé de situer notre animatique entre deux niveaux plutôt qu’au début et à la fin du jeu.

  • En me basant sur la documentation du projet, je me suis attelé à produire un script d’environ une minute. Mon but était de rappeler au joueur que le monde du personnage contrôlé était dépendant de celui de la table de jeu. Je voulais également ajouter une touche d’humour absurde pour rappeler, malgré les conflits, le plaisir d’une partie de jeu de rôle où tout peut arriver. Le script introduit également une mécanique où le maître de jeu et le rôliste peuvent influencer le terrain de jeu avec des objets de la vie réelle. Le script résultant fût apprécié des autres membres de l’équipe et nous avons pu commencer à créer l’animatique elle-même.


Je n’ai pas de talent particulier en dessin. Maxime, David et moi avons donc fait de notre mieux pour illustrer nos personnages dans le style visuel de la série “Le Donjon de Naheulbeuk”. C’était le style utilisé par les autres membres d’équipe pour leur cinématique et nous voulions demeurer constants. J’ai dessiné la majorité des scènes et des plans de caméra, notamment celles affichant le corps du maître de jeu. Pour ce faire, j’ai beaucoup réutilisé les poses des personnages entre les scènes et les dessins de ma main sous différents angles. Je trouve cependant que l’animatique finale est relativement bonne considérant le temps qui nous était accordé.

Cinématique finale

Programmation

  • Lors du développement, je me suis principalement occupé des contrôles du personnage. Ces derniers incluent évidemment ses mouvements, mais également l’assomage de gardes, la roulade d’esquive et le tir au lance-pierre. Pour l’assomage, j’ai simplement ajoutée une boîte de déclenchement directement à l’arrière des gardes qui permet au joueur de porter un coup, ce qui place l’IA du garde dans l’état “Assomé”. Quant au tir de lance-pierre, j’ai dû créer un autre schéma de contrôle pour guider le réticule sans déplacer le joueur en même temps. Le projectile lancé provoque un cercle de bruit (créé par Maxime Rioux) attirant les gardes suffisamment près. Finalement, j’ai également travaillé sur un système de fouille où le joueur peut fouiller des gardes assomés ou des coffres afin d’obtenir des pierres à tirer ou des clés.

En plus d’avoir implémenté tous les contrôles du joueur, j’ai également implémenté leurs animations pour chaque action. Ces dernières m’ont été fournis par Roman Cros via un pack d’assets, sauf pour l’animation de roulade qu’il a faite par lui-même. De plus, j’ai dû me familiariser avec le logiciel Wwise afin d’intégrer certains des sons fournis à des moments spécifiques (ex: lorsqu’un garde ou un pigeon repère le joueur, lorsqu’un garde est assomé, à la mort du joueur, etc.). Finalement, j’ai généralement fait de mon mieux pour supporter et déboguer mes autres collègues codeurs lors du développement.

Système de discrétion

Assomage et fouille

Roulade pour esquiver ou se déplacer rapidement

Pour moi, ce qui a été le plus de travail pour ce projet fût sans doute l’intégration d’un système modulable d’évènements. Nous voulions faire en sorte de pouvoir déclencher des évènements et dialogues dans une liste dépendamment des chemins empruntés par le joueur ou de manière aléatoire. J’ai tout d’abord séparé les trois types de déclencheurs que nous voulions (Entrer dans une zone, appuyer sur un bouton particulier ou déclenché aléatoirement). Puis j’ai créé une liste d’évènements que nous pourrions vouloir effectuer en coroutine lorsque la condition d’un déclencheur est remplie. Non-exhaustivement, ces dernières incluent notamment l’affichage d’un dialogue, le déplacement de la caméra vers un point particulier, l’activation ou la désactivation d’une autre boîte de déclenchement, l’apparition d’objets dans la scène et plusieurs autres actions. Une fois placé dans la scène, on peut indiquer à un déclencheur toutes les coroutines à effectuer avec un délai pour chacune d’entre elles. J’étais encore relativement peu habitué à l’engin Unity lorsque j’ai créé ce système et il est relativement encombré de champs inutiles pour certaines actions, mais j’en suis tout de même fier. C’est sans aucun doute l’élément le plus complexe que j’ai créé pour ce prototype, mais il a été très utile pour moi et mes collègues tout au long du développement pour bien réaliser notre vision du jeu.

Ce projet fût l’une de mes premières expériences de coopération sur un projet d’envergure avec Unity. C’est également la première fois qu’un jeu que j’ai fait a été montré au grand public. Il n’est pas sans fautes (la difficulté du dernier niveau est notamment beaucoup trop élevée), mais je suis tout de même fier du prototype résultant et de l’histoire que nous avons réussi à raconter. J’en ai tiré des expériences précieuses.