31-08-2018, 12:58 PM
(Modification du message : 31-08-2018, 12:59 PM par Thêta Tau Tau.)
Du coup j'ai regardé le code source du générateur passé en lien par seishin.
En résumé :
En résumé :
- des points sont tirés aléatoirement avec un algorithme nommé "poisson disc sampling" qui sont utilisés pour générer un diagramme de Voronoi. Le résultat est très similaire à l'algo dont j'ai parlé au dessus. C'est probablement plus performant : cet algo est en o(n) alors que les meilleurs algo de diagrame de Voronoi sont en o(n log n). Cela dit l'algo que j'ai présenté à l'avantage de ne presque pas demander de code supplémentaire étant donné qu'il réutilise l'algo de génération de diagramme de Voronoi dont on a de toute façon besoin. A noter aussi qu'avec le poisson disc sampling on fixe une distance minimale entre les points, alors qu'avec mon truc à base de Voronoi on n'a pas de garantie, même si en pratique c'est trop un problème.
- Ensuite l'altitude des points est générée. Perso quand je veux faire ça je traces les grandes lignes de mon relief puis j’ajoute du bruit de Perlin, c'est une méthode simple et efficace. J'ai pas regardé en détail ce qu'ils font ici (pas tout pigé de leur code), mais il semble qu'ils prennent des points au hasard pour y placer des éléments géographiques (montagnes, collines etc.) et qu'ils appliquent ensuite différent modificateurs (lissage etc.).
- Pour les rivières ils utilisent l'altitude et font en sorte que les rivières coulent selon la pente. C'est un algo classique mais relativement complexe (pour avoir déjà essayé de l'implémenter). J'ai tendance à préférer des algos maison qui donnent des résultats similaires mais qui ne respectent pas la pente (inspirés des algos de colonisation de l'espace), ce qui n'est pas un problème pour les cartes 2D où on ne verra de toute façon pas si une rivière remonte une pente (en 3D c'est différent).
- Ensuite ils placent des points au hasard, puis ils génèrent les "cultures" (=régions) en partant de ces points. Leur algo à l'air très complet (routes, villes, hameaux, ports…) avec prise en compte du terrain etc. J'ai encore jamais fait ce genre de truc (c'est en projet). En gros ça consiste à fusionner les cellules de voronoi en régions constituées de plusieurs dizaines de cellules, donc avec une forme irrégulière. Il y a moyen de faire beaucoup plus simple que ce qu'ils ont fait.
- Ensuite ils font pas mal de trucs pour que ça soit plus joli (tracé des côtes, ajout des dessins de montagnes etc.).