Contact

Mail pro : lejeunematheo@outlook.com

Linkedin : https://www.linkedin.com/in/mathéo-lejeune-041138409/

Euphonia

Dans le cadre de mon travail de fin d’études, nous avons créé le jeu Euphonia. Il s’agit d’un jeu narratif d’exploration et de résolutions d’énigmes où notre personnage principal, accompagné d’un petit robot, découvre le village de ces ancêtres et tente de comprendre les évènements passés.

Outils utilisés

Pour la réalisation de ce projet, j’ai principalement utilisé Unreal Engine 5 en blueprint pour créer les mécaniques et UMG pour les UI. Google Forms a été utilisé pour la réalisation de questionnaire de playtest.

Systèmes de gameplay

Enigmes

Pour cette tâche, j’ai créé une UI modulable afin de pouvoir changer le type d’énigmes et les solutions plus facilement.

Au début, je suis parti sur une UI par énigme car chacune avait des besoins spécifiques mais au vu du nombre d’interfaces utilisable dans le jeu, je suis parti sur une UI capable de s’adapter aux besoins précis (type d’énigmes, solution, symboles/mots utilisables pour cette énigme, cadran déjà complété ou inaccessible).

En terme d’inspiration, vu qu’on travaille avec un registre de 8 symboles, je me suis inspiré des menus radiaux de sélections d’armes comme celui de GTA 5.

Un obstacle que j’ai pu rencontré est l’utilisation de la souris qui ne sélectionnait pas le même angle selon les tailles de fenêtre.

Enigme : Association de symboles

Cette énigme se base sur l’observation des éléments environnementaux du jeux et permet au joueur de compléter une interface avec des symboles. Une fois réussie, le système permet au joueur d’avancer dans son aventure.

Enigme : Charade

Cette énigme sert uniquement de référence au joueur afin qu’il puisse entrer un code sur l’interface de handpan.

Enigme : Collecte et associations de mots

Cette énigme fonctionne comme le premier type mise à part que les symboles sont remplacés par des mots. Pour trouver ces mots, le joueur doit lire les différents panneaux de la zone afin de repérer et collecter les mots importants pour la résolution de l’énigme.

Cette énigme résulte de la première version de la mécanique de compréhension du langage mais celle-ci étant trop complexe à haute échelle a été réduite afin de correspondre une portée plus réduite et accessible au joueur.

Réflexion de la lumière

Pour cette tâche, j’ai créer un système qui permet à Lao (le compagnon robot) de réfléchir la lumière en cône devant lui.

Les obstacles que j’ai pu rencontrer était de trouver comment faire un cône visuel et de produire un réseau de raycasts correspondant au diamètre du cône.

J’ai donc effectué plusieurs vérifications afin de détecter les cibles éligibles :

  • Un produit scalaire permet de savoir si l’acteur est dans l’angle de vision du personnage jouable. Si on ne fait rien de plus, les acteurs cachés derrière deviennent éligibles également.

  • Si au moins un acteur est détecté, un réseau de raycasts est lancé où chacun d’entre eux s’arrête au premier acteur rencontré permet d’éviter de toucher aux acteurs non accessibles directement. Chaque raycast ne détecte que les objets appartenant aux valurs d’enum d’EObjectTYpeQuery WorldStatic, WorldDynamic et Pawn afin d’eviter un bloquage par des objets “traversables” (godrays)

Handpan

Pour cette tâche, j’ai crée avec Mathéo Gollas une UI permettant de jouer des combinaisons de symboles et de changer les solution plus facilement. Des retours dont fournis au joueur lorsque celui-ci entre un code mauvais ou correct.

Pour la validation d’une réponse, chaque objet pouvant être activé par le handpan est notifié. Si l’index de la zone ou le handpan est joué correspond à l’index de l’objet alors celui-ci vérifie si le code jouer correspond au sien et s’active en conséquence.

L’obstacle que j’ai rencontré est lié à la validation du code. Au départ, on permettait au joueur de valider au centre son hypothèse mais cette façon était moins comprise par les joueurs. On est donc passé à une version qui valide automatiquement le code.

Version scrapped :

Version finale :

