Dans Minecraft, la carte du jeu est générée de manière procédurale et est différente à chaque nouvelle partie.

MIGS 2014 : conférences sur la génération procédurale utilisée dans les jeux vidéo

La génération procédurale est un procédé informatique permettant de créer des objets plus ou moins complexes grâce à un algorithme. Il est très utilisé dans les jeux vidéo depuis les années 80 et permet par exemple de générer des cartes, des niveaux de jeu, des personnages et tout un tas d’autres éléments qui changent donc à chaque nouvelle partie pour le joueur. Les donjons changent à chaque fois, les ennemis ne sont pas au même endroit, les alliés rencontrés sont toujours différents, etc. On la retrouve notamment dans beaucoup de rogue-like, dans des jeux comme Diablo. La génération procédurale est redevenue particulièrement populaire avec les jeux indépendants, surtout entraînés par le succès de jeux comme Minecraft, Binding of Isaac ou Faster Than Light.

Dans Minecraft, la carte du jeu est générée de manière procédurale et est différente à chaque nouvelle partie.
Dans Minecraft, la carte du jeu est générée de manière procédurale et est différente à chaque nouvelle partie.

Au Sommet international du jeu de Montréal (MIGS) de cette année, 2 conférences abordaient le sujet de la génération procédurale. Celle de Tanya Short, directrice créative à KitFox Games et celle Evan Hahn, cofondateur de Snowed In Studios. La conférence de Tanya Short abordait la génération procédurale de façon large, en parlant de l’expérience acquise lors du développement de Shattered Planet et approfondie avec le jeu en cours de développement par le studio, Moon Hunter. La conférence de Evan Hahn était pour sa part un complément intéressant en présentant une autre manière d’aborder cette problématique, avec par exemple les méthodes utilisées pour Windforge. Si la théorie reste la même, les techniques sont multiples et varient en fonction des diverses caractéristiques de l’entité que l’on souhaite générer.

Les différentes problématiques créées par la génération procédurale dans les jeux vidéo

Dans ces deux conférences, la génération de terrains de jeu était le sujet abordé. Dans ce cas, le procédural permet de créer des niveaux uniques à chaque partie, permettant une importante rejouabilité. Le problème, c’est que les niveaux générés peuvent être parfaitement incohérents, infaisables ou au contraire, beaucoup trop prévisibles et au final, monotones. De plus, il faut savoir que la génération procédurale est quelque chose de très complexe à déboguer et qu’il n’y a jamais de certitude qu’aucun bug inédit n’apparaît même après le lancement du jeu. Et s’il est possible de vérifier la faisabilité des niveaux avec un algorithme de test, cela ne signifie pas que le niveau sera cohérent lors d’une partie.

shattered planet - Kitfox Games
Cart de jeu dans Shattered planet (Kitfox Games – Montréal)

Pour minimiser ces problématiques, il y a plusieurs choses à respecter. Déjà, il est bien entendu impératif de définir un objectif: que doit permettre le niveau? Aller d’un point A à un point B? Il faut donc dans un premier temps générer un chemin que le joueur empruntera, plus ou moins complexe selon ce que l’on désire, pour ensuite construire autour. Selon la manière dont se présente le niveau, la méthode utilisée pour générer le chemin ne sera pas nécessairement la même.

Par exemple, Evan Hahn explique qu’il découpe dans un premier temps des salles aléatoirement avant de définir le chemin en créant des connexions logiques entre elles. Il définit ensuite le rôle de chaque salle de façon à respecter le cheminement du personnage dans le niveau. Pour Shattered Planet, Tanya Short explique qu’ils ont généré des chemins avec plus ou moins d’impasses, le chemin principal permettant de remplir l’objectif premier du niveau alors que les impasses sont utilisées pour offrir plus de difficulté au joueur ainsi que des bonus optionnels. Ces méthodes sont différentes, mais elles sont en adéquation avec le squelette attendu des niveaux. Et c’est là l’essentiel: Il faut que la méthode choisie fasse sens avec ce que l’ont veut obtenir, de façon à ce que chaque étape ait le moins besoin d’être corrigée une fois finie pour s’accorder avec les étapes suivantes.

Il faut aussi générer les éléments qui constituent le niveau dans un ordre logique, étape par étape. Ainsi on choisira de placer les éléments des décors et les éléments critiques, comme les coffres ou d’autres objets clés, dans l’ordre qui nous semblera le plus logique. Par exemple, les décors bloquants pour le joueur pourront être placés avant les bonus pour éviter que ceux-ci se retrouvent dans une zone inaccessible. Par la suite, les ennemis pourront se présenter comme des obstacles pour l’obtention de ces bonus. Selon l’ambiance que l’ont souhaite donner au niveau, certains critères pourraient changer. La taille du niveau peut avoir son importance, un grand niveau sera plus propice à l’exploration alors qu’un niveau plus petit inspirera plus le danger par exemple. Il en est de même pour le choix des couleurs et des textures, le défi étant aussi de réaliser des décors semblant naturels, en évitant les formes trop géométriques et en faisant des transitions de textures agréables par exemple.

crusader kings II
crusader kings II

Ce sont autant de paramètres à prendre en compte pour la création de son algorithme, autant d’éléments auxquels le programmeur devra penser avant de réaliser les niveaux les plus intéressants qui soient. Un véritable challenge même pour le développeur expérimenté.

Plus que de la création de niveaux…

Si ces deux conférences se centraient surtout sur la création des niveaux, ce n’est pas la seule chose que permet la génération procédurale.

On peut par exemple générer des personnages avec leurs histoires, leurs personnalités, leurs relations à la manière Crusader Kings II ou Dwarf Fortress. La génération de textures, comme c’est le cas dans la démo technique .kkrieger qui fait moins de 1Mo bien qu’il s’agisse d’un FPS 3D est également possible, ou bien encore la musique à l’image du travail réalisé par Olivier Derivière sur le jeu Remember Me. Dans ce dernier, aucune musique n’est linéaire puisque celle-ci est générée en fonction des actions réalisés par le joueur. Bien d’autres contenus peuvent suivre le même procédé, en fonction du goût du défi qu’a finalement le développeur.