Algorithme de génération de tuiles 2D aléatoires

Quelqu'un peut-il me dire comment générer des structures d'îlots ou de collines comme dans minecraft?

je suis juste à la recherche d'une théorie appropriée pour cette génération de forme aléatoire, mais elle devrait garder un motif de base défini..

<!-Comme: les îles devraient être arrondies mais avoir une forme et une échelle variables (largeur et hauteur min./max.).

<!-Les rivières ne doivent pas être des lignes droites, elles doivent avoir des courbes et une largeur aléatoire.

ou encore: générer une sorte de forest, où les arbres sont placés d'une manière que l'utilisateur peut encore marcher à travers la forêt (c'est un simple je pense, juste dire que certains blocs autour d'un arbre devrait rester vide, si le code essaie de mettre plus d'arbres autour de la dernière )

Quel genre de mathématiques puis-je utiliser pour faire de telles choses?

je serais heureux pour quelques liens pour des tutoriels ou des références. J'ai cherché partout sur le web pendant des heures, mais tout ce que j'ai pu trouver c'était des livres à acheter comme "game mathematics" ou quelque chose comme ça., mais mon budget est fixé à zéro.

EDIT:

tout d'Abord, je suis désolé pour mon mauvais français.

Secondaire je tiens à tous vous remercier pour vos réponses. Ce sont d'excellentes références et je vais passer beaucoup de temps à aller plus loin.

22
demandé sur Ace 2012-08-15 15:03:00

3 réponses

je vous recommande fortement de regarder Amit du Jeu de données de Programmation et d'autres articles de blog par lui. Il avait toute une série sur la création de cartes réalistes avec des rivières, des côtes, etc.

Construire Des Mondes

bien que la génération de cartes procédurales puisse être appliquée à des mondes non-grid, il est le plus souvent utilisé avec des grilles. Vue à un seul moment dans le temps, les cartes de jeu générées sont rarement aussi belles que des mondes faits à la main. Cependant, ils présentent trois avantages: (1) un coût inférieur par monde s'il y a de nombreux mondes à fait, (2) plus la valeur de relecture car la prochaine le temps à travers le monde est différent, et (3) le potentiel pour le monde l'évolution pendant que le jeu progresse.

  • Amit la Carte du Monde, Générateur
  • génération de contenu procédural: générer du terrain, des villes, des bâtiments
  • génération de donjon en Unangband
  • Générer des mondes de jeu avec un structure de serrure et de clé de sorte que certaines pièces nécessitent des objets provenant d'autres pièces
  • Algorithme pour la construction de rivières
  • ajouter des rivières à un terrain créé au hasard
  • L'original de Voyous algorithme pour générer des donjons
  • 11 Labyrinthe de Générer des Algorithmes avec les démos et le code
  • utilisant des fonctions de bruit pour générer des cavernes comme celles de Terraria et Minecraft
  • pièces de forme irrégulière, simples algorithme
  • redimensionnable intérieur des régions de la salle
  • algorithme de Tunneler pour creuser des donjons dans DungeonMaker
  • Guide de l'aléatoire dans le Terrain des techniques de Génération de
  • Wiki guide de la procédure de génération de contenu
  • Simulation D'Importantes Mondes Virtuels

Amit génération de cartes polygonales pour les jeux (premier article de la liste) est un article impressionnant qui parle sur la logique de générer des côtes, des îles, des rivières, des montagnes, etc. Très impressionnant peu de travail!

Une Méthode Pour "Cultiver" Des Rivières Dans Un Monde Généré De Manière Aléatoire [inclus dans la liste ci-dessus] algorithme assez simple pour générer le chemin d'une rivière basé sur les autres "tuiles" de la carte, par exemple leur type et leur altitude.

32
répondu Ray Hayes 2012-08-15 11:21:30

j'ai trouvé une fois un bon site pour la théorie quand j'ai fait un rougelike. regardez.

3
répondu Mizipzor 2012-08-15 11:15:03

très souvent, les cartes sont logiquement divisées en couches / superpositions telles que "Hauteur du terrain de base", "niveau d'eau", "hautes terres", "arbres", "habitat" etc.

puis pour chaque couche un type différent de générateur est exécuté. Très souvent les fractales sont utilisées parce qu'elles ont tendance à générer des formes intéressantes et difficiles à prédire. Mais seulement une partie de la fractale est utilisé. L'utilisation d'un entier exposerait instantanément la structure (sur les fractales de haut niveau sont très répétitifs) et les téléspectateurs remarqueraient il. Ainsi, la fractale générée est ensuite déformée/modifiée/filtrée/coupée de sorte que ce ne sera pas évident. Par exemple, vous pouvez générer le niveau du terrain de base avec un oscillateur trigonométrique X-Y simple, puis le résumer avec une partie de votre image fractale, limitée à quelques valeurs min-max, et vous obtiendriez un terrain inégal avec des collines et des chutes notables..

pour toutes les autres couches, vous ne pouvez généralement pas "résumer", parce que les couches autres que le terrain ne sont pas sur la "hauteur" ou la "densité" mais plutôt ils sont 0/1 - placer l'arbre ici ou ne pas placer l'arbre ici? Mais encore une fois, vous l'exécutez de manière similaire: vous générez une certaine image (peut-être une fractale à nouveau), puis inspectez les nombres et mettez une valeur de seuil: partout où le nombre est supérieur/inférieur à X, vous placez/notplace la chose. Vous pouvez en outre le filtrer ou le ramifier: par exemple, si un arbre atteindrait une position sous-marine, y placer un poisson ou ne pas y placer l'arbre du tout.

je suis surpris que vous n'ayez pas pu trouver de ressources sur elle. Il ya quelques années googler pour "algorithmes de génération de terrain" serait retourner de nombreux coups!

3
répondu quetzalcoatl 2012-08-15 11:16:06