JeuWeb - Crée ton jeu par navigateur
Générateur de Map Hexagonale - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Générateur de Map Hexagonale (/showthread.php?tid=6488)

Pages : 1 2


Générateur de Map Hexagonale - Lord-Gargoyle - 05-11-2012

Hello,

Je viens de me lancer sur un générateur de Map hexagonale.
Pour l'instant c'est le 1er jet, mon code doit faire 90 lignes, mais je vais rajouter des rivières, des marécages, des lacs, des déserts, des volcans ...

http://icelance.byethost3.com/MapGenerator/map_generator.php

N'hésitez pas à me dire ce que vous en pensez.
Pour le code, je le donne à condition qu'on me prévienne si on l'utilise Smile


RE: Générateur de Map Hexagonale - Xenos - 05-11-2012

Salut,

pas mal du tout, mais je trouve que cela fait un poil trop "circulaire": on devine que le système place quelques points au hasard et construit des "ronds" de différents diamètres autour de ces points.
Après, je pense qu'il te sera plus simple d'avoir chaque hexagone dans un élément à part, plutôt que de générer une RAW-image complète, car pour l'instant, si tu veux accéder à un hexagone donné et mettre ses voisins en jaune, ca me semble difficile...


RE: Générateur de Map Hexagonale - Lord-Gargoyle - 06-11-2012

(05-11-2012, 10:50 PM)Xenos a écrit : Salut,

pas mal du tout, mais je trouve que cela fait un poil trop "circulaire": on devine que le système place quelques points au hasard et construit des "ronds" de différents diamètres autour de ces points.
Après, je pense qu'il te sera plus simple d'avoir chaque hexagone dans un élément à part, plutôt que de générer une RAW-image complète, car pour l'instant, si tu veux accéder à un hexagone donné et mettre ses voisins en jaune, ca me semble difficile...

Hello Smile
Merci.
Oui plus exactement ce sont des ovales de tailles aléatoires, je ne me suis pas trop foulé Smile
J'ai jeté un coup d'oeil du coté des L-systeme, ou des ensemble de Julia, parce que j'aimerais avoir quelque chose de plus échancré, mais pour l'instant je n'ai pas trouvé de solution simple ... (mettre plus d'ovales ? pour l'instant il n'y en a que 5 ...)

Je n'ai pas non plus prévu de pouvoir retoucher ma map à la main pour l'instant, effectivement ça pourrait être utile Smile

Sinon pour la légende, c'est assez classique :

bleu foncé = mer profonde
bleu clair = mer peu profonde
jaune = sable
vert clair = plaine
vert foncé= plateau
blanc = neige des montagnes

Je vais mettre une nouvelle version bientôt ...


RE: Générateur de Map Hexagonale - Damocorp - 06-11-2012

Moi je serai bien intéressé par le code. Ne serait-ce que pour voir avec quoi tu fais ca, comment tu raisonne etc...

J'avais fait des tests sur ces deux tutoriaux du wiki :
http://wiki.jeuweb.org/tutoprog/carte_hexagonale
http://wiki.jeuweb.org/tutoprog/3d_iso_et_tuiles_hexagonales

Puis finallement l'Hexagonale ne m'intéresse pas plus que ca pour le moment. Mais je reste curieux Wink


RE: Générateur de Map Hexagonale - Lord-Gargoyle - 06-11-2012

(06-11-2012, 02:56 AM)Damocorp a écrit : Moi je serai bien intéressé par le code. Ne serait-ce que pour voir avec quoi tu fais ca, comment tu raisonne etc...

J'avais fait des tests sur ces deux tutoriaux du wiki :
http://wiki.jeuweb.org/tutoprog/carte_hexagonale
http://wiki.jeuweb.org/tutoprog/3d_iso_et_tuiles_hexagonales

Puis finallement l'Hexagonale ne m'intéresse pas plus que ca pour le moment. Mais je reste curieux Wink

L'hexagonale, il n'y a que ça de vrai ... Sinon les mouvements se font à 90°, c'est un peu horrible pour un amateur de beau jeu Smile

