JeuWeb - Crée ton jeu par navigateur
Spawn des villages sur une carte - 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 : Spawn des villages sur une carte (/showthread.php?tid=5001)



Spawn des villages sur une carte - Colmea - 21-07-2010

Bonsoir,

Je viens demander vos conseils quant à l'algo pour le spawn d'un village sur une carte lors de sa création.

Le problème est simple:

_ les villages doivent se développer en cercle autour de la capitale principale du jeu (qui se trouve en 0;0).

_Chaque village doit être espacé d'au moins deux cases par rapport aux autres.


J'avoue j'ai un peu de mal à mettre en place la formule pour générer les coordonnées du nouveau village. C'est surtout cette idée de développement en cercle qui me pose problème.
Si quelqu'un peut m'aiguiller, ce ne serait vraiment pas de refus Smile

Bonne soirée Wink


RE: Spawn des villages sur une carte - php_addict - 21-07-2010

bon alors:

ta capitale = centre , origine de ton repère x,y

tu défini un écart type, exemple 4 cases

tes premiers villages seront sur le cercle ayant pour rayon 4 cases
tu espace tes villages sur la périphérie du cercle du même écart

une fois que tu a fais le tour du premier cercle tu augmente ton rayon (2 * ton écart type)
etc...

après quand tu as trouver une coordonnée x,y et ben tu peut appliquer un peu d'aléatoire pour décaler ta coordonnée x,y histoire que cela ne soit pas trop symétrique...

donc c'est des calculs de diamètres, rayon, arc de cercle, d'angles...ahhh sacré Pythagore !

j'ai du ressortir mes théorèmes de géométrie du collège Wink

dis moi si cela t'aide et surtout si tu y vois une amélioration possible qui pourrait m'être utile Wink

fais toi des dessins,..., tu sais comme au college Wink


RE: Spawn des villages sur une carte - Argorate - 21-07-2010

Tu as une zone limite autour de la capitale (tu parles d'un minimum égal a 2, mais as-tu un maximum)?
Tu veux que ça se devellope dans "l'ordre" j'imagine? C'est a dire, près de la capitale au départ puis en séloignant?


RE: Spawn des villages sur une carte - keke - 21-07-2010

Et si tu déployais en spirale ?
Un modèle mathématique à la clé, et tu pourrais obtenir ta répartition.

kéké


RE: Spawn des villages sur une carte - Colmea - 21-07-2010

Merci pour vos réponses.

php_addict > C'est une très bonne idée en effet. Je pense que c'est ce qu'il me faut.

Argorate > Il n'y a pas de zone limite. Plus il y a de villages,plus la carte s'agrandit.
Et oui c'est bien ça, les premiers villages se développent près de la capitale, puis en s'éloignant.

Kéké > Pourquoi pas ! Mais je t'avoue que autant faire un cercle, ça peut aller, mais une spirale .. aucune idée !
EDIT: Seulement si j'opte pour la spirale, les villages risquent d'être de plus en plus éloignés entre eux. Or, ils doivent toujours être dans un écart de 3 à 5 cases plus ou moins)

Je vais un peu approfondir ça, merci à vous Wink


RE: Spawn des villages sur une carte - php_addict - 21-07-2010

(21-07-2010, 10:46 AM)Colmea a écrit : php_addict > C'est une très bonne idée en effet. Je pense que c'est ce qu'il me faut.

c'est les 1eres ligne de code que j'ai fait pour mon mmorpg, alors dit moi si tu y vois une amelioration posible, cela serait sympa

happy coding Wink


RE: Spawn des villages sur une carte - keke - 21-07-2010

Certaines spirales tournent selon un pas régulier.
http://fr.wikipedia.org/wiki/Spirale_d%27Archim%C3%A8de

Si tu trace un trait qui coupe le point 0.0 de cette spirale,
[Image: Archimedean_spiral.svg]
http://upload.wikimedia.org/wikipedia/commons/c/c5/Archimedean_spiral.svg
le pas correspond à la distance qui sépare 2 intersections consécutive entre la spirale et ton trait.

Bref, si ce pas est de la taille de 3 cases, alors tu peux situer tes points de manière régulière sur la spirale tout en respectant tes contraintes. (j'ai fais un petit dessin pour me faire comprendre ... j'ai mis des zones vertes sur la spirale précédement montrée ^^

Mais je comprendrais aussi que tu préfères une solution par cercle.

kéké