Generateur de map (WIP)

Voilà pour un p’tit projet de pseudoRpg en cours, un générateur de map en flash…
Cliquez sur +/- pour changer la définition et le bouton d’à côté pour générer une nouvelle map (ça prend un peu de temps pour les plus grosse def, normal…)

Bon y’a encore plein de choses à améliorer mais pour l’instant ça marche :)

EDIT: Petite explication de l’algorythme utilisé pour DakoR et pour les autres :)
Cliquez sur voir la suite pour ceci

I. On commence par generer une grille avec des valeurs choisie aléatoirement entre 0 et 1, la taille de cette grille de départ est ici taille choisi dans l’interface + 4

Exemple:avec une grille 5×5

0.1 0.8 0.4 0.5 0.9
0.5 1.0 0.7 0.4 0.1
0.0 0.3 0.2 0.1 0.7
0.7 1.0 0.7 1.0 0.4
0.1 0.8 0.4 0.5 0.9

II. On agrandit la map à partir d’un algorythme simple qui consiste à rajouter une valeur intermediaire pour chaque valeur de la grille. sa valeur sera la moyenne des deux valeurs voisines +/- une valeur aléatoire

Exemple:

dans la grille précédente, pour les deux premières valeur: 0.1 et 0.8 on obtiendra une valeur intermédiaire de (0.1+0.8)/2 = 0.45 + une valeur aléatoire minime disons -0.05 = 0.4

ainsi de suite…
pour le premier carré représenté par les valeurs

0.1 0.8
0.5 1.0

on obtiendra par exemple

0.1    0.4   0.8
0.34   0.65  0.95
0.5    0.7   1.0

(la valeur du milieu étant la moyenne des quatres valeurs + aléatoire)

On réalise cette opération plusieur fois histoire d’obtenir une taille conséquente (3 fois dans mon cas)

III. On utilise les valeurs de la grille afin de determiner des seuils: par exemple les valeurs inférieurs à 0.3 correspondront à la mer, celle comprise entre 0.3 et 0.6 seront la terre ferme, 0.6 et 0.8 les collines, etc…

On remplace alors les valeurs de la map par un index correspondant à leur nature:

0 mer
1 terre
2 colline
3 montagne
...

IV. C’est l’heure de rafinner un peu tout ça histoire d’obtenir quelque chose qui a plus de gueule: On moyenne chaque valeur de la grille avec les valeurs des cases voisines.

Exemple:
si on a:

0 1 0
1 0 1
0 1 1

la case du milieu se changera en 1
lors de cette opération on ne traite pas les bords de la même manière mais on les remplace systématiquement par de l’eau (0)

V. Enfin on materialise les côtes en parcourant chaque case et en mettant un nouvelle index (par exemple 4) à toutes case qui n’est pas de l’eau (0) mais qui a dans ses voisines dirrectes (haut-bas-gauche-droite) au moins une case d’eau (0)

VI. Il n’y a pas de VI pour l’instant mais on peut très bien penser à rajouter les forêt, marais, etc… Pour ce qui est de la partie géographique, par la suite il faudra rajouter les lieux sur lesquels le joueur pourra tomber (village, grotte, donjon, etc…)

8 thoughts on “Generateur de map (WIP)”

  1. ca me rapelle civilization premier du nom…
    sinon y aurait moyen de voir l’algo que tu as utilisé? ca m’interesse ^^

  2. DakoR > J’avais déjà vu quelque part le coup de partir d’une grille simple et de calculer les valeurs intermédiaires de cette manière (Faudra que je retrouve l’article d’ailleur…), pour le reste c’est du bricolage maison :)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.