La génération procédurale dans le jeu vidéo

Ceci n'est pas une pomme.

Ceci n’est pas une pomme.

Certainement mû par les litres d’Oasis pomme/cassis/framboise ingurgités ces derniers jours durant de longues sessions de jeu sur Starbound, je me suis mis en tête de rédiger un dossier relatif à la génération procédurale dans le jeu vidéo. Pourquoi ? Comment ? Quand ? Où ? Christophe Barbier arrivera-t-il un jour à être pris au sérieux ? Laissera-t-il tomber l’écharpe ? Des réponses, dans cet article.

Tout d’abord, n’étant pas coutumier de ce type d’article, laissez-moi introduire mon propos. Vous vous apprêtez à lire un dossier traitant de la génération procédurale dans le jeu vidéo, mais personne ne vous garantit qu’il sera exhaustif, fiable et détaillé. Les éléments de réponse apportés aux problématiques posées dans cet article ne sont que le fruit d’années de jeu, de mois de réflexion, de semaines de recherche et de jours de préparation. Je n’ai ni l’audace ni les connaissances suffisamment aiguisées pour vous présenter en détail les rouages de cette méthode de génération. Si vous espériez devenir un as de la génération procédurale suite à la lecture de cet article, peut-être devriez-vous rebrousser chemin. Certes, j’ai été aidé dans sa rédaction par un programmeur et deux développeurs indépendants dont le jeu comporte des parties générées de manière procédurale, mais mon but ici est avant tout de vulgariser tout ce qu’ils m’ont appris pour insister sur le pourquoi du comment de cette pratique dans le jeu vidéo, notamment indépendant, à partir d’expériences vécues et de leçons prises « sur le tas ». J’aime pas annoncer les plans parce que je ne m’y tiens jamais, alors laissez-moi trier mes petits papiers, plonger ma plume puis ma tête dans l’encrier et c’est parti.

Je vous rassure, c'est bien plus simple que ça.

Je vous rassure, c’est bien plus simple que ça.

 

I – La génération procédurale, késako ?

« Procedural generation is a widely used term in the production of media; it refers to content generated algorithmically rather than manually. Often, this means creating content on the fly rather than prior to distribution. This is often related to computer graphics applications and video game level design. » (Wikipédia)

Les anglophobes ne l’auront pas compris, les anglophones non plus, alors tentons de reformuler en douceur cette définition barbare. Bon, je ne vois pas l’intérêt de vous donner le sens du mot génération, puisque vous le connaissez déjà. Il côtoie la notion de création mais justement, en est radicalement distant. Là où la création évoque toute une portée artistique, humaine et manuelle, la génération se veut être relative à la conception de contenu (physique comme abstrait) à plus grande échelle. Il n’est guère courant de parler de génération pour désigner le travail effectué par un artiste sur un tableau, par exemple. Par contre, lorsqu’il s’agit de contenu créé à la volée en grande quantité, là, on parlerait de génération. Et c’est à ce moment que je suis censé définir le second terme, « procédural ». Est procédurale toute génération de contenu automatisée répondant à un certain nombre de règles, séquences et autres schémas usuels définis par nos copains les algorithmes.

Du Procedural Shading, une technique utilisée pour générer des textures.

Du Procedural Shading, une technique utilisée pour générer des textures.

Dans la génération procédurale, tout est histoire d’algorithmes. Ce sont eux qui régissent la manière dont va être produit et/ou reproduit le contenu souhaité. Voyez-les comme le plan à l’origine d’une chaîne de montage auquel chacun des produits doit correspondre tout en étant unique. Eh oui, si les algorithmes étaient un plan, celui-ci ne comporterait que des tracés de murs identiques mais une infinité de possibilités d’agencement. C’est le principe de la génération procédurale : pouvoir créer une quantité presque infinie de produits aux normes égales mais à l’aspect unique. D’aucuns parleraient d’aléatoire, mais moi pas. Pour moi, la génération procédurale est du « faux aléatoire ». L’aléatoire est synonyme de chaos alors que la procédure est justement la représentation quasi-allégorique de l’organisation. C’est en quelque sorte de « l’aléatoire contrôlé ».

