top of page
Banner.png

Speed Deeps (WIP)

Logo.png

Jeu de plateforme en 3D à la première personne axé sur la vitesse et le momentum, inspiré du parkour sur Minecraft.
Le principe est de traverser des niveaux souterrains le plus vite possible en évitant les obstacles à l'aide de différents blocs possédant des propriétés spéciales, posés soi-même lors d'un saut au dessus du vide. Cette mécanique est complétée avec une mécanique de série augmentant la vitesse et incitant le joueur à enchainer rapidement ses sauts.
Projet personnel en cours.

Genre

Fast Platformer 3D

Support

PC / Unreal Engine 5

Date

Septembre 2023 - Aujourd'hui

Je travaille dessus !

Rôles

Je fais tout moi-même
Sans IA

Contexte

Pour ce projet, j'ai cherché à modifier et adapter à ma façon une expérience personnelle satisfaisante: le parkour sur Minecraft. En comprenant que ce qui me faisait plaisir était la fluidité de l'enchainement des sauts et le momentum généré, j'ai décidé d'expérimenter avec cette sensation et réaliser un petit prototype de platformer.
Je me suis vite rendu compte que bien que le parkour soit satisfaisant, les joueurs ne font que suivre un trajet précis prédéfini par le concepteur, et ainsi m'est venu l'idée de proposer dans mon propre jeu une mécanique permettant de placer soi-même les blocs sur lesquels sauter lorsqu'on est déjà en l'air, à la manière d'un double saut, mais laissant une trace du passage.

Cette page aura pour but de retracer l'historique des versions de ce projet, accompagné de mes réflexions.

prototype #1

Voici un lien de téléchargement pour jouer au premier prototype, ainsi qu'un lien vers un questionnaire pour les testeurs !

Retours

Même si mon échantillon de test est très réduit car je n'ai pas jugé ce prototype apte à être révélé au grand public, j'ai quand même tenu à le faire tester par des personnes travaillant elles aussi dans le jeu vidéo.

J'ai réalisé un questionnaire portant sur toutes les mécaniques de jeu de ce premier prototype, ce qui m'a permis d'obtenir de précieux retours sur chacune d'elle. Ces retours ont entrainés plusieurs décisions pour la prochaine version du prototype, que vous retrouverez en orange dans la section Features.
Voici tout de même ci-dessous le graphique des réponses à la question "Vous êtes-vous amusés en jouant ?" qui m'a encouragé à poursuivre le développement. Un immense merci à mes testeurs !

image.png

Features

A ce stade du développement, je n'étais pas encore sûr de la direction que je voulais prendre avec mon jeu. J'ai ainsi développé des mécaniques de jeu pour tout type de public cible, et prévu d'ajuster celles-ci avec les retours de mes testeurs.

​

  • Courir

Directement inspirée de Minecraft et grand classique du platformer, cette mécanique augmentant la vitesse de déplacement a pour but de pouvoir faire gagner du temps précieux sur les surfaces larges et de prendre de l'élan avant un saut, allongeant ainsi la longueur de celui-ci. Une fois en l'air, elle influe également sur la vitesse de déplacement aérienne, donnant plus de contrôle pour viser correctement une plateforme d'atterrissage par exemple.

  • S'accroupir

Directement inspirée de Minecraft également, cette mécanique diminue drastiquement la vitesse de déplacement au sol et permet de ne pas tomber en se déplaçant sur le bord d'une plateforme. Cette feature a pour but de laisser aux débutants assez de marge de manœuvre pour prendre connaissance de l'environnement et y aller à leur rythme.
Après prise de décision que le jeu serait un platformer axé sur la rapidité, cette feature sera retirée afin d'inciter les joueurs à jouer avec leur momentum.

  • Le placement de blocs

Le placement de bloc est la mécanique principale du jeu. Il s'effectue lorsque le joueur appuie sur le bouton de saut alors qu'il est déjà en l'air, et que le volume d'un bloc sous lui ou devant lui est vide. Cette mécanique donne l'impression d'un double-saut, à la différence qu'elle laisse derrière le joueur une trace de son passage avec les blocs flottants restants derrière.
Il est prévu d'exploiter cette trace du passage du joueur en lui faisant faire l'intégralité des niveaux à l'envers une fois la fin des niveaux atteinte, changeant les blocs en obstacles que le joueur aura placé lui-même. Les plus aguerris d'entre eux devront ainsi prévoir leur trajet retour lors de leur premier passage afin d'optimiser leur temps.

  • Les différents types de blocs

