top of page

Moteur : Unity 2D mobile

Langage : C#

Rôle : Programmeur

Taille du groupe : 6

Temps de production : Quelques mois

Mode : Solo

Crystal Moon

Moteur 

Langage 

Rôle 

Taille du groupe

Temps de production 

Mode

Unreal Engine 5.3

Blueprints

Programmeur

10

10 mois

Solo

Description du projet

Crystal Moon est le projet de fin d’étude à l’ESMA et c’est un projet qui est réalisé durant l’entièreté de cette année. C’est un projet qui nécessite d’être bien plus rigoureux puisque le temps de production y est propice. On est donc passé par plusieurs rendu que l’on devait faire tout le long de l’année en commençant par la phase de R&D (recherche et développement), puis la Vertical Slice, l’alpha et pour finir la Beta.

Objectif du jeu 

2.png

Le joueur incarne un explorateur qui a atterri sur une lune gelé, il doit parcourir de nombreux puzzle afin d’avancer dans le jeu et découvrir ce qu’il s’est passé dans cet endroit totalement inconnu du personnage.

Fonctionnement du jeu

Le joueur commence dans un endroit sans aucun équipement, il avance dans la map et découvre une arme aux propriétés diverses qui lui sont utilises pour résoudre des énigmes. Il trouvera aussi des éléments de codex qui lui permettent d’en apprendre plus sur la civilisation qui était présente sur la planète des années avant l’arrivée de notre personnage.

Technique

En prenant compte que le projet est réalisé sur une année, la mise en place du projet devait se faire plus minutieusement, ainsi les 2 programmeurs, dont moi qui partageaient le poste se sont rapidement mit d’accord sur qui s’occuperait de quoi et je me suis donc principalement concentré sur ce qui tourne autour du personnage, de son interface, ses mécaniques, ...

​Afin de limiter les problèmes liés à l’importation des modèles 3d, de la mise en place des niveaux, ... L’objectif était de commencer le projet en montrant au groupe comment fonctionnait le moteur et son lien avec GitHub Dekstop pour empêcher les conflits possibles au maximum. Chaque membre du groupe possède sa propre branche et réalise des commits à chaque modification effectués.

Etant donné le type de jeu “Puzzle Game”, mon objectif était de créer un maximum d’outils réglables qu’ils puissent utiliser facilement pour confectionner les différents puzzle.

Caméra

L’un des éléments principaux du jeu est le fait que le joueur n’a pas le contrôle de sa caméra et donc le point de vue qui lui est proposé est mit en place en amont par les levels designer. De nombreux outils ont été créés pour faciliter cela via des transitions de caméra.

En cherchant de nombreux moyens de les réaliser, la meilleure solution est d’utiliser les splines pour réaliser ces transitions, la spline est placés dans l’editor ainsi qu’un point de vue final de transition, le code check en continu l’avancée du joueur par rapport à la spline et réaliser un lerp vers le nouveau plan de caméra. Cet outil est le plus basique qui est présent puisqu’il en existe d’autres pour des cas plus spécifiques.

image.png

In Engine

In Game

En effet, pendant les puzzles, le meilleur moyen était d’utiliser des plans de caméra fixes, ainsi de la même manière le joueur passe par une spline qui, lorsqu’il arrivait au bout de celle-ci, la caméra se détache du personnage pour se positionner à une position dans le monde.

image.png

In Engine

In Game

Afin de créer des transitions plus “contrôlés” un blueprints spécial permet de réaliser des Travelling avec une deuxième spline placée qui est celle que la caméra parcoureralorsque le joueur se déplacera sur le chemin définit. De plus, des caméras sont positionnées à chaque point de cette nouvelle spline afin de pouvoir choisir différents angles de caméra. En supplément de devoir check la position du joueur sur sa spline pour réaliser le lerp, il regarde aussi la distance entre chaque point de la spline pour la caméra et fait un lerp supplémentaire entre chaque afin de changer la rotation de la caméra en fonction des rotations définis dans l'editeur.

image.png

In Engine

In Game

De nombreuses variables sont présentes sur chacun de ces outils qui permettent par exemple de réaliser des cut, c’est à dire que la transition de ne se fera pas et que le point de vue change directement ce qui est utile dans certaines situations, il est aussi possible d’inverser le sens de rotation du lerp pour qu’il prenne un chemin différent, ...

Tool

Durant ce projet, j’ai aussi utilisé pour la première fois le Tool System d'Unreal afin de créer un outil qui permet aux levels deigner de créer un chemin (pour les cubes présents dans notre jeu) plus facilement via une interface claire et des inputs simple. Je me suis introduit aux tools via un tuto qui permettait simplement de faire rotate un objet sélectionné et ça m’a permit de comprendre clairement comment en créer un comme je le veux.

Il fonctionne de cette manière

 

La personne place un premier bout de chemin qu’il sélectionne, il peut ensuite utiliser l’interface crée afin de positionner la suite du chemin dans la direction qu’il choisit avec les input ZQSD puis en cliquant sur le type de chemin qu’il veut (un angle à 2 sorties, à 3 sorties, une fin de chemin,...)

1.gif
bottom of page