Je construis une île. J'utilise la solution classique de l'altitude: avec une fonction de construction de collines, en évitant les coins de la carte, je fais de l'altitude. Ensuite, le bruit perlin me donne quelques variables climatiques pour gérer les biomes. Maintenant, je suis confronté à deux défis qui sont en quelque sorte connectés:
Dans Dwarf Fortress, l'un des aspects intéressants de la génération du monde est la façon dont le jeu semble "connaître" les zones et leur donner des noms, bien que ce ne soient pas des formes rectangulaires. J'aimerais pouvoir "reconnaître" mes forêts, mes rivières, mes collines ... une idée du type d'algorithme que je pourrais utiliser pour scanner ma carte et interpréter ses zones? Et comment stockeriez-vous cela? J'utilise un graphe C ++ de base composé d'un vecteur de vecteur d '"objet tuiles".
Cette île doit être divisée en zones politiques, pas seulement en régions purement naturelles. Je pourrais utiliser des montagnes et des rivières pour faire des "frontières naturelles", mais ma carte générée par la procédure ne garantit pas que j'aurai de belles "enclaves" qui formeraient un royaume; Je pouvais me retrouver avec un gigantesque espace politique "en forme de ruban" entouré de micro-royaumes. Une autre possibilité serait de rechercher des zones appropriées pour une ville ou un château. Ensuite, "développez" un espace politique autour de lui. Mais là encore, j'aimerais avoir des algorithmes bien connus avant d'essayer de concevoir les miens.
Cette question pourrait être interprétée comme un peu trop vague, donc une façon de la reformuler serait: comment partitionner (sans modifier!) Un monde généré de manière procédurale en zones adaptées au gameplay? Merci d'avance pour votre aide.
la source
Réponses:
Amitp suggère d'utiliser des bassins versants pour définir diverses régions, comme expliqué dans son article sur la génération de cartes polygonales . Les bassins versants sont mieux visibles en générant une carte à l'aide de sa démo . L'avantage d'utiliser des bassins versants pour aider à subdiviser les continents est qu'il fournit des limites perpendiculaires au rivage, tandis que les montagnes fournissent généralement des limites parallèles.
Si je subdivisais des régions géographiques, j'utiliserais une combinaison de montagnes, de bassins versants et de détection de bord sur les divers biomes de ma carte.
Je soulignerai également que les régions politiques couvrent généralement de nombreuses régions géographiques. Je générer des régions géographiques d' abord, puis attribuer à chaque région une note d'opportunité (est - ce une côte? Est - il d' or? Une bonne terre agricole?) Et le coût de Voyage (terrain de raide? Bois lourds ?.) Ensuite , en utilisant votre algorithme de pathing préféré , générer un carte thermique des déplacements entre les régions désirables. Celles-ci finiront par être vos routes, et vous pourrez construire vos frontières politiques à partir de là. Ces frontières comporteront généralement de nombreuses routes et moins de routes entre elles.
la source
Pour ajouter à la réponse de Dan Rasmussen :
L'une des principales raisons pour lesquelles je suis passé de Perlin Noise ( ce projet ) à l'utilisation de polygones ( ce projet ) est que les polygones fournissent une belle structure pour attribuer de plus grandes zones (régions politiques, forêts, déserts, zones nommées, limites, etc.). Commencer par la structure puis générer la carte est similaire au rendu polygonal - quelque chose qui est relativement facile. Commencer par la carte puis déduire la structure est similaire à la vision par ordinateur - quelque chose qui est relativement difficile, mais possible. Je veux à la fois la structure et la carte, j'ai donc décidé d'opter pour la méthode relativement facile de construire une carte au-dessus de la structure (nœuds et bords).
Même alors, j'ai trouvé que je voulais des structures plus grandes que ce que j'avais généré. Les bassins versants étaient une tentative de construire ces structures plus grandes, mais je dois essayer plus d'approches de regroupement des polygones. Je n'ai pas trouvé quelque chose dont je suis satisfait.
Je ne sais pas comment Dwarf Fortress le fait. Étant donné à quel point ces gars sont brillants, je ne serais pas surpris s'ils avaient un algorithme sophistiqué de «vision par ordinateur».
la source
Pour votre première question, ma meilleure hypothèse serait d'utiliser un algorithme de détection des bords pour trouver les limites de vos régions naturelles (forêt, collines, ...). Il existe de nombreux algorithmes pour ce type de problème.
Pour la deuxième question, vous pouvez utiliser votre propre idée pour faire apparaître un château (généralement au sommet d'une colline pour une bonne défense et près de l'eau douce), puis utiliser un algorithme voronoi pour avoir des régions autour de chaque château. Vous pouvez utiliser le bruit ou vos limites de biomes pour rendre les limites plus réalistes.
la source