Un tableau procédural signé Alison Mealey généré dans Unreal.

Un tableau procédural signé Alison Mealey généré dans Unreal.

Du coup, ça permet à l’artiste de créer sans vraiment créer. Il balance son algorithme qui définira comment il veut que ses produits/créations/oeuvres soient, et l’ordinateur se charge d’en générer une infinité correspondant à ces normes prédéfinies. Le procédural s’oppose obligatoirement au manuel, puisque l’Homme n’est plus contraint de créer lui-même chacune des pièces qu’il souhaite produire, mais en définit seulement les principes de génération. On utilise fréquemment ce genre de méthode dans les studios d’animations (Pixar, Disney et j’en passe, pour générer les textures et environnements notamment), la modélisation ou l’animation. Ah et j’oubliais le plus important : le jeu vidéo.

 

II – Son utilisation dans le jeu vidéo

II.I – De sérieux atouts à faire (théoriquement) valoir

Déjà à l'époque, les donjons étaient procéduraux.

Déjà à l’époque, les donjons étaient procéduraux.

Par où commencer, maintenant que vous savez en quoi consiste la génération procédurale dans ses grandes lignes ? Plutôt que de commencer par un historique des jeux utilisant ce principe (on pourrait commencer à Elite, ce serait bien trop long), réfléchissons à la manière dont celui-ci peut être utilisé dans le jeu vidéo. Nous avons précédemment vu qu’il permet à des créateurs de distribuer du contenu sans avoir à le créer systématiquement. En vérité, la génération procédurale est un concept bien plus vaste dans le domaine du jeu vidéo qu’il ne l’est dans d’autres milieux. On « procéduralise » pas mal de choses dans les jeux, allant du placement des objets dans un niveau à, parfois, la génération-même du niveau. En créant des modèles de pièces, de murs, d’objets ou de comportements de monstres, on peut s’en servir pour faire de la génération procédurale.

Cela propose ainsi au joueur des parties toutes différentes, ce qui favorise évidemment la rejouabilité. A ce propos, c’est sur cette idée qu’est basée le genre rogue-like (Spelunky, Dungeons of Dredmor, Rogue Legacy…). Tout y est généré de manière procédurale (niveaux, placements des items, constructions des salles, etc.) et pousse le joueur à essayer une nouvelle partie pour voir si « la chance jouera en sa faveur ». Ici, le procédural est associé à la notion de rejouabilité, nous aurons l’occasion d’y revenir plus précisément dans la partie dédiée au jeu indépendant.

Tout récemment a été annoncé un jeu qui sied parfaitement à mon second propos : No Man’s Sky. Mais je pourrais aussi prendre des jeux comme Minecraft, Terraria ou, évidemment, Starbound. Mon second point peut être assimilé au premier puisqu’il y est en quelque sorte question de rejouabilité. Je veux ici parler du caractère impressionnant de la génération procédurale. Dans la plupart des jeux AAA que l’on croise, et j’illustrerais mon argument par l’impressionnant Assassin’s Creed ou le magnifique Grand Theft Auto V, des artistes, designers et créateurs en tous genres travaillent d’arrache-pied au placement des bâtiments dans un souci de cohérence, de recherche historique, culturelle ou géographique et c’est très bien comme ça. Ça donne des résultats de prime abord époustouflants mais dont il est théoriquement possible d’être lassé, même s’ils font 250 km². Avec du procédural, on pourrait générer une multitude d’environnements uniques capables de représenter une expérience consistante et potentiellement plus durable qu’un environnement fixe et immuable. Sur un tel « Unique Selling Point », on vend des jeux comme Minecraft ou Terraria par millions. Lorsque le procédural prend avec brio le pas sur la création humaine, aussi minutieuse et travaillée soit-elle, ça peut faire rêver les joueurs. La génération procédurale est souvent assimilée à l’infini. Combien de fois a-t-on entendu « Dans Minecraft, le monde est infini » ?

