

12 mai 2025
4 semaines

Le projet Creatures est mon projet de fin d'année de 2ème année à Game Sup. L'intention principale de ce projet était d'avoir un jeu tranquille dans lequel on peut se détendre.
On y incarne une chercheuse qui vient s'installer dans une région avec des créatures particulières. Dans cette région se trouve une maladie qui se répand. Le but du jeu est de sauver et préserver les différentes espèces de créatures afin de pouvoir les étudier.
Au sein de ce projet, je me suis occupé de toute la programmation et implémentation du gameplay d'exploration. Je me suis donc principalement occupé des 3C, des éléments de niveaux ainsi que des intelligences artificielles. J'ai notamment fait l'intégration de la quasi-totalité de l'interface utilisateur du projet.
Intelligence Artificielle
Le but pour ce qui est des intelligences artificielles était d'avoir des animaux semblants vivants. J'ai alors fait un système où les créatures se baladent dans leur environnement et réagissent au joueur. Pour une question de temps, je n'ai fais que deux réactions : si le joueur tient dans sa main un aliment, la créature s'approche de lui. Si le joueur décide de donner l'aliment à la créature, celle-ci peut soit aimer ou détester celui-ci. Dans le cas où elle l'apprécie, le joueur peut la prendre avec lui afin de la ramener dans son sanctuaire où il pourra ensuite s'occuper d'elle.


La deuxième réaction est lorsqu'elles sont contaminées par la maladie. Dans cet état, elles attaquent le joueur lorsqu'elles le voient. Le joueur peut donc renvoyer ses attaques afin de se défendre et de neutraliser la créature, ce qui la soignera de sa maladie.

Créature normale

Créature contaminée attaquant le joueur
Interface Utilisateur
Menu du Joueur
Dans une version non publiée du projet, j'ai totalement refaçonné l'interface utilisateur. Désormais, les menus principaux du joueur sont rangés en tant que sous-menus d'une interface qui les regroupe.
Afin de faciliter l'ajout d'un nouveau sous-menu, j'ai créé une Data Table qui, pour chaque entrée, contient les informations d'un sous-menu ; tel que la classe du Widget, l'icône dans la barre de sélection ou bien les inputs pouvant être utilisés dans le sous-menu.


Une partie du code du système d'inventaire en C++.
Cette fonction permet de retirer un objet de l'inventaire en donnant l'ID de celui-ci. Le système regarde alors s'il trouve un objet correspondant à celui de l'ID donné en paramètre. Si c'est le cas, il en retire la quantité demandée.





Pour ce qui est des inputs affichés dans l'UI, j'ai également fait une Data Table qui contient le nom de l'action, ainsi que les inputs relatifs sur les différents contrôleurs.
Cela permet de facilement afficher les inputs pour le joueur dans n'importe quelle interface, voire dans le monde.
Roue des Pouvoirs
Il était prévu que l'on se puisse se servir des créatures pour qu'elles nous aident à résoudre des puzzles environnementaux.
Nous avions donc une roue des pouvoirs qui pouvait être ouverte, ainsi que des raccourcis (dans le coin inférieur gauche du Screenshot) dans lesquels on pouvait attribuer les pouvoirs.

Système de Dialogue

Enfin, nous avions rajouté des PNJ avec lesquels le joueur pouvait discuter et interagir.
Dans l'idée d'avoir un protagoniste un petit peu présent narrativement, il était possible pour le joueur de répondre à la fin de certains dialogues ; ce qui pouvait effectuer tout un tas d'actions, comme démarrer un nouveau dialogue, ouvrir un menu, etc.
J'ai donc créé un système via des Primary Data Assets, ce qui permet de facilement créer de nouveaux dialogues.
Celui-ci contient une liste de phrases, qui chacune contient d'abord l'information du personnage étant en train de parler, et enfin la phrase qu'il dit.


Pour ce système, nous avions décidé d'animer l'écriture du texte afin simuler une phrase qui est récitée.
Pour ce faire, je n'ajoute pas les caractères un à un dans la boîte de texte. Par défaut, toute la phrase est déjà écrite, mais tous les caractères ont une opacité de 0%. Puis, un à un, j'augmente leur opacité au maximum.
Ce système permet d'éviter de voir le texte retourner à la ligne lorsqu'il est écrit, car de cette façon, tout le texte se trouve dès le début dans la boîte de texte.
Et la suite ?
Dans le cadre d'un développement plus long, les créatures auraient plusieurs réactions à l'approche du joueur (fuir, ignorer, être curieuses, …). Elles auraient également un comportement plus complexe, basé sur leurs besoins ainsi qu'un système d'amitié plus complexe basé sur la façon dont le joueur prend soin de la créature.




















