coup sur coup, on m'a posé la question de "comment créer les reliefs" dans CMBN lors de la création d'une carte.
Faut il commencer par le haut ? par le bas ?
Comment marche l'éditeur sur ce point ?
Je vais essayer de décrire ici ma méthode, pour ce qu'elle vaut.
tout d'abord, le relief se fait-pour moi- en dernier, quand la carte est déjà dessinée dans son ensemble, ou au moins quand la partie de la carte sur laquelle on veut positionner le relief est assez avancée pour voir quelque chose.
Je trouve plus facile de créer le relief qui explique les texture choisie, que de mettre des texture sur le relief.
Donc, voici une carte hâtivement dessinée. une rivière franchie à gué par une route. un hameau dans lequel la route se divise : la route qui va vers le nord longe une église, alors que celle qui va vers le sud reste à niveau.

Je décide que les deux bois qui sont dans les angles sont sur des hauteurs, l'église sera un peu plus haut que le village.
AVANT TOUT JE SAUVEGARDE ma carte : il est très pénible d'effacer le relief si le résultat est déplaisant : je préfère repartir d'une version "propre".
Régulièrement je sauvegarde lorsque j'estime que ce que j'ai fait me convient et surtout que ce que je vais faire peut gâcher tout le reste !
J'ouvre donc l'éditeur de relief de CM et je choisi le bouton "diriger". c'est le seul que j'utilise....

La carte est crée par défaut avec un niveau "20" visible sur toute les cases de la carte. Cette valeur est théorique : tant qu'on a pas ajusté au moins un point, la carte est à cette valeur. Si on ajuste un point, la carte sera recalculée vers cette nouvelle valeur.
Je pourrais modifier cette valeur (bouton "tout ajuster") mais à quoi bon ? 20 me laisse de la place pour monter les reliefs jusqu''à 999 ! Et 20 me laisse aussi un peu de marge si je veux "creuser un trou" dans ma carte.
bien sur, cela veut dire que "20" est le niveau du sol, le point que je considère comme celui "normal" et que je vais stabiliser à cette hauteur la plupart des éléments. Au dessus je serai dans une démarche intellectuelle du type "je suis en train de créer un point haut", plus bas, je serai en train de faire "un fossé".
Si j'avais voulu dire "je vais créer le sommet d'une colline et créer ma carte à partir de ce point dominant, j'aurais ajusté toutes les valeurs sur "300" puis j'aurais eu besoin de forcer la descente de tous les points de la carte plus bas : c'est à dire tous ! un peu compliqué, mais ça marcherait.
Lorsque je fixe une valeur à une case de la carte, le système va essayer de mettre tous les points voisins, de proche en proche, à cette hauteur.
Imaginons que je fasse un seul point sur cette carte vierge, à la hauteur "50" : le système partirai de ce point 50 et tirerai à la hauteur 50 tous les points voisins, puis les cases voisines puis, puis, puis... et toute la carte serait automatiquement remontée à la hauteur "50".
sur le dessin ci dessous, sur une carte de valeur 20 initiale, je mets un point à hauteur "50" : automatiquement la carte va s'élever mais rester plane pour être entièrement à la valeur 50.