Après avoir testé mon prototype avec le placement de blocs, il m'est venu à l'idée de créer différents types de blocs avec des propriétés variées afin de créer des synergies entre ceux-ci, et pousser plus loin la réflexion sur la meilleure manière de traverser un niveau en se servant de ces synergies. Je me suis limité à 6 blocs afin de ne pas surcharger le gameplay.

  • Normal Block

Le Normal Block est pensé pour être le bloc permettant l'expérience la plus proche du parkour Minecraft: il n'a aucune propriété et permet simplement au joueur de sauter à nouveau en l'air en prenant appui dessus. En cas de trop grande prise de vitesse verticale, ce bloc permet également de se récupérer tout en gardant son momentum.

NormalTestBlock.png
  • Bounce Block

Le Bounce Block est inspiré du bloc de slime dans Minecraft et permet au joueur de faire un rebond basé sur sa vitesse lorsqu'il utilise ce bloc. Il synergise aisément avec la plupart des autres types de blocs et permet d'aller plus loin qu'un Normal Block si utilisé seul avec un timing différent.

  • Spring Block

Le Spring Block est né d'un besoin de prendre de la hauteur rapidement sans devoir utiliser plusieurs Normal Blocks. Il propulse ainsi le joueur verticalement indépendamment de sa vitesse. Cet effet synergise avec le Bounce Block et le Launcher Block pour réaliser des sauts à longue distance.

SpringTestBlock.png
LauncherTestBlock.png
  • Launcher Block

Le Launcher Block est la contrepartie horizontale du Spring Block et permet de se propulser dans la direction du regard du joueur. Il répond à un besoin de prise de vitesse sans devoir accumuler de la Streak, et synergise avec le Bounce Block et le Spring Block pour sauter sur de grandes distances.

  • Repulse Block

Le Repulse Block est un bloc original basé sur le saut mural, une capacité permettant d'effectuer un saut contre un mur pour reprendre de la hauteur. Il apparait dans le sens de déplacement du joueur et s'utilise à répétition pour atteindre des endroits élevés, ou pour effectuer des demi-tours rapidement sans perdre de momentum.
Les retours ont montrés que ce bloc n'était pas suffisamment simple d'utilisation ni adapté à un gameplay rapide choisi pour la suite, il sera donc retiré de la prochaine version du jeu.

RepulseTestBlock.png
StopTestBlock.png
  • Stop Block

Le Stop Block a été conçu pour stopper le joueur net en cas d'obstacle mortel si sa vitesse est trop grande pour être arrêtée avec le déplacement aérien seul. Comme le Repulse Block, il se place dans le sens de déplacement du joueur afin de s'assurer d'un arrêt net de sa vitesse horizontale.

  • La hotbar de blocs

Il fallait un moyen de pouvoir changer le type de bloc posé une fois ceux-ci implémentés. J'ai décidé d'intégrer ce système avec une hotbar en bas de l'écran où chaque bloc est représenté et sélectionnable avec un scroll de la souris. En prévision de la suite du développement, j'ai également rendu cette hotbar dynamique en fonction des blocs disponibles pour chaque niveau, le but étant de ne pas tous les donner systématiquement et challenger le joueur en changeant ses outils de jeu.
Un testeur n'a pas trouvé cette hotbar ergonomique, et je comprend son point de vue. Je réfléchis à un nouveau moyen de changer de type de bloc plus rapidement, car scroller dans une hotbar qui peut changer d'un niveau à un autre peut être déstabilisant. Je pense qu'attribuer un bouton par type de bloc peut être une bonne idée.

image.png
  • Le crosshair

Le crosshair est une petite feature d'accessibilité que j'ai pris l'habitude d'intégrer pour les jeux à la première personne afin de limiter le motion sickness, en particulier pour un jeu à déplacement rapide.

image.png
  • La Slow Motion

Dans un soucis d'accessibilité, j'avais décidé d'intégrer une mécanique de slow motion afin d'aider les joueurs débutants à se déplacer correctement lorsque leur vitesse est élevée. Celle-ci est limitée par une jauge qui se remplit à chaque saut effectué et se vide lors de l'utilisation du slow motion.
Malgré des retours positifs des testeurs qui l'ont utilisé, je pense que cette mécanique n'est finalement pas adaptée pour un platformer rapide. Elle sera retirée avec le prochain prototype.

