Présentation du projet
CLTRS est un jeu singleplayer de type d'exploration
Il a été créer durant les cours de production de l’Année 2022 et 2023 un cour qui mettent en équipe des étudiant de l’UQAC et du NAD.
Le jeu vidéo CLTRS invite les joueur.euses à plonger dans une exploration ludique de la sexualité et du plaisir féminin. À l’aide d’un avatar roulant, les joueur.euses naviguent dans un espace à thème féminin et doux. L’environnement exploré permet aux joueur.euses de découvrir certaines parties du corps grâce à des mouvements rapides qui susciteront la vie autour de l’avatar. L'équipe a misé sur un style réaliste et inspiré du baroque, tout en utilisant des couleurs pastel. Parfois, pour atteindre le point culminant, il suffit d’explorer!
Défis de conception général
La comme la cliente voulais utiliser la forme d’un clitoris qui a une énorme composante verticale et qu’elle ne voulait pas qu’il s’agisse d’un jeu de platforme qui aurait été la solution la plus évidente il a fallut que l’on trouve un moyen de donné ce déplacement vertical. Comme solution on a surtout utilisé des rampes ainsi que des bumpers guidé afin de faire monter le joueur dans le niveau.
Tache du développeur
Bumper
Pour ma part, dans la tranche verticale j’Avais fait des bumpers de physique mais comme on ne voulait pas qu’il s’agisse d’un plateformeur il a fallut que je change leur fonctionnement.
Donc pour correspondre à la demande de la cliente j’ai changer le fonctionnement des bumpers afin qu’ils possèdent un spline afin que le joueur suivra à l’Aide d’une timeline.
On a donc placé ces bumpers dans le niveau mais on les avait placer pour qu’il y ait un seul bumper par chaine hors cela a causé le problème de rendre les rebond non naturel. Donc on a opté pour mettre un bumper par rebond. Cette décision à causé des problème car cela a rendu le retourd ver l’arrière impossible du coup j’ai modifier le bumper afin que seul le premier bumper de la chaine lance la chaine de rebond les autres ne lanceront pas le code de rebond tant et aussi longtemps que le joueur ne soit pas en état de rebond.
J’ai aussi programmer le lancement des particule d’attérissage quand la timeline de déplacment termine et lancé les effets sonore quand le personnage rebondit sur un bumper.
Au cours de la mi-session, nous avons commencé à remarquer des problèmes d’optimisation. Une des solutions afin de réduire la demande de ressources du côté programmation fut d’exécuter le déplacement du joueur avec un timer qui tique à toute la 0,1 seconde au lieu d’utiliser le tick de base d’Unreal.
Outil de correction des splines
Avec le changement des bumpers pour qu’ils utilisent des splines on a rencrontré un bug qui causait énormément de problème pour les designer du niveau. Le bug consistait que par moment à la force de manipulation et de modification causait les splines des bumper de prendre la forme par défaut fournit par unreal ce qui annulait toutes avancé dans le placement des bumpers comme chaque bumper que l’ont plaçait avait jusqu’à 3 point et que chacun avait leur propre trajectoire il était important de trouvé une solution.
La solution que j’ai trouvé fut d’enregistrer les information des splines dans des table de donnée, La table de donnée contient la position des points ainsi que l’angle d’arrivé des branches comme l’angle d’arrivé et de sortie des branches on les mêmes valeurs je n’avais qu’a enregistrer un seul de ces deux angle.
La table de donné contient la position selon la position locale c’est-à-dire par rapport à l’objet parent afin que si on décale tout les bumper dans la même direction l’information dans la table de donnée sera toujours valide.
Pour utiliser la table de donnée il a fallut que je programme un outil qui avait deux fonction.
La première était d’enregistrer les points du spline d’un bumper dans une table de donné qui sera enregistré comme un asset la position des point est enregistré selon la position locale c’est-à-dire par rapport à l’objet parent afin que si on décale tout les bumper dans la même direction l’information dans la table de donnée sera toujours valide.
La deuxième fonction est de prendre la table de donnée fournie au bumper et demandé à l’éditeur d’ajouter et placer les points en fonction des donnée enregistré dans la table de donnée au spline présent du bumper sélectionné.
Instruments
Un des détails que l'on voulait pour le jeu était d'avoir des élément qui donnait vie à l'environnement durant son exploration.
Parmi les idées que l'ont a eu j'ai été chargé de programmer l'interaction avec des instruments de musique qui sont répartie dans le niveau.
Pour réalisé cette interaction j'ai simplement fait vérifier par l'instrument s'il était en train d'overlap avec le joueur et de lancer le son qui lui a été assigné. Comme il y avait plusieurs instrument et ils n'y avait pas de différences dans ce qu'ils avait besoins et la manière qu'ils interagissait avec le joueur j'ai simplement fait une seule classe avec un seul blueprint pour faire tout les instruments.
La manière que les sons étaient joués à la base, causait le problème qu’ils étaient joués sur toute la grandeur de la carte sans différence de volume dépendamment du son. La solution fut simplement de changer les fichiers mp4 pour des « sound cues » ce qui a permis aux artistes d’accéder au paramètre d’atténuation afin de causer un changement de volume basé sur la distance entre le joueur et les instruments.
Navigation UI avec Gamepad
Les prérequis de nos projet demandait que le jeu soit entièrement jouable avec une manette du coup il a fallu ajouter certains élément à nos UI.
Pour commencer, il a fallu mettre les variables « is focusable » sur les UI et les éléments que l’on voulait sélectionner avec les contrôleurs.
Il a fallu ensuite programmer une boucle afin de changer l’apparence des boutons en fonction de s’il était sélectionné par le « focus » ou non.
Quand on ouvre un menu, on passe les entrées en mode UI et met en « focus » l’UI et le bouton du haut. Quand on quitte l’UI on le fait passer les entrées en Gameplay. La raison étant d’éviter de contrôler le joueur tout en utilisant les UIs.
Nous avons ensuite noté un bogue dans lequel le jeu pouvait perdre le « focus » après que le joueur fasse un clic de la souris. Du coup j’ai ajouté une vérification à la boucle mentionnée précédemment. Si aucun bouton n’est sélectionné dans le « focus », on remet le bouton le plus haut dans l’UI en « focus ».
Cinématique de fin
Nous avions réalisé que la fin n’était pas claire du coup ce que l’on a décidé de faire était de lancer une cinématique qui allait donner une nouvelle perspective de la carte au joueur puis de faire apparaitre les crédits qui permettrait de retourner au menu principal.
Pour lancer la cinématique, il a suffi de lancer une séquence quand le joueur rentre dans une hitbox. Toutefois ce fut pour faire apparaitre les crédits à la fin de la cinématique pour ce faire j’ai fait que durant le lancement de la séquence le programme initialise un timer dont la durée est la même que la séquence de fin. Une fois la fin du timer atteins il exécute une fonction qui a pour seul but d’afficher les crédits.
Équipe
Producteur
Kevin Lavigne-Bourque
Pierre Tousignant
Yannick Francillette
Directrice Créative
Laureline Chiapello
Musicien
Théophile Gagnard
Zoé Martinez
Dumpling
L’équipe Dumpling est une équipe formé pour le cours de production de jeux vidéo de l'année 2023. L’objectif est de créer un jeu en fonction des demande d’un client.
Vous pouvez cliquer sur les membres afin d'accéder à leur portfolio
Les membres
NAD
Nicolas Gagnon-Picard: artiste de modélisation 3D
Edwin Lam: Artiste 3D généraliste
Sofia Mayada Lorenzo: Designer de jeu et de niveau
Lucas Métivier: Modeleur de Personnage/ artiste de concepts
Coralyn Potvin: Artiste d’environnement
Jason Sellors: Artiste de modélisation 3D
Yi Theo Wei: Artiste d’éclairage/ artiste de concept
Indra Yang: conceptrice IU/ artiste de modélisation 3D
Marie-France Yang: Artiste d’environnement
Remerciments
Projet financé par le Fonds de recherche du Québec- Société et culture 311050
Pack d’ornements créé par AMcg:
« https://www.artstation.com/a/33127229 »
Ornements vintages par Rawpixel :