Probablement la pire chose qui soit arrivée dans le domaine de la génération de contenu procédural (en supposant que c'est effectivement le domaine de la génération de contenu procédural, dont je ne suis pas entiÚrement sûr) est le bruit de Perlin. Le bruit de Perlin est incroyablement bien adapté (du moins si vous n'y regardez pas de trop prÚs) pour générer des paysages intéressants. Dans la génération subreddit
/ r / procedural, une semaine ne passe pas sans que quelqu'un publie un "systĂšme de gĂ©nĂ©ration procĂ©durale" qui se rĂ©vĂšle ĂȘtre le bruit de Perlin visualisĂ© en diffĂ©rentes couleurs. (Pendant la rĂ©daction de cet article, deux de ces articles sont apparus!)
Je ne veux pas humilier le bruit de Perlin. Il s'agit d'un outil incroyablement utile pour la gĂ©nĂ©ration de procĂ©dures, qui est devenu un point d'entrĂ©e dans ce domaine pour de nombreuses personnes, dont moi. Mais en mĂȘme temps, c'est trĂšs dĂ©routant, car cela implique que la gĂ©nĂ©ration procĂ©durale est beaucoup plus simple qu'elle ne l'est vraiment. La plupart des publications hebdomadaires sur les «systĂšmes de gĂ©nĂ©ration procĂ©durale» dans
/ r / proceduralgeneration disparaissent sans laisser de trace lorsque leurs auteurs constatent que la prochaine étape de la génération procédurale est beaucoup plus compliquée. La vérité est que le bruit de Perlin était une sorte de coïncidence heureuse. C'est génial pour générer des paysages intéressants, mais il n'y a pas de raisons systématiques ou répétables.
Mike Cook a récemment publié un
tutoriel qui contraste l'espace des possibilités avec l'espace de génération. Si vous créez un systÚme de génération pour créer X, alors l'espace de possibilités est égal à tous les X possibles, et l'espace de génération est tout X que votre systÚme peut réellement générer. Mike illustre cette idée avec Minecraft:
Dans le cas de mon jeu
Dragons Abound , l'espace des possibilités comprend toutes les cartes possibles, y compris de nombreux cas dégénérés, par exemple, une carte entiÚrement composée de l'océan avec une petite ßle. L'espace de génération est l'espace plus petit de toutes les cartes que
Dragons Abound peut réellement générer. Grùce aux différentes rÚgles utilisées,
Dragons Abound ne peut pas générer une carte de l'océan avec une petite ßle, donc cette carte n'est pas dans l'espace de génération de jeu. La comparaison de l'espace des possibilités avec l'espace de génération est un regard intéressant et utile sur la génération procédurale, je vous recommande donc de lire l'article de
Mike , qui explique cette idée plus en détail, et il existe plusieurs exemples interactifs.
En plus de l'espace des possibilités et de l'espace de génération, il est également utile de penser à un «espace intéressant». Si nous créons X, alors c'est l'espace de tous
les X
intéressants . C'est-à -dire, dans le cas de mon jeu, c'est l'espace de toutes
les cartes fantastiques
intéressantes . Un espace intéressant est un sous-ensemble de l'espace des possibilités et, nous l'espérons, se croise avec l'espace de génération - par exemple, j'espÚre qu'au moins certaines des cartes générées par mon jeu se révÚlent intéressantes.
Avant de poursuivre, j'admets volontiers que «l'intĂ©rĂȘt» est un concept vague et subjectif. Mes et vos idĂ©es sur des choses intĂ©ressantes ne coĂŻncident probablement pas. Je ne sais mĂȘme pas toujours ce qui me semblera intĂ©ressant - je vois souvent quelque chose de nouveau et je le trouve intĂ©ressant, mĂȘme si je ne pensais pas que j'aimerais ça avant de l'avoir vu. Pire, plus nous voyons intĂ©ressant, moins il devient intĂ©ressant. Lorsque vous voyez une fonctionnalitĂ© intĂ©ressante sur vingt cartes d'affilĂ©e, elle ne semble plus intĂ©ressante. Par consĂ©quent, «l'intĂ©rĂȘt» n'est pas si facile Ă saisir. Ă l'avenir, je parlerai davantage de ce qui rend les choses intĂ©ressantes (et dans le passĂ©, j'avais quelque chose Ă dire sur l'idĂ©e proche d'un
espace de créativité ), mais jusqu'à présent, ce n'est pas trÚs important. Il nous suffit de convenir que certaines choses sont plus intéressantes que d'autres, et que des choses plus intéressantes sont dans un «espace intéressant», alors que des choses moins intéressantes ne le sont pas.
Est-il possible d'illustrer un espace intĂ©ressant de la mĂȘme maniĂšre que Mike a montrĂ© l'espace des possibilitĂ©s et l'espace de gĂ©nĂ©ration? Comme suggĂ©rĂ© ci-dessus, un espace intĂ©ressant est un sous-ensemble de l'espace des possibilitĂ©s, qui (si vous avez de la chance) coupe l'espace de gĂ©nĂ©ration:
Un bon générateur intersecte fortement avec un espace intéressant; un mauvais générateur est faible.
Ces motifs ne sont qu'une métaphore, mais dans le cadre de cette métaphore, je veux poser la question suivante: ai-je correctement indiqué les
formes des différents espaces? La forme de l'espace des possibilités n'est pas vraiment importante, il suffit de contenir deux autres espaces. Mais les formes de l'espace de génération et de l'espace intéressant sont des questions plus intéressantes (sic). Je les ai peints tous les deux comme des formes compactes uniques dans l'espace des possibilités. Est-ce raisonnable?
Je crois que désigner l'espace de génération comme une ellipse compacte est un bon choix pour de nombreux générateurs procéduraux, et en particulier pour quelque chose comme le bruit Perlin. La forme implique que le générateur crée toutes les solutions dans un seul espace clairement défini et compact. Si le générateur peut créer X, il peut généralement créer tous les voisins de X. Habituellement, il n'y a pas de grands «trous» ou d'étranges distorsions dans l'espace de génération.
Les espaces de génération ressemblent généralement à ceci pour deux raisons. PremiÚrement, au niveau de l'application pratique, un générateur est une petite quantité de code associée à un espace de possibilités. Actuellement,
Dragons Abound contient environ 28 000 lignes de code source. ComparĂ© Ă de nombreux autres gĂ©nĂ©rateurs de cartes procĂ©durales, c'est beaucoup (peut-ĂȘtre mĂȘme un record), mais il est toujours extrĂȘmement petit par rapport Ă l'espace de possibilitĂ©s de toutes les cartes fantaisie. Par consĂ©quent, peu importe Ă quel point le code du jeu est intelligent, son espace de gĂ©nĂ©ration n'occupera qu'une petite partie de l'espace des possibilitĂ©s, et puisque le code informatique est, par dĂ©finition, algorithmique et dĂ©terministe, cet espace sera relativement compact. Autrement dit, si le jeu peut crĂ©er un type de carte, il crĂ©era presque certainement de nombreuses autres cartes similaires.
La deuxiÚme raison pour laquelle les espaces de génération sont compacts est stratégique. Pour moi, l'objectif de créer
Dragons Abound est de générer des cartes intéressantes afin qu'elles se croisent autant que possible avec l'espace intéressant. Et c'est difficile d'entrer dans un espace intéressant, c'est trÚs petit par rapport à l'espace des possibilités. En fait, c'est trÚs, trÚs petit. Tous ces espaces ont un grand nombre de dimensions, et la taille de l'espace augmente essentiellement en fonction du nombre de dimensions. La vraie relation entre l'espace intéressant et l'espace des possibilités ressemble à ceci:
Seul un espace intéressant est beaucoup, beaucoup plus petit. Cela oblige la génération procédurale à adhérer à certaines stratégies. Par exemple, pourquoi le jeu ne crée-t-il pas des cartes complÚtement aléatoires? Ensuite, l'espace de génération ressemblerait à ceci:
Seuls les points verts sont beaucoup plus petits. Les chances de passer d'une des cartes aléatoires dans un petit espace intéressant sont essentiellement nulles. Pour augmenter les chances d'entrer dans un espace intéressant, le créateur de la génération procédurale utilise des connaissances sur l'espace des possibilités et l'espace intéressant pour contrÎler la génération - le créateur déplace l'espace de génération de sorte qu'il soit principalement situé dans le voisinage de l'espace intéressant, et pas seulement distribué de façon aléatoire.
Pour toutes ces raisons, il sera logique de percevoir l'espace de génération comme un espace connecté et compact.
Mais je pense que dessiner un espace aussi intĂ©ressant serait probablement complĂštement faux. Il doit ĂȘtre dĂ©crit comme un ensemble dispersĂ© et divisĂ© de zones de forme Ă©trange. Pourquoi? Parce que (1) les choses peuvent ĂȘtre intĂ©ressantes pour diverses raisons orthogonales, et (2) l'intĂ©rĂȘt est une fonction discontinue.
Considérez, par exemple, ces deux fragments de carte:
Le premier fragment est intéressant en ce que le littoral est finement détaillé et contient de nombreuses petites ßles. Le deuxiÚme fragment a un littoral lisse et ennuyeux, mais la cÎte a des caractéristiques intéressantes - elle est inhabitée et porte le nom inquiétant de «Bleak Shore». Dans un sens, ces deux fragments sont intéressants, mais pour des raisons complÚtement différentes. Par conséquent, nous ne nous attendons pas à ce que ces deux parties de l'espace intéressant soient voisines.
De plus, ces deux parties de l'espace intĂ©ressant ne sont probablement mĂȘme pas connectĂ©es. Il ne sera en aucun cas possible de convertir progressivement la premiĂšre carte intĂ©ressante en une deuxiĂšme carte intĂ©ressante sans crĂ©er plusieurs cartes sans intĂ©rĂȘt en cours de route. Par consĂ©quent, ces deux parties de l'espace intĂ©ressant sont sĂ©parĂ©es.
Ainsi, un espace intéressant n'est pas une zone unique, mais un ensemble de zones divisées. Tous ces espaces intéressants ont-ils des formes lisses et compactes?
Je le rĂ©pĂšte, je ne dĂ©clare pas pouvoir donner une dĂ©finition complĂšte de «l'intĂ©rĂȘt». Mais Ă certains Ă©gards, nous pouvons convenir de plusieurs points. PremiĂšrement, si X est intĂ©ressant, cela ne signifie pas que 2X sera deux fois plus intĂ©ressant. Prenons l'exemple de la cĂŽte triste - une zone de la cĂŽte mystĂ©rieuse sur la carte est intĂ©ressante, mais une douzaine d'entre elles seront trĂšs inintĂ©ressantes. Vous pouvez probablement trouver d'autres exemples de la façon dont «l'intĂ©rĂȘt» se comporte d'une maniĂšre Ă©trange et contre-intuitive. L'intĂ©rĂȘt comporte donc certains Ă©lĂ©ments de discontinuitĂ© - ce n'est pas une fonction fluide qui change de maniĂšre rationnelle et prĂ©visible lors du dĂ©placement dans l'espace des possibilitĂ©s.
Tout cela nous fait comprendre que nous devons désigner un espace intéressant comme une série de zones divisées d'une forme étrange.
Vous commencez dĂ©jĂ Ă comprendre pourquoi la crĂ©ation d'un bon gĂ©nĂ©rateur de procĂ©dures est une tĂąche difficile. En raison du fonctionnement des algorithmes et des limites de nos capacitĂ©s, l'espace de gĂ©nĂ©ration sera petit et compact. Dans le mĂȘme temps, nous voulons entrer dans autant de zones Ă©tranges et dispersĂ©es d'espace intĂ©ressant que possible. C'est incroyable que nous parvenions mĂȘme Ă y entrer!
Permettez-moi maintenant de revenir au sujet du bruit Perlin. à quoi ressemblera ce schéma pour l'espace de génération de bruit Perlin dans l'espace paysager? Je pense quelque chose comme ça:
Le gĂ©nĂ©rateur de bruit de Perlin a plus d'intersection avec un espace particuliĂšrement intĂ©ressant dans l'univers de tous les paysages possibles. Et c'est excellent - presque tout ce qui peut ĂȘtre créé en utilisant le bruit Perlin tombe dans ce domaine et semble assez intĂ©ressant.
Mais ce succĂšs rapide est trompeur. Si vous ĂȘtes nouveau dans la gĂ©nĂ©ration procĂ©durale, vous verrez comment le bruit Perlin fonctionne bien et dĂ©ciderez trĂšs probablement que le bruit Perlin est une baguette magique pour gĂ©nĂ©rer toutes sortes de paysages intĂ©ressants, sans parler de tous les types de gĂ©nĂ©ration procĂ©durale. Mais comme le montre le diagramme, l'espace de gĂ©nĂ©ration de bruit de Perlin est en rĂ©alitĂ© loin de beaucoup d'autres parties de l'espace paysager intĂ©ressant. La deuxiĂšme Ă©tape standard de la gĂ©nĂ©ration d'un paysage procĂ©dural est l'ajout de riviĂšres. Mais si vous essayez de rĂ©aliser les riviĂšres Ă l'aide du bruit de Perlin, vous constaterez que c'est impossible! En aucun cas, on ne peut Ă©tendre les limites de l'espace de gĂ©nĂ©ration de bruit de Perlin pour atteindre des espaces distants intĂ©ressants contenant des riviĂšres rĂ©alistes.
Le bruit de Perlin est trompeur dans un autre sens. Plus tĂŽt, j'ai parlĂ© du fait que l'espace intĂ©ressant est si petit que si vous voulez y entrer, vous devez avoir une certaine connaissance de l'espace des possibilitĂ©s et de l'espace intĂ©ressant afin de contrĂŽler la gĂ©nĂ©ration procĂ©durale. Mais l'algorithme de bruit de Perlin ne sait rien des paysages, des processus gĂ©ologiques, de ce que les gens trouvent intĂ©ressant, et pourtant, d'une certaine maniĂšre, cela fonctionne bien sans cette connaissance! Le bruit de Perlin s'est avĂ©rĂ© ĂȘtre l'exception, confirmant la rĂšgle (*). Mais si vous dĂ©butez dans la gĂ©nĂ©ration procĂ©durale, vous ne connaissez probablement pas cette rĂšgle. En fait, vous dĂ©duisez une rĂšgle erronĂ©e - toute la gĂ©nĂ©ration procĂ©durale dans son ensemble devrait fonctionner
comme du bruit Perlin.
(* Ce n'est pas par hasard qu'il s'est avĂ©rĂ© ĂȘtre une exception. Le bruit de Perlin est devenu un point de dĂ©part populaire prĂ©cisĂ©ment parce que c'est une exception. Il est trĂšs facile de commencer avec le bruit de Perlin sans avoir Ă Ă©tudier une grande quantitĂ© d'informations sur les paysages.)
ConsidĂ©rons un autre point de dĂ©part populaire dans la gĂ©nĂ©ration de contenu procĂ©dural: les schĂ©mas de donjon. Contrairement Ă la gĂ©nĂ©ration de paysages, les schĂ©mas de donjons n'ont pas d'algorithme similaire au bruit de Perlin, qui crĂ©e comme par magie des solutions dans un espace intĂ©ressant. Sur la base de ce que nous savons de l'espace de gĂ©nĂ©ration et de l'espace intĂ©ressant, nous pouvons supposer que les gĂ©nĂ©rateurs de donjons devraient soit (1) inclure des connaissances spĂ©cifiques sur les jours ultĂ©rieurs et l'intĂ©rĂȘt, ou (2) crĂ©er des donjons pour la plupart sans intĂ©rĂȘt. En effet, si vous regardez les gĂ©nĂ©rateurs de donjons publiĂ©s au cours de la derniĂšre annĂ©e dans / r / proceduralgeneration, vous verrez que la plupart d'entre eux ne contiennent aucune connaissance sur les donjons autre que la vĂ©rification de la connexion de toutes les salles, et donc les donnĂ©es affichĂ©es par ces projets sont plus probables qu'intĂ©ressantes .

Donc, si vous considĂ©rez que vous ĂȘtes plus ou moins d'accord avec ce que j'ai Ă©crit, quelles leçons peut-on tirer de ce concept d'espace intĂ©ressant?
- La génération procédurale est fondamentalement complexe car l'espace intéressant est une cible trÚs petite et difficile à atteindre.
- Malgré les exceptions occasionnelles comme le bruit Perlin, il ne faut pas s'attendre à ce que des algorithmes simples et naïfs génÚrent avec succÚs du contenu intéressant. Une bonne génération de procédures doit inclure et utiliser une connaissance approfondie et approfondie du sujet et une compréhension de ce qui rend le contenu intéressant.
- Mais mĂȘme dans les meilleurs algorithmes de gĂ©nĂ©ration, l'espace de gĂ©nĂ©ration est compact, et l'espace intĂ©ressant n'est pas, par consĂ©quent, il est prĂ©vu que la gĂ©nĂ©ration procĂ©durale manquera souvent, et il est donc nĂ©cessaire de construire les systĂšmes en consĂ©quence.
- Dans les sujets complexes, l'espace intéressant est divisé et a une forme étrange. Vous ne devez pas vous attendre à ce qu'un algorithme ou une approche qui fonctionne bien dans une partie d'un espace intéressant fonctionne nécessairement aussi bien dans une autre partie. Par conséquent, nous devrions nous attendre à ce que la génération procédurale inclue de nombreux algorithmes différents utilisant différentes parties de l'espace intéressant.
Si vous commencez tout juste Ă travailler avec la gĂ©nĂ©ration procĂ©durale, je vous recommande de penser au plaisir. Qu'est-ce qui rendra la sortie intĂ©ressante? Que doit comprendre l'algorithme pour produire des donnĂ©es souvent intĂ©ressantes? Quelle autre façon de produire des donnĂ©es pourrait ĂȘtre intĂ©ressante? De quel nouvel algorithme ai-je besoin pour gĂ©nĂ©rer ce genre d'intĂ©rĂȘt? Comment le combiner / Ă©quilibrer avec le premier algorithme?
Par exemple, si je voulais créer un générateur de donjon, alors j'ai pensé aux donjons pendant un certain temps, et j'ai décidé qu'à mon avis, les donjons sont intéressants si:
- On dirait qu'ils ont été créés pour devenir des entrepÎts, des cellules de prison
et autres infrastructures souterraines du grand chùteau - Plus tard, ils ont été remplis de monstres et reconstruits par eux pour satisfaire leurs besoins en abris, nourriture, eau, protection contre les attaques, etc.
Vous pouvez maintenant penser Ă quoi devrait ressembler le niveau des entrepĂŽts souterrains, Ă quoi pourrait ressembler l'algorithme pour la gĂ©nĂ©ration procĂ©durale des variations de ce thĂšme et comment les monstres peuvent changer ce schĂ©ma. Je pense que la rĂ©flexion sur de telles questions vous permettra d'en savoir plus sur la gĂ©nĂ©ration procĂ©durale que sur la mise en Ćuvre d'un autre gĂ©nĂ©rateur de paysage sur le bruit de Perlin ou d'un gĂ©nĂ©rateur de donjon Ă partir de piĂšces et de couloirs alĂ©atoires.