Pour cette tâche, j’ai créé une UI se complétant au fur et à mesure que le joueur progresse dans les énigmes afin de garder une trace de ce qu’il a déjà accompli. L’interface se remplie d’elle même à chaque résolution d’énigme.

Une première version consistait en un journal d’hypothèses où le joueur sélectionnait une paire de symboles et y reliait avec des mots trouvés dans l’environnement. Cette version était peu utile et on a donc préféré faire un journal qui contient toutes les découvertes qu’on fait au feu et à mesures de la résolution d’énigmes.

Version scrapped : Version finale :

Réactions des objets aux actions du joueurs

Pour cette tâche, nous avons créé avec Mathéo Gollas différentes interfaces réagissant aux actions du joueurs. On nous avons fait ce choix suite au nombre d’objet avec lesquels nous devions interagir et avoir des systèmes communs à chaque objets similaires facilite la tâche. Chaque objet utilise les fonctions des interfaces afin d’y introduire leur fonctionnement.

Les types d’objets créés sont :

  • Les objets Interactibles : objets qui fournissent une action lorsque le joueur interagit avec au moyen d’un bouton.

  • Les objets Light Receiver : objets qui réagissent à des rayons de lumières dans l’environnement et ceux réfléchis par le joueur.

  • Les objets Powerable : objets effectuant une action lorsqu’un autre objet lui demande suite à une action du joueur.

Tyrolienne/Téléphérique

Pour cette tâche, nous avons créé avec Mathéo Gollas, un système permettant de faire voyager le joueur d’un point à un autre en utilisant des cabines de téléphérique. Ces systèmes peuvent être soit alimentés directement soit doivent être alimentés par les actions du joueur.

Au lancement du jeu, un câble est tiré entre les 2 points donnés en paramètres du câble et c’est deux point sont définis comme départ et arrivée lorsque le joueur rentre dans une cabine.

Pendant que le joueur traverse avec une télécabine, une autre effectue le chemin inverse afin qu’il y ait toujours une télécabine de disponible à n’importe quelle station. Les variables des cabines interchange leurs valeurs à la fin de chaque trajet pour que le joueur s’arrête toujours au bon endroit.

Une première version consistait à forcer le joueur à suivre les câbles de la tyrolienne.

Version scrapped :

Version finale :

Paramètres

Pour cette tâche, j’ai crée une UI afin de répondre aux besoins d’accessibilité :

  • Sensibilité des inputs
  • Modification de l’affichage et qualité graphique
  • Passage d’un type de clavier à un autre (AZERTY/QWERTY)
  • Langage (français/anglais)
  • Volume du son (général, effets, musiques)
  • Rappels des différentes touches

Tous ces paramètres sont également sauvegardés dans un fichier “.sav” qui reprend les paramètres et les associent au démarrage du jeu.

Outils créés

Système de respawn

Un système de respawn a été en cas de chute su personnage dans le vide, le joueur est replacé sur la zone la plus proche depuis laquelle il a chuté.

Pour ce faire des zones cibles sont réparties sur les niveaux et à chaque fois que le joueur en traverse une, il réapparaitra là lorsque le joueur traverse la zone de collision à la hauteur minimale que le joueur peut atteindre.

QA & Production

Gestion des playtests

Je me suis occupé de la gestion des playtests , les tâches que j’ai pu faire afin de les préparer au mieux :

  • Communication entre le groupe et les organisateurs afin que chaque membre sache ce qu’ils doivent faire et préparer pour le jour de test.
  • Lancer des publications avertissant de notre présence aux endroits de test via nos réseaux sociaux.
  • Rédaction des questionnaires de fin de session et révision de ceux-ci pour synthétiser les retours des joueurs.

Liens des questionnaires :

Questionnaire court : https://docs.google.com/forms/d/e/1FAIpQLSfNivbWjuvDzZ0Yg_8RqFwTaI2aNv91rC8Q-Mdo_5paPvM7-Q/viewform?usp=publish-editor

Questionnaire long : https://docs.google.com/forms/d/e/1FAIpQLSei9R54Vm2nDQ7B9WYd1_JZW-lWwzzpkWlGs8uhXFSCTqYnNQ/viewform?usp=dialog