Salutations à tous !
Pour offrir un jeu exceptionnel, l'idéal serait d'ajouter un générateur de carte, permettant tout d'abord de générer des reliefs quelconques pour faire une carte de base, se répétant sur elle même.
Tout d'abord donc, le programme va créer une fonction à deux variables, parfaitement définie, qui sera périodique de période N. On l'appellera F, donc:
F(x+N, y) = F(x, y) = F(x, y+N) = F(x+N, y+N)
Ainsi, la hauteur d'un point de la carte est donné par la valeur de F(x, y) avec x et y l'abscisse et l'ordonnée de la carte (on considèrera que la carte est une base plane, donc, ce n'est pas un globe ou une Terre ronde qu'on refait!). L'altitude est prise par rapport à un repère 0 qui ne correspond à rien du tout ! C'est à dire que le niveau de la mer n'est pas forcément au 0; le 0 est simplement l'altitude la plus basse qui pourra exister dans le jeu (donc, comme certaines fosses marines descendent à 10.000m de profondeur, on pourrait dire que le niveau 0 du compilateur est le -10.000 de la réalité, mais bref, passons: le 0 ne correspond pas à la hauteur du niveau de la mer!).
Ensuite, une autre fonction, appelons-la H(x, y), permet de définir la hauteur de la couche de roches perméables au point (x, y). Cette hauteur sera aussi donnée en mètres. On crée ensuite une troisième fonction, nommée P¨(x, y), donnant la perméabilité moyenne des roches au points (x, y). De cette façon, au point (x, y), le sol pourra absorber une quantité d'eau donnée:
A(x, y) = H(x, y) * P(x, y)
A(x, y) représente ainsi la hauteur de la colonne d'eau absorbée par le sol, comme une éponge absorbe le contenu du verre renversé un soit de réveillon.
On a donc, en tous point de la carte, les valeurs suivantes:
F(x, y) altitude du point de carte, >= 0
H(x, y), hauteur des roches perméables en mètres (on peut avoir Altitude - Hauteur de roches < 0)
P(x, y), perméabilité des roches, sans unité, avec 0 < P(x, y) < 1
A(x, y), l'absorption du sol en ce point (mètres)
L'idée serait maintenant de faire pleuvoir de l'eau sur toute la carte, et de la faire ruisseller, pour obtenir des reliefs usés par l'érosion.
On va donc dire qu'une hauteur d'eau de He, fixe, tombe sur toute la carte. Ainsi, la hauteur d'eau pouvant ruisseller en tous points de la map est donnée par - = :
E(x, y) = He - A(x, y)
Mais maintenant, il me faut faire ruisseler cette eau, et faire qu'elle ronge les reliefs... Une idée pour simuler cela et pouvoir créer ainsi la carte?
L'idée serait de trouver un modèle, mathématique autant que possible, permettant de savoir en tous points de la carte si il y a des roches ou non (peut importe, maintenant, leur perméabilité ou leur altitude, il faudrait savoir si M(x, y, z) est dans une roche ou pas!)
Idée?