image.png
  • L'indicateur de vitesse

Avec l'intention de récompenser le joueur pour la vitesse maximale atteinte lors d'un niveau, j'ai trouvé pertinent d'afficher en continu sa vitesse de déplacement sur l'interface de jeu.

J'ai prévu d'adapter l'unité de l'indicateur en miles per hour avec la localisation du jeu pour le public utilisant ce système métrique.

image.png
  • La mécanique de streak

J'ai cherché à rendre mon jeu unique en lui donnant une mécanique spéciale rarement vue dans le genre du platformer. En repensant à mes expériences de jeu de ce moment, je me suis rappelé de la mécanique de streak de la série Devil May Cry, et j'ai ainsi cherché à l'adapter pour mon platformer et à la lier au momentum du déplacement. J'ai ainsi créé une mécanique de streak augmentant à chaque fois que le joueur touche une nouvelle plateforme, pour m'assurer que le joueur est toujours en mouvement. Afin de lui ajouter un intérêt, j'ai également décidé qu'elle augmenterait la vitesse du personnage pour que les joueurs expérimentés puissent aller plus loin dans la préparation de leur parcours pour réaliser les meilleurs temps. La streak s'annule si le joueur touche 2 fois la même plateforme, s'il reste sur la même pendant un temps imparti ou s'il s'arrête de bouger.

  • Le lobby

Avec les mécaniques de jeu en place, j'ai pensé à créer un environnement de jeu adapté à celles-ci afin de permettre aux testeurs de mieux se projeter dans la vision que j'avais pour le jeu. J'ai ainsi construit un lobby où le joueur apparait et retrouve des textes explicatifs des mécaniques principales. Il a accès à tous les types de blocs et peut s'en servir à l'infini dans le lobby.
A cet effet, j'ai construit un playground avec différents reliefs et challenges. Il pourra également y retrouver 6 portes menant à des niveaux mettant en lumière l'utilité de chaque type de bloc.

image.png
  • Les prototypes de niveaux

J'ai créé 6 niveaux, soit un par type de bloc, afin d'isoler chacun d'eux dans des situations qui les mettent en valeur. Chacun de ces niveaux est un parcours à traverser le plus vite possible avec une quantité de blocs limitée.

  • Normal Block

Le niveau dédié au Normal Block est pensé pour être le premier niveau de test que le joueur va essayer. Il comporte donc une courte partie d'introduction aux déplacements de base avant de nécessiter d'utiliser la mécanique de pose de bloc. Le Normal Block sera ensuite utilisé pour s'échapper d'une chute sur des pics mortels et traverser des couloirs sans plateformes.

image.png
  • Bounce Block
image.png

Le niveau du Bounce Block tire parti de celui-ci en faisant prendre au joueur de la vitesse avant de s'en servir. Il alterne entre des parties de chutes très verticales, et des parties où il faut se servir des rebonds pour parcourir de la distance horizontale. 

  • Spring Block

Le niveau du Spring Block alterne encore une fois le vertical et l'horizontal. Il commence avec un couloir en escalier pour son utilisation la plus basique, puis est ensuite utilisé pour parcourir des distances en utilisant la vitesse horizontale du joueur, et se termine par une ascension finale autour d'un pilier.

image.png
  • Launcher Block
image.png

Dans ce niveau très horizontal, j'ai mis la capacité du Launcher Block à l'honneur en faisant parcourir au joueur d'abord de simples sauts en longueur, puis des sauts dans des angles sans plateforme, pour finir avec un long couloir qu'il doit traverser à l'aide de la vitesse accumulée donnée par le bloc. 

  • Repulse Block

Le Repulse Block étant un bloc faisant gagner de la hauteur par aller-retours, j'ai décidé de réaliser un niveau tout en escaliers, avec une première partie apprentissage et une seconde partie challenge avec des pics.

image.png
  • Stop Block
image.png

Le dernier niveau de test est celui du Stop Block, utilisé pour s'arrêter devant un danger mortel quand le joueur est propulsé à grande vitesse. Il fait pour cela utilisation des Launcher Block. Il commence avec une première partie verticale où le joueur est projeté successivement contre des pics, et se termine avec de longs couloirs horizontaux où le joueur devra s'arrêter au dessus de trous pour ne pas finir dans des pics.

  • Le Chronomètre