Le dernier avantage majeur de la génération procédurale selon moi (il y en a quelques autres qui seront évoqués dans la partie dédiée au jeu indépendant, mais je pense avoir traité les trois plus importants dans cette partie), est relatif au game-design pur et à l’équilibrage du jeu. La génération procédurale ouvre des portes qui simplifient parfois la vie des développeurs… après un travail acharné pour concevoir ça proprement, bien entendu, nous en reparlerons plus bas. Reprenons l’exemple du genre rogue-like. L’une des notions-clé de ce genre est évidemment la difficulté. Si le joueur essaye et réessaye, partie après partie, d’arriver le plus loin possible, il faut bien que la difficulté soit parfaitement équilibrée. Ainsi, on peut, grâce à la génération procédurale, proposer à un panel de joueurs une infinité de niveaux au challenge identique (quelques nuances subsisteront évidemment) mais au look pourtant bien différent, toujours pour favoriser cet aspect « rejouabilité » tant apprécié des joueurs. « Unis dans la diversité », pourrait-on dire.

II.II – Une pratique tout de même risquée

Prouesse technique ou solution de facilité ? Véritable atout ou vulgaire cache-misère ? La question est légitime, et nous allons tenter d’y apporter des éléments de réponse en évoquant maintenant les risques et défauts de la génération procédurale.

Heureusement que les versions alpha/bêta existent.

Heureusement que les versions alpha/bêta existent.

Bon, le premier gros défaut, on l’a en partie évoqué au-dessus. Si les AAA mettent tant de soin dans la création, l’agencement et le peaufinage d’univers au réalisme bluffant mais aux limites malheureusement bien définies, c’est parce que le procédural représente pour eux bien trop de risques. En travaillant d’arrache-pied sur des environnements jusqu’à les rendre parfaits, ils évitent les bugs relatifs à la génération d’un monde de manière procédurale. Eh oui, ça s’accompagne bien souvent de bugs, c’est en partie pourquoi beaucoup de AAA préfèrent offrir une aire de jeu limitée mais parfaite plutôt qu’une zone quasi-infinie mais au contenu un peu incertain.

Développer un ensemble d’algorithmes à même de pouvoir créer un monde aussi parfait que celui qu’un homme créera, c’est extrêmement compliqué. Et même si ça se faisait un jour, il y a un défaut inhérent au procédural : les patterns apparents. La reproduction procédurale de schémas de salles, bâtiments ou niveaux entiers étant basée sur, forcément, des modèles prédéfinis, il sera toujours possible, en cherchant bien, de trouver les limites séparant ces modèles ou pire, de les voir se répéter. Et ça peut réellement casser l’immersion. Ajoutez à cela le défaut évoqué au dessus, et vous vous retrouvez avec la possibilité, même infime, d’avoir un environnement buggé et aux patterns apparents.

Allez, soyons fous. Admettons qu’un super-héros parvienne à coder le jeu parfait, qui génère absolument tout de manière procédurale sans trop de patterns apparents et avec une quantité de bugs relativement limitée. Je résumerai le risque suivant en une seule phrase : nous ne sommes pas encore prêts pour ça. Les machines actuelles ne supporteraient pas un tel jeu. C’est pourquoi on préfère faire des choix et éviter de barbouiller son jeu de procédural sans trop réfléchir. Déjà parce que c’est compliqué, mais aussi parce que c’est risqué. Du coup, on sélectionnera les points précis de son jeu à générer procéduralement, ou on fera des concessions, mais on tentera toujours de surprendre les joueurs. Bienvenue dans le monde du jeu indépendant.

 

III – Le procédural dans le jeu indépendant

