Nine O'Clock : Programmation
-
En général :
-
Étant donné la quantité de travail que nous devions fournir sur une petite période de temps, j'ai également pris la décision de ne pas seulement me concentrer sur du design, mais également de me pencher dans la programmation blueprint, afin d'aider les 2 intégrateurs à fournir le travail requis, mais également dans un but d'apprentissage de ce langage de programmation.
Voici donc quelques éléments du jeu sur lesquels j'ai travaillé
-
-
Kill Wall
-
Pas de game over dans le jeu, même en cas d'erreur ou de manquement.
-
Si le joueur rate un engrenage et ne revient pas dans le temps pour corriger son erreur, un trigger le renvoie un peu en arrière.
-
Cette approche évite la frustration et permet au joueur de continuer à progresser sans être bloqué.
-
Programmation :
-
Vérification de la collision avec le joueur pour activer un booléen
-
Incrémentation d'une variable chaque frame tant que le booléen est actif (jusqu'à un maximum de 1)
-
Utilisation de cette variable comme référence dans un post process pour effectuer un fondu en noir progressif
-
Réinitialisation de la variable à 0 lorsque le joueur réapparait au niveau du checkpoint.
-
-
-
Explosions
-
Les explosions étaient cruciales pour créer un sentiment d'urgence chez le joueur.
-
Elles étaient placées le long des rails pour être toujours visibles dans l'angle de caméra du joueur.
-
Certaines explosions avaient des effets supplémentaires, comme l'apparition de personnages ragdoll.
-
Elles étaient accompagnées d'un tremblement de caméra pour renforcer l'effet de catastrophe et d'immersion.
-
Ces explosions ont été soigneusement conçues pour s'intégrer dans la narration et l'expérience de jeu globale.
-
Programmation :
-
Les explosions sont gérées par un système qui détermine le nombre d'explosions (de 1 à 3) et sélectionne aléatoirement un son parmi 4 possibilités pour chaque explosion.
-
Chaque explosion est accompagnée d'un effet visuel de particules pour renforcer l'impact visuel.
-
Lorsqu'une explosion se déclenche, la caméra subit un tremblement pour simuler le choc.
-
Un délai de 0.2 seconde est ajouté entre chaque explosion pour éviter une accumulation trop intense d'effets sonores et visuels.
-
Les explosions sont déclenchées par un trigger qui détecte le contact avec le joueur.
-
Certaines explosions projettent des petits personnages ragdoll, dont le nombre et la direction sont déterminés aléatoirement.
-
Chaque personnage ragdoll reçoit une force dans une direction spécifique (x, y, z) pour simuler un mouvement réaliste de projection.
-
Ces éléments combinés contribuent à créer des explosions spectaculaires et immersives pour le joueur.
-
-
-
Éléments visuels (Pendule)
-
Dans la phase 2, au tout début, le joueur va devoir enchaîner des petits sauts sur des plateformes. Plateformes qui sont des pendules dans la diégèse du jeu.
-
Programmation :
-
J'ai utilisé une timeline avec une valeur float entre 0 et 1 comme référence pour le mouvement des pendules.
-
La timeline était configurée pour alterner la position du pendule entre sa position de départ et sa position finale.
-
L'utilisation de la fonction lerp (linear interpolation) a permis de donner un mouvement sinusoïdal au pendule, similaire à celui que l'on retrouve dans la réalité.
-
En ajustant les paramètres de la timeline, j'ai pu contrôler la vitesse et l'amplitude du mouvement du pendule.
-
Cette approche a permis de créer des pendules animés de manière réaliste, contribuant ainsi à l'immersion du joueur dans l'environnement du jeu.
-
-
-
Retour dans le temps
-
Le retour dans le temps a été la deuxième chose la plus compliquée à mettre en place. Mais je suis très fier d'avoir réussi à le faire fonctionner parfaitement.
-
Programmation :
-
J'ai ajouté une interface dans le blueprint du joueur pour gérer le rewind.
-
À l'intérieur de cette interface, j'ai programmé la récupération de la position du joueur dans le monde et de sa célérité.
-
En utilisant un custom event, j'ai mis en place le mécanisme qui permet au joueur de revenir à sa position précédente avec une célérité inversée lors de l'activation de la capacité rewind.
-
Pour arrêter l'utilisation de la capacité rewind, j'ai créé un autre custom event qui ramène le personnage à sa position normale.
-
J'ai rencontré un problème où la célérité du personnage continuait à s'additionner après l'utilisation de la capacité rewind. J'ai résolu ce problème en réinitialisant la célérité du personnage à zéro lorsque la capacité rewind était désactivée.
-
-
-
Post Process
-
Enfin, le travail le plus compliqué a été la mise en place de l'effet de VHS qui se rembobine lorsque le joueur utilise sa capacité de rewind. En effet, il fallait marqué visuellement que le personnage était en train de rewind, et j'ai donc créé un post process pour cela.
-
Programmation :
-
Utilisation d'un switch pour alterner la valeur du post-process entre 0 et 1
-
Activation de l'effet VHS (valeur à 1) lors de l'utilisation de la capacité rewind
-
Désactivation de l'effet VHS (valeur à 0) lorsque le personnage cesse d'utiliser sa capacité
-
-
-
EN CONCLUSION
-
La programmation blueprint a toujours été quelque chose qui m'a intrigué et j'étais très désireux d'en savoir plus. Ce projet m'a donc permis d'apprendre comment fonctionnait ce langage de programmation, à expérimenter par moi-même, et à apprendre de mes erreurs. Au final, je suis très fier des différents éléments de programmation que j'ai pu apporter dans le jeu, tout en sachant que ce sont des éléments de gameplay importants et utiles à la progression, mais aussi à l'immersion du joueur !