Bon, ben voila, comme je l'ai dit, je fais des sortes d'ovales qui ont un étalement aléatoire.
Ensuite j'assigne des altitudes, une altitude de 19 ou 20 c'est une montagne, mais par exemple si on veut plus de montagnes, on peut paramétrer de 18 à 20.

Et puis là j'ai rajouté les rivières, donc c'est facile l'eau prend toujours le chemin de plus grande pente ... Si la rivière s'arrête avant d'atteindre la mer, les case alentours deviennent des marais (code 7, désolé je n'ai pas explicité les codes Smile)

Je vais rajouter d'autres marais et puis des déserts et puis quelques volcans ...


RE: Générateur de Map Hexagonale - Xenos - 06-11-2012

Rien ne t'empèche de faire des pavages semi-réguliers (pentagones + quadrilatères par exemple), d'autant que cela développe bien plus les tactiques.

Pour le problème de "c'est trop oval", tu peux moduler en fleur:
- L'ovale est définit par une équation polaire (R = f(a) avec R le rayon dans la direction d'angle a par rapport à l'axe gauche-droite ou haut-bas, avec f=b²/(1-e²*cos²(t)) ou b² est le rayon de base et e l'excentricité je crois, enfin bref, plus b est grand plus l'ellipse est grande mais de forme constante, plus e est proche de 0 plus l'ellipse est ronde plus e est proche de 1 plus l'ellipse est plate)
[image supprimée depuis]

- Tu module f par une sinusoïde de pulsation w, de phase p et d'amplitude A aléatoires pour former g: g(a) = f(a) + A*sin(w*a+p)
- L'équation polaire devient R = f(a) + A*sin(w*a+p)
[image supprimée depuis]

Il est possible de mettre plusieurs ondulations:
[image supprimée depuis]

Attention toutefois à ce que la taille totale maximale de l'ondulation ne dépasse pas le rayon minimal de base de l'ellipse, sinon, il va y avoir un rayon négatif et la forme sera biscornue (on voit des petits traits rouge sur l'axe Pi/2 qui sont dus au fait qu'ici, avec des amplitudes A=0.6 et B=0.7, le rayon en 1.5*Pi est négatif et donc le trait "passe" de l'autre coté du centre polaire):
[image supprimée depuis]

Note: c'est ce système que j'avais utilisé pour générer les contours des villes dans un projet de jeu hors ligne: c'est assez efficace, si on fait attention à cette histoire de "rebroussement" (rayon négatif).


RE: Générateur de Map Hexagonale - Lord-Gargoyle - 06-11-2012

Merci pour l'astuce Smile
J'ai fait la modification : et voila ...
http://icelance.byethost3.com/MapGenerator/map_generator.php
(rechargez la page c'est aléatoire à chaque fois)
Bon mon jeu est loin d'être fait, alors je ne sais pas de quels terrains j'aurais besoin et dans quelle proportion, mais je crois que je suis content de moi et ça sera pas beaucoup plus difficile de faire une map beaucoup plus grande ...


RE: Générateur de Map Hexagonale - Damocorp - 07-11-2012

Le code est bien asser clair, pas besoin de commentaire je pense.

Tu va stocker comment la map ensuite ?


RE: Générateur de Map Hexagonale - Lord-Gargoyle - 07-11-2012

(07-11-2012, 01:27 PM)Damocorp a écrit : Le code est bien asser clair, pas besoin de commentaire je pense.

Tu va stocker comment la map ensuite ?

Pour la stocker, il y a plusieurs méthodes ...

1. La stocker case par case dans une Base de données.
2. Créer un objet et le sérialiser, puis idem dans une BD
3. Créer une image avec une couleur pour chaque type de terrain, ensuite on lit la couleur du pixel correspondant quand on veut accéder à une case ...
4. On pourrait imaginer de stocker les paramètres aléatoires de base, mais ça voudrait dire refaire tous les calculs ...

Ca ne devrait pas poser un gros problème non plus ...


RE: Générateur de Map Hexagonale - Klhz - 14-11-2012

En tout cas c'est bien sympa tout ça Smile

à la limite tu vire les hexagones et tu créer des une dixaines de textures aléatoires par zones capables de toutes être collées les unes aux autres et Hop! une image en transparance au dessus pour y mettre un effet carte un peu détériorée et de la lumière et tu es parti Big Grin