DREAM : Où les rêves entrent en scène
DREAM : Où les rêves entrent en scène
Vous incarnez deux nouveaux membres de l'organisation DREAM, une organisation permettant à tous les enfants du monde de rêver. Votre but est d'organiser le rêve d'un enfant tout en faisant attention à ce qu'il ne vous voit pas !
Concours universitaire Ubisoft 2024
L’objectif était de développer, en 10 semaines, un prototype de jeu vidéo jouable qui répond au thème et aux contraintes fournis par un jury composé de professionnels d’Ubisoft. Nous l'avons fait tester au studio Ubisoft Montréal où d'autres jeux étaient présentés par d'autres universités participantes.
Les contraintes
Lors du concours, le thème imposé était le rêve tandis que les contraintes étaient :
Fournir une expérience multijoueur en ligne avec une mécanique d’interactions coordonnées
Contenir au moins un élément qui varie à chaque session de jeu en fonction de la session précédente
Contenir au moins une mécanique gouvernée par l’intelligence artificielle
Inclure au moins un concept design d’épuisement
Être classé « E »
Posséder une fonctionnalité d’accessibilité
Ma contribution
Saisir les objets à deux joueurs
Dans un premier temps, nous nous sommes occupés de la tâche la plus complexe associée à notre projet, le système de grab à deux joueurs. Les joueurs peuvent donc déplacer des cartons sur la carte, cependant, notre jeu étant multijoueur en ligne, il nous faut trouver des astuces pour cacher la latence aux joueurs afin que le déplacement soit fluide.
Chaque joueur simule sa propre version de l'objet
Afin que l'interaction soit fluide entre les joueurs nous avons décidé de prendre le parti suivant : Chaque joueur aura sa propre version de l'objet s'orientant par rapport aux deux joueurs de son coté du jeu. Ainsi, la latence est imperceptible lorsqu'un joueur attrape un objet mais il faut faire attention à ce qu'il n'y ait pas de désynchronisation de l'objet attrapé.
Simulation simple de la physique des objets
Après de très rapides tests, nous avons observé que la réplication de la physique n'était pas faite correctement et fonctionnait très mal. La physique du moteur n'étant pas déterministe, nous avons décidé de simuler la physique nous-même de façon très simple. Cela permet d'éviter les désynchronisations tout en donnant des effets moins réalistes à nos objets. Ainsi, nous avons réimplémentés :
La chute des objets
Les collisions des objets avec les décors
Le système d'interaction
Les joueurs peuvent interagir avec toutes sortes d'objets afin d'avancer dans la partie. La principale utilisée de celui-ci est de permettre aux joueurs d'interagir avec les cartons pour les attraper.
Cependant, nous voulions aussi qu'ils puissent :
Activer des leviers
Activer des lampes
Tirer des rideaux
Malheureusement, dans notre prototype final, ces dernières n'ont pas été intégrées.
Une zone d'interaction
Chaque joueur possède une zone d'interaction correspondant à une capsule, les objets qui entreront dans cette zone seront considérés comme "interagissables".
De la prédiction chez le client
Chaque objet pouvant être "interagissable" possède des fonctions permettant d'afficher ou de cacher des choses lorsqu'un joueur entre dans son champ d'interaction
La prédiction jusqu'à l'interaction
Pour cacher la latence, on autorise certains objets à être interagi directement depuis le client (sans attendre l'accord du serveur), si le serveur décide qu'il n'avait pas le droit, l'interaction doit alors être annulée
Le système de tâche et de cartons
Le joueur doit accomplir des tâches toutes au long de la partie, dans notre version finale, ce sont juste des cartons qui doivent être amenés à certains endroits. Mais nous devions aussi avoir d'autres types de tâches comme :
Allumer et orienter les projecteurs
Changer le fond de la scène
Affichage des tâches en haut à gauche de l'écran
Ces tâches représentent les cartons à amener sur la scène
Tous les types de tâches et de cartons n'ont pas été implémentés dans notre prototype final mais ceux-ci sont stockés dans des «data tables» permettant de les modifier ou d'en ajouter très facilement.
Le temps des tâches
Chaque tâche a un temps de vie et lorsque celle-ci est achevée, on calcule un bonus de score grâce au temps restant
Les emplacements de cartons
Les tâches qui demandent des cartons ajoutent des marqueurs à la scène représentant l'endroit où placer ces cartons
Et quelques autres choses...
Chat vocal
L'implémentation du chat vocal a été rendue possible grâce aux services en ligne d'Epic, qui fournissent une fonctionnalité de chat vocal
Déroulement de la fin de partie
À la fin de la partie, les joueurs doivent avoir atteint un quota pour ne pas être licencié. Cela comprends aussi un discours de la patronne qui nous félicite au non
Synchronisation des joueurs
Les joueurs sont synchronisés au début de chaque partie afin qu'ils commencent en même temps et ait le même temps au compteur