Depuis quelques mois/années mais surtout depuis des buzz comme Minecraft ou The Binding of Isaac, la génération procédurale est légion sur la scène indépendante. Tentons d’en savoir plus.

Sir, You Are Being Hunted propose des environnements procéduraux ouverts.

Sir, You Are Being Hunted propose des environnements procéduraux ouverts.

La génération procédurale fait vendre. Comme on l’a dit avant, elle génère chez le joueur une impression de grandeur, de richesse de l’univers, de potentiel rejouabilité sans fin pour des heures et des heures de plaisir à chaque fois renouvelé. De plus, les développeurs indépendants travaillant souvent en petit comité, ils se permettent parfois des concessions graphiques ou scénaristiques pour se concentrer sur le contenu et ainsi peaufiner au maximum la génération procédurale et le gameplay qui lui est rattaché. Dans les jeux où la génération procédurale est poussée à fond (puisque le monde, les items, leur placement, celui des monstres et des objets est aléatoire), il est très rare de profiter d’une histoire rédigée par Tolkien ou d’un style graphique travaillé par De Vinci en personne. Minecraft, Dwarf Fortress, Cube World et bien d’autres sont, face à beaucoup de AAA, plutôt laids et vides niveau scénario parce que leurs créateurs sont peu nombreux et peuvent difficilement tout faire. Et c’est justement grâce à ça qu’ils remportent le succès qu’ils ont aujourd’hui.

Par ailleurs, et c’est un point relativement important pour les développeurs indépendants : un jeu majoritairement basé sur de la génération procédurale sera bien plus léger qu’un jeu créé entièrement de la main de l’Homme. Déjà, parce que beaucoup de contenu sera généré et/ou placé côté client et parce qu’on passe généralement moins de temps à développer un modèle qui sera repris des dizaines de milliers de fois qu’on en passe à modéliser un monument dans un AAA, par exemple. Les modèles sont souvent plus légers, la génération réduit fortement le poids du jeu, bref, c’est avantageux à la fois pour le joueur qui n’aura pas à attendre des jours pour télécharger son jeu et pour le développeur, qui pourra travailler de manière bien plus fluide et rapide sur un jeu léger.

Procedural-7

Dans Spelunky, vous incarnez un explorateur en quête de trésors dans des caves procédurales.

D’après ces deux raisons et surtout parce que les développeurs indépendants savent prendre des risques pour rendre un jeu procédural original, la génération procédurale est un sérieux argument de vente pour les indépendants, qui n’hésitent pas à en faire tout et n’importe quoi pour notre plus grand plaisir.

Pour finir, j’ajouterais que nous n’avons pas fini de voir du procédural dans nos jeux. Ce n’est au contraire que le début. Lorsque les machines évolueront, il sera de plus en plus courant de voir des univers entièrement générés à partir d’algorithmes, et il y aura toujours des développeurs, indépendants ou non, qui mettront la barre encore plus haut et soulèveront de nouvelles questions à propos de cette pratique à la puissance encore inexploitée.

FTL, qui propose une "Aventure Dont Vous Etes Le Héros" procédurale.

FTL, qui propose une « Aventure Dont Vous Etes Le Héros » procédurale.

Voilà qui conclut ce pavé sur la génération procédurale dans le jeu vidéo. N’hésitez pas à donner votre avis dans les commentaires, c’est toujours appréciable, surtout au vu du temps nécessaire à la réalisation de tels articles. Si ça vous plaît, je tenterai d’en faire d’autres. Je tiens par ailleurs à remercier les personnes m’ayant aidé dans mes recherches. D’ailleurs, je vous balance aussi une liste d’articles intéressants sur le sujet :

Dans la vie, je m'ennuie. Du coup, j'écris des bêtises sur des jeux qui n'intéressent personne. Pour suivre mes aventures, ça se passe sur Twitter. Tu peux boire mes paroles, mais évite de t'étouffer.