J'ai créé une carte de hauteur aléatoire et maintenant je veux créer des rivières. J'ai fait un algorithme basé sur un * pour faire couler les rivières des pics à la mer et maintenant je suis en quête d'un algorithme élégant pour les rendre.
C'est une carte quadrillée 2D. Les cellules que la rivière traverse ont une valeur entière simple avec cette forme: rivernumber && pointOrder. C'est-à-dire: 10, 11, 12, 13, 14, 15, 16 ... 1 + N pour le premier fleuve, 20,21,22,23 ... 2 + N pour le second, etc. Ceci est créé dans le cartographier le temps de génération de la grille et il n'est exécuté qu'une seule fois, lorsque le monde est généré.
Je voulais traiter chaque rivière comme un vecteur, mais il y a un problème, si la même rivière a des branches (parce que je mets du bruit pour générer des branches), je ne peux pas simplement connecter les points dans l'ordre.
La deuxième alternative est de générer un algorithme complexe où analyse chaque point, vérifie si le suivant n'est pas une branche, si c'est le cas, déclenche un autre algorithme qui prend soin de la branche puis retourne à la rivière principale, etc. Très complexe et inélégant.
Il y a peut-être une solution dans l'algorithme de génération du monde ou dans l'algorithme de rendu de la rivière qui est couramment utilisé dans ces cas et que je ne connais pas.
Des conseils? Merci!!