Qui dit jeu de rapidité dit forcément chronomètre, sans quoi les joueurs ne peuvent pas évaluer correctement leur performance. Celui-ci se trouve sous la hotbar de blocs et passe d'un format xx.xx secondes à x:xx.xx lorsqu'une minute passe pour plus de clarté en début de niveau. Il n'est déclenché que lorsque le joueur commence à se déplacer au début d'un niveau, pour lui laisser le temps d'explorer le niveau en Scouting Mode.

image.png
  • Les rangs

J'ai décidé de soumettre les niveaux à un système de rang pour mesurer la performance du joueur et l'encourager à s'améliorer. Une fois un niveau terminé, un écran de rang s'affiche comme ci-dessous. Les rangs sont déterminés par 3 critères: le temps pour arriver à la fin du niveau, la vitesse maximale atteinte et la streak maximale atteinte. Pour chaque niveau, les objectifs de chaque critère représentent le rang maximal, le rang S. Le rang global du niveau est ensuite déterminé en faisant la moyenne des rangs de chaque critère. Le rang S+ est décerné pour les joueurs réussissant à obtenir le rang S sur tous les critères.

image.png
  • Le Scouting Mode

Pour les joueurs voulant apprendre la disposition des niveaux en amont, j'ai ajouté une mécanique de Scouting Mode permettant de se déplacer librement dans ceux-ci sans être interrompu par les obstacles. Il est activable à n'importe quel moment dans le niveau, tant que le joueur ne bouge plus et est au sol, mais son utilisation est plus optimale au début du niveau.

image.png
  • Le compteur de blocs restants

Dans ce prototype, j'ai décidé de limiter la quantité de blocs par niveau, en pensant qu'en avoir une quantité infinie allait amener à des problèmes de performance puisque les blocs restent en place après le passage du joueur. Afin de laisser la liberté au joueur de créer son propre chemin, ce décompte est global peu importe le type de bloc utilisé et est assez large pour que la fin des niveaux puisse être atteinte sans forcément devoir optimiser son trajet sur ce critère. Sur l'interface, le nombre restant de blocs est indiqué au centre de l'écran et diminue avec une légère animation à chaque fois qu'un bloc est posé afin de mettre en avant cette information au joueur.

image.png
  • Le redémarrage rapide

En testant et finissant mes niveaux, j'ai réalisé qu'il serait pratique de pouvoir réessayer instantanément un niveau à la fin de celui-ci pour améliorer son score. Finalement, j'ai opté pour rendre ce redémarrage rapide accessible à tout moment dans le niveau pour permettre de recommencer ce dernier en cas d'erreur. Les joueurs souhaitant s'entrainer sur un niveau en particulier peuvent ainsi le faire à volonté et s'améliorer rapidement.

prototype #2

Le second prototype est actuellement en cours de développement, patience !

Features

Avec les différents retours récoltés sur le premier prototype, j'ai pu prendre une décision d'orientation pour mon jeu.
Celui-ci sera un platformer rapide basé sur le momentum, et par conséquent, des features ont été retirées, changées ou ajoutées pour mieux correspondre à cette vision.

  • Un meilleur placement de blocs

Un retour du premier prototype qui m'est resté en tête était un problème concernant le placement de blocs. En effet, tel que je l'avais scripté, celui-ci n'autorisais pas la pose de blocs quand le personnage était contre un mur, car le volume d'un bloc ne pouvais pas y être placé. J'ai donc réduit le volume minimum demandé afin que les joueurs puissent poser des blocs, même contre une paroi.

  • Le Coyote Jump

Un second retour pertinent montrait que lorsqu'un joueur voulait sauter au bord d'une plateforme, il utilisait parfois un bloc involontairement car il se trouvait déjà dans le vide. Afin de corriger ça dans les futures versions du jeu, j'ai ajouté un Coyote Jump qui ajoute un laps de temps très court après avoir quitté une plateforme où le saut du joueur est encore possible sans utiliser de bloc. Les joueurs peuvent ainsi prendre de l'élan sur les plateformes sans risquer d'utiliser un bloc par erreur.

bottom of page