[pathfiding point and Clilc] Contourner un obstacle.

Falco Message lu Posté le 19 Jan 2009 à 14:04 Bulle
Avatar de Falco
Explorateur

Messages : 135
GCPoints : 20545
Bien le bonjour,

Voila, je suis en train de concevoir un système de jeu Point and Clic pour le fun, et je suis bloqué sur un point assez fâcheux ; le Pathfiding.
Pour le moment, j'ai fait :

Lorsque je clic sur un endroit précis avec ma souris, je récupère les coordonnées du points cliqué, puis je soustrait/additionne les variables de coordonnées du héros afin qu'il se déplace précisément sur le point.


De ce coté la, pas de problème, ça fonctionne parfaitement.

Ensuite, j'ai placé une image sur ma map. Cette image représente la zone praticable, autrement dit, le héros ne peut marcher qu'a cet endroit. Si je clique en dehors de cette zone, le personnage s'avancera au bord de cet image, mais ne pourra en aucuns cas la traverser.

Ça fonctionne également.

Voila le plus dur arrive, comment faire pour que si je clique sur un point, et puis qu'entre le héros et ce point, il y ai un obstacle, que le héros décide par lui même de contourner ce point ?
J'ai jamais été vraiment fort en logique ^^"

Si vous pouvez, essayez de ne pas me donner un truc trop compliqué, je débute en programmation :p
Merci par avance :)


Gulix Message lu Posté le 19 Jan 2009 à 14:16 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860
Tu as plusieurs solutions.

L'algorithme A* tout d'abord. Il te permet de définir des chemins sur des environnements de type quadrillé.

Il y a une autre solution, qui consiste à définir des points de passage sur ton terrain, avec un chemin en ligne droite non interrompue entre tous tes points. Tu obtiendras un graphe, et tu pourras calculer le chemin le plus court en inspectant les différents points.
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Falco Message lu Posté le 19 Jan 2009 à 14:19 Bulle
Avatar de Falco
Explorateur

Messages : 135
GCPoints : 20545
Hum, d'accord, et la plus simple, c'est laquelle ? :p
Du moins, la plus facile à mettre en place.

Merci.
Mod Message lu Posté le 19 Jan 2009 à 14:35 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Je dirais que A* est plus simple car utilisant les données de la map déjà établie (si map quadrillée, bien sûr), là où l'autre méthode demande de générer un graphe et de l'explorer (là ce serait bon pour un algo Djikstra).
Dans un cas comme dans l'autre ça peut assez rapidement être un gouffre à ressource. Ca pourrait être utile de savoir sur quelle plateforme tu comptes faire cela.
Falco Message lu Posté le 19 Jan 2009 à 14:46 Bulle
Avatar de Falco
Explorateur

Messages : 135
GCPoints : 20545
Je travaille sous MMF2, je pensais pouvoir faire un truc potable avec des coordonnées X et Y, mais apparemment, c'est bien plus complexe.

Sinon, je viens de trouver la technique qu'ont utilisés Lucas Arts pour SCUMM :


Citation :

Dans SCUMM, les parties accessibles d'une carte sont décrites par un graphe de formes géométriques adjacentes.

Des boîtes trapézoïdales définissent les endroits où les personnages peuvent marcher. Ces trapèzes doivent toujours être adjacents à au moins un autre trapèze. En utilisant suffisamment de trapèzes, il sera toujours possible de décrire toute la surface parcourable de la carte. Ensuite, une matrice NxN est définie où N est le nombre de trapèzes, et on la remplit en indiquant dans chaque case de la matrice quel est le prochain numéro de trapèze sur le chemin d'un trapèze à un autre. En ce qui concerne le chemin à l'intérieur d'un trapèze, il est évidemment direct. Le nombre de trapèzes étant souvent assez faible, ce mécanisme donne un moyen de calculer le chemin quasiment en temps constant.

Darktib Message lu Posté le 19 Jan 2009 à 16:01 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Cherche astar sur le net, c'est l'lgo le plus utilisé dans les jeux car il est tres performant. J'ai réalisé une bibliothèque pour darkBASIC qui fait ca (voir ma signature, ou la zone des projets, c'est IA::Astar) et tu peux facilement mettre moins d'une milliseconde pour faire cette recherche. Si MMF2 permet d'utiliser directement une dll tu devrrait pouvoir l'utiliser, sinon cherche un article de Patrick Lester sur A*, il est connu , assez traduit et tres fiable.

A noter que A* ne demande pas toujours une map quadrillée.
Zoglu Message lu Posté le 19 Jan 2009 à 18:44 Bulle
Avatar de Zoglu
Membre Avancé

Messages : 366
GCPoints : 22183
Il y a un objet Pathfinder dans MMF2, qui utilise l'algo A*, donc pas besoin de trop te fouler :wink:
Si tu ne l'as pas, tu la trouveras dans ce pack.
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0367 secondes