On ne peut donc obtenir un relief qu'en fixant au moins deux valeurs différentes sur la carte :une à une hauteur "X", une autre à une valeur "Y" : CM calculerait autour de ces points un ajustement pour les voisins les plus proches puis les voisins des voisins ... les cases entre les cases X et Y seraient donc tirées vers X et vers Y pour finir par être au milieu. Plus elles sont proches du point X plus la valeur sera proche de X, plus elles sont proche d'Y plus leur valeur sera proche d'Y. Si elle sont pile entre les deux, alors la valeur sera la moyenne de X et Y.
(au passage : le bouton "ajuster" fixe la valeur d'une case, en demandant à CM de ne pas l'utiliser pour les calcul : une sorte de point fixe définitif. Je ne vois pas l'intéret de cette option...)
Voici le résultat :

un point fixé à "30" un autre à "50" : la carte va donc s'élever entre ces deux points, de façon régulière.
Mais voyons cela concrètement.
Pour pouvoir faire du relief, il faut donc que je fixe la valeur d'une case de référence. Pour moi, le plus simple est de fixer une valeur "20"à la zone la plus basse de la carte.
CM considère que les cases avec de l'eau sont toujours les plus basses. en attribuant une valeur "20" à une des cases d'eau, je lui dit "voila le point le plus bas de ma carte quelque soit ce que je fais ensuite, ne touche plus à ces cases là".
Comme l'eau est toujours plate à CM, il me suffit d'attribuer "20" à une seule case de rivière pour que toutes les autres cases humides s'y retrouvent automatiquement lors du passage en 3D. pourtant, sur l"éditeur, il peut arriver que les case de rivières, prennent des valeurs supérieures, et il m'a fallut du temps pour comprendre pourquoi:
si je dis à CM cette case vaut "20" il va l'utiliser comme point de référence pour son calcul : c'est un point qui vaut "20", il va essayer de mettre les voisines à "20 aussi. S'il y a au voisinage une case qui vaut 30 et une autre qui vaut 50, il va confronter ces 3 points de références pour faire un relief aussi régulier que possible vers ce point :
cela donne ce profil :

le système voit un point "50", un point"20", un point "30" et fait le calcul des pentes. il vérifie ensuite que la rivière est bien au plus bas et le résultat est correct.
Maintenant imaginons qu'une des cases de rivière n'ait pas une valeur "20" forcée. comme c'est de l'eau, CM va la mettre au plus bas mais après avoir fait son calcul de pentes.
sur le shéma suivant, la case d'eau entre les points "30" et "50" n'a pas été forcée sur "20". cependant, comme ailleurs sur la carte j'ai dit qu'une case d'eau est à "20", il sait qu'il finira par faire descendre ma case à "20".
Cela donne ce profil :

Le système a calculé entre "30" et "50" une pente naturelle, puis il a fait en tout dernier l'ajustement à 20 de cette seule case d'eau : il y a donc un effet de falaise pas forcément bienvenu...
J'espère que je suis clair, c'est pas simple à expliquer...

Le but de ces explications est de dire "même si à la fin toutes les cases de rivières prendront la valeur la plus basse possible présente sur la carte, si je veux éviter les falaises, je dois imposer une valeur à chacune des cases de rivière !"
ce qui donne ceci :

pour l'instant je lui est fixé une seule valeur "20" en plusieurs point de la carte : comme toutes les valeurs sont identiques, ma carte est toujours aussi plate. Aucun relief n'est créé. si j'avais fixé "10" ou "50" à toutes les cases de rivière , la carte serait toujours aussi plate, mais simplement "plus haute" ou "plus basse"sans que cela ne se voit ... elle serait toujours aussi plane.
Il me faut donc lui donner du relief.
Je place maintenant mes sommets : les deux bois, ainsi que l'église.
"1" sur l'échelle de relief, ajustable avec les signes + et - du clavier numérique correspond à une différence de 1 mètre de hauteur.
Pour rappel une case fait 8 mètres sur 8 : une augmentation de 1 mètre par case est donc une pente très douce.une augmentation de 4 par case fait une pente de 50% ! une sacrée grimpette interdite aux véhicules.
Selon le relief souhaité, il faut donc trouver les valeurs raisonnables mais qui permettent tout de même de jouer à cache cache... Pour cela, il n'y a qu'une solution : faire des essais (et donc garder une sauvegarde "propre"pour pouvoir tout recommencer si vous avez vraiment trop fait n'importe quoi.
Si vous regarder de près la carte, vous voyez qu'entre la rivière et les "sommets" le système a calculé la hauteur de chaque case intermédiaire. on a bien une pente douce qui part de chacune des cases de rivière et va vers chacune des cases de relief.
Là ou il n'y a pas de sommet", la carte reste à "20" puisqu'il n'y a pas de case de relief élevé proche pour venir modifier ces valeurs.
Mais avant de constater en 3D l’existence de ces reliefs, je procède systématiquement à une autre opération : aplatir les habitations !

En effet, regardez sur l'image précédente : le village se retrouve posé sur une pente, les valeurs augmentent sans tenir compte des maisons. Cela pourrait n'être que peu gênant, mais du coup les maisons se retrouvent plus ou moins enterrées, la colline bloquant donc en apparence les portes ou les fenêtres... je trouve ça moche, donc je contraint l'altitude des maisons pour que chacune soit sur un sol plat, ce qui est le cas de la plupart de nos maisons, j'imagine.
Je pourrais attribuer une valeur à chaque case de chaque maison mais cela a deux inconvénients :
- c'est long à faire !
- chaque case ainsi "orientée" est une base de calcul pour CM, l'affichage en 3D qui calcule pour chaque case non contrainte l'influence de chacune de celles qui sont contraintes se retrouve avec un travail astronomique qui prend du temps ralentit nos machines et les fait planter au bout du bout... imaginer que ma toute petite carte fait environ 40 x 40 cases = 1600 cases. Lorsque je place 2 points de relief, mon ordi calcule l'influence du 1er point sur 1600 cases, puis le refait pour le 2eme point. Avec ma rivière, mes deux sommets, j'ai déjà placé environ 60 cases forcées : mon pauvre ordi fait 60 x 1600 = 96 000 opérations pour afficher ma carte (au moins ! )
Autant gagner du temps machine en limitant ces calculs, non ?
Mais comment faire pour contraindre toute une zone ? Eh bien il suffit d'en faire un îlot encerclé de la valeur cible.

on voit que toutes la zone "encerclée" par les valeurs 21 ne subissent plus l'attraction des autres zones de relief : elles sont figées à cette hauteur.
Ma carte peut maintenant être visualisée en 3 D :le relief est il correct ?
Pas facile par une image de vous montrer du relief en 3D, on le découvre en jouant avec la souris ! M'enfin voici une photo qui montre bien les deux sommets dans les angles boisés, et le creux dans lequel se trouve le village.

En visitant cette carte, je m'aperçois de plusieurs choses :
1/
je voulais que depuis le nord-est la carte descende un peu et remonte vers l'église puis redescende vers le village.
Or en l'état le système a simplement fiat une pente entre le sommet et le plateau de l'église.
Il faut donc que je force le relief entre les deux sommets, en mettant une valeur plus basse. cette valeur (23) va tirer les cases entre léglise et elles vers 23

2/ je voulais que les troupes arrivant depuis le sud-est par la route aient un peu de discrétion. or tel quel, la route est à la vue de la hauteur du Sud-Ouest en face et d'une partie du village. Je vais donc creuser la route sur sa zone de sortie et ajouter une hauteur entre cette route et la rivière.
voici cette modification :

voici une carte qui peut sembler parfaite pour une (toute petite) partie.
Pourtant je viens de commettre une erreur que j'ai mis longtemps à comprendre !
Je viens de forcer la route "vers le bas" allant jusqu'à une valeur 16 en bord de carte.
Or rappelez vous : l'eau prend toujours la valeur la plus basse possible de la carte, il n'y a rien "en dessous" de l'eau.
Donc, bien que j'ai du "20" contraint visible sur la carte, bien que les pentes soient calculées à partir de cette valeur "20" forcée, au dernier moment, lorsqu'il devra afficher la carte, la rivière sera à un niveau "16"...
Et voila pourquoi on peut s'arracher les cheveux devant une rivière profondément (valeur 16) encaissée (effet falaise) alors qu'on a tout fait pour la mettre au niveau "20", et qu'il l'affiche à 20


Évidement ce soucis n'est présent que si on met de l'eau ... Mais j'adore en mettre !
voila, j'espère avoir été clair et vous avoir aidé pour vos créations !
n'hésitez pas à me questionner par MP ou mail....
