Réaliser un niveau infini est une tâche qui, de manière assez contre intuitive, est plus facile que de réaliser une succession de niveaux prédéfinis. Pourquoi ? Car le niveau infini n’est en réalité « qu’une boucle » qui ne s’accompli jamais. Mais pour garder un intérêt, l’infini doit varier ! Je vais vous montrer comment j’ai réfléchi cet «Eternal Tourment », pour que le joueur joue et continue ce niveau dont la seul issue est la mort …

De manière assez schématique, l’infini d’un niveau se résume à un défilement continu d’éléments graphiques (le décors) , des décors et obstacles physiques, et des vagues d’ennemis. Vous mettez ça dans une boucle,« tant que le joueur est en vie» « les monstres apparaissent» . Voilà, vous avez un niveau infini. Bon ça requiert des préalables : création des ennemis, création des décors, du personnage … mais on part du principe que c’est fait. C’est important que les boucles ne finissent jamais pour ne pas sortir le joueur de la diégèse. Le couper du jeu c’est lui couper l’envie de continuer. Il doit se sentir « impliqué » dans le jeu, éprouver un sentiment d’accomplissement. C’est plus facile qu’un niveau classique à cause du découpage et du montage. Un niveau doit répondre à une logique : de gameplay, d’histoire, de continuité. Plusieurs niveaux se succèdent et se découpent en poursuivant cette logique (difficulté croissante, bonus de plus en plus puissant, introduction de nouvelles mécaniques …). La réflexion de chacun est aussi longue que celle d’un seul niveau infini. Sans parler de la réflexion globale. Le niveau infini lui, ne répond qu’à une seule logique : des vagues d’ennemis et d’obstacles, une succession de concepts globaux qui maintiennent l’intérêt du joueur intact. Tout un programme.

Maintenant, comment varier le plaisir ? Comment faire pour que le joueur continue de faire inlassablement ce niveau ? Pour cela, on va intégrer un but, des variations, mais jamais un goal final défini par le créateur. Juste une motivation assez grosse pour motiver le joueur à progresser et à se fixer ses propres objectifs (MineCraft quand tu nous tiens). L’infini c’est long, surtout vers la fin …

Pour ça, j’ai intégré un système de Scoring : les ennemis rapportent des points, les bonus aussi. Plus on progresse, plus le score augmente. Le score étant une notion abstraite, elle n’a de valeur que si elle reste cohérente, prévisible, pouvant être mise en parallèle avec l’évolution de la partie du joueur. Si on score juste pour scorer en faisant rien, ça perd tous son sens. Il peut par exemple être mis en parallèle avec l’ancien score.
Mais cela ne suffit pas, cela veut dire que peut importe le score, c’est toujours les mêmes vagues d’adversaire. Il faut donc intégrer un système de palier. Tous les 1000 points (purement indicatif), un événement se déclenche. Ceci dit, le système de palier est aussi à réfléchir sur 2 plans : comment le faire, et quels événements faire intervenir ?
Comment le faire ?
En parallèle au système de score, qui n’est qu’un compteur qu’on incrémente des points attribués à chaque item qui en disposent, on incrémente un compteur invisible du même nombre de points. Une fois que ce compteur atteint les 1000 points, les événements se déclenchent, et ce compteur retombe à 0. C’est plus simple de faire ainsi que de faire à 1000 points, puis à 2000, puis à 3000 … car cela voudrait dire qu’il faut prévoir chaque palier de 1000, et ça sur l’infini (C’est un peu chiant, surtout vers la fin …), alors que la première méthode permet de régler « tous les 1000 points » et de générer un événement indéfiniment ! Si nous rajoutons des conditions, il est facile de faire varier les événements et bonus débloqués. C’est un peu ça la programmation : se faire chier pour pas se faire chier …
Ainsi, on peut créer facilement un système de difficulté croissante, de combos, de variations dans les points pour faciliter l’obtention ou non d’un palier, etc etc. Mais c’est à mettre en lien directement avec les événements dit perturbateurs qui vont venir sanctionner la progression du joueur.

« Parler de sanction peut paraître brutal. Pourtant c’est vraiment le cas : si le joueur n’a manque de skills ou de bonus cumulés, il éprouvera de la difficulté à finir la vague suivante. Si il perd, la sanction tombe : il perd tout et son score s’affiche. Cela sera une motivation supplémentaire pour essayer de dépasser ce stade et de recommencer, en choppant plus de bonus, plus de points, des armes différentes …«
Quels événements faire intervenir ?
Pour savoir quels péripéties arriveront, il faut aussi savoir comment fonctionne le système de vague :
Une vague est composée d’une succession d’apparition d’ennemis. Ces adversaires apparaissent toutes les 2 secondes par paquet de 1 monstre, tous les 10 monstres la vague cesse pendant 5 secondes. Le monstre qui apparaît est choisi au hasard parmi une liste prédéfinie (plus l’ennemi est présent dans cette liste et plus il a de chances d’apparaître). Ces durées sont totalement arbitraires.
Mais du coup en sachant cela, on peut augmenter la difficulté en augmentant le nombre d’adversaire qui apparaissent par vague, en augmentant le nombre d’ennemis qui apparaissent en même temps, réduire la durée entre 2 monstres (mais jamais à 0 sinon ils apparaissent tous en même temps). Etc.

On peut aussi changer les monstres qui apparaissent, les probabilités … et par exemple changer leur statistiques en fonction de la difficulté et du nombre de vagues parcourues ! Pour ce faire, j’ai créé un compteur pour les vagues, pour la difficulté en fonction des bonus et des points obtenus, et à travers un coefficient de multiplication on change les statistiques des monstres. Si la difficulté augmente, ils auront plus de points de vie, feront plus de dégâts, mais looteront aussi plus de bonus ! (jusqu’à un certain point, le jeu s’arrêtera que par la perte du joueur, il faut bien qu’il perde à un moment ^^ C’est le coté frustrant du Endless Mode …)
Rajoutons à cela l’apparition de bonus tous les 1000 points, avec aussi une chance que les chats de l’espace lootent aussi des bonus, le cumul de pièces pour la boutique, et vous obtenez assez de variété et de difficulté pour prodiguer au joueur un sentiment d’accomplissement a la fin de chaque vague et une envie de progresser pour débloquer des armes de plus en plus balaises et des chances de cumuler des pièces pour la boutique. On rajoute encore un petit « Votre Score » et « Meilleur Score » et on obtient un mode Endless 😀
Certes, il est encore largement améliorable, comme rajouter des biomes, varier les décors en fonction des monstres, de la difficulté, et rajouter des transitions, ou débloquer des éléments en mode Endless via l’histoire, ou inversement … mais on obtient déjà là un mode qui tient en haleine assez longtemps pour tester toutes les mécaniques de jeux misent en place ! Enfin j’éspère car c’est à vous de me le dire : Je vous donnerai bientôt une démo jouable pour vos premiers retours !

Bien sur c’est très schématique et parfois même abstrait, mais pour beaucoup de jeux c’est parfois même plus simple ! Flappy Bird, RUN !, JetPack JoyRide … Ils fonctionnent tous dans cette idée. Si eux y sont arrivés, pourquoi pas moi ? Je travaille dessus dans l’optique de partager mon univers et mon envie de partager du jeu 🙂
En espérant que ça vous intéresse 😉 A plus !
NotaBene :
je pense pas avoir la science infuse, aussi je parle plus de sentiments et d’expériences autodidactes que de fais avérés. Je ne m’appuie pas sur des ouvrages, je retranscrit juste mon expérience en texte. Si vous êtes pas d’accord, je suis heureux de connaître votre avis !