Quelles sont les bonnes ressources concernant la génération de contenu procédural dans le contexte de la génération de donjons?
L'article le plus proche que j'ai trouvé était Algorithm pour générer un labyrinthe en 2D , ce qui n'est pas tout à fait ce que je recherche. Les fonctionnalités, telles que les chambres et les couloirs connectés, sont idéales.
Merci!
procedural-generation
Gabriel Isenberg
la source
la source
Réponses:
Cela a été plus ou moins répondu avant. Votre premier lieu d'arrêt devrait être http://pcg.wikidot.com/
Depuis que j'ai été accusé de ne pas être une réponse utile (vraiment? Quelqu'un demande une ressource et je poste un lien vers un wiki traitant du sujet? ), cette page du wiki traite spécifiquement des générateurs de donjons et de liens vers divers articles sur le sujet.
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation
Je recommanderais quand même de parcourir tout le wiki, car la génération de contenu procédural est une approche très créative et toutes les idées sont valables. C'est un défi de pensée latéral - et amusant à cela.
la source
J'ai réussi à obtenir des niveaux d'assez bonne mine en utilisant l'algorithme suivant, basé sur une grille carrée:
Tout d'abord, créez un ensemble de pièces. Des paramètres aléatoires définiront la taille des pièces et leur nombre. Un algorithme adaptatif pourrait même définir certaines zones constituées de grands couloirs et d'autres de très petites pièces.
Ensuite, vous devez vous assurer que toutes les pièces sont connectées les unes aux autres. Pour cela, lancez un explorateur pour creuser des corridors (par exemple, A *) entre chaque paire de pièces, en donnant un poids choisi aléatoirement aux espaces existants (salles ou autres corridors) par rapport aux espaces non encore sculptés (les murs). Si la différence de poids est faible, il sera alors relativement peu coûteux de creuser de nouveaux couloirs et l’algorithme créera de nombreux couloirs entre les pièces, offrant de nombreuses possibilités pour se déplacer d’un lieu à l’autre. Si la différence de poids est grande, l’algorithme préférera alors parcourir les salles et les couloirs existants, rendant les chemins plus tortueux et offrant moins de choix pour atteindre une certaine destination.
Cela vous permet, à partir d'un petit nombre de paramètres, de créer des niveaux d'aspect très différents, des couloirs massifs clairsemés aux petits couloirs les reliant à un labyrinthe de chambres étroitement interconnectées.
Voici un exemple de niveau généré.
Sur la base de cet algorithme, vous pouvez ajouter une décoration murale qui dépend de la zone, rendre les couloirs plus petits ou plus grands, créer des salles spéciales, etc.
la source
Si vous aimez lire du code et que vous pouvez analyser le C #, puis-je suggérer le générateur de donjon utilisé par mon amoureuse Amaranth? C'est ici . Il gère les pièces connectées, les fonctionnalités extensibles et quelques autres éléments intéressants.
Si vous réduisez et construisez l'ensemble du projet, vous disposez d'un outil autonome qui génère et dessine les donjons afin que vous puissiez le peaufiner et voir comment il fonctionne.
la source
Toutes ces idées sont géniales. J'ai pris un petit peu de RogueBasin et de pcg.wikidot.com et écrit ma propre implémentation en C #.
J'ai vraiment aimé l'aspect «naturel» des niveaux en forme de grotte pouvant être générés à l'aide de la méthode des automates cellulaires. Pour comprendre ce que je veux dire par méthode des automates cellulaires, imaginez le jeu de la vie de Conway. Mon code utilise ce qu'on appelle la méthode 4-5, ce qui signifie qu'une tuile deviendra un mur si c'est un mur et au moins quatre de ses neuf voisins sont des murs, ou si ce n'est pas un mur et si cinq voisins ou plus sont des murs. Je commence par remplir la carte au hasard avec des murs ou de l'espace, puis visite chaque position x / y de manière itérative et applique la règle 4-5. Afin de résoudre le problème de la formation de grottes isolées, après avoir rempli la carte de manière aléatoire, je supprime une ligne horizontale sur la carte, définissant chaque mosaïque sur un espace plutôt que sur un mur, avant d'appliquer la règle 4-5 à chaque mosaïque.
Vous pouvez afficher le code de ma classe de gestionnaire de cartes et les améliorations apportées ici.
ou une version archivée ici .
la source
Je pense que l'endroit le plus direct pour trouver ceci est de regarder le code source. Angband et Nethack, deux acteurs majeurs du secteur, sont tous deux open-source.
la source