Revue de sujet
Zoglu Posté le 19 Jan 2009 à 18:44
Avatar de Zoglu
Messages : 366
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.
Darktib Posté le 19 Jan 2009 à 16:01
Avatar de Darktib
Messages : 4017
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.
Falco Posté le 19 Jan 2009 à 14:46
Avatar de Falco
Messages : 135
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.

Mod Posté le 19 Jan 2009 à 14:35
Avatar de Mod
Messages : 4954
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 Posté le 19 Jan 2009 à 14:19
Avatar de Falco
Messages : 135
Hum, d'accord, et la plus simple, c'est laquelle ? :p
Du moins, la plus facile à mettre en place.

Merci.
Gulix Posté le 19 Jan 2009 à 14:16
Avatar de Gulix
Messages : 184
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.
Falco Posté le 19 Jan 2009 à 14:04
Avatar de Falco
Messages : 135
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 :)


Nouveau message

Large sourire Sourire Veut Langue Absurde Choqué Clin d'oeil Innocent Cool Fier rougissant confus Neutre Etonné Content Triste Douloureux Pathétique Etrange Agacé Colère Tordu Flèche Question Exclamation Rigole Gêné Amoureux Oui No Fou Pleure Pleure de joie Mignon Coup de coeur Hystérique Blasé Ninja Pouffe Stun Suspicieux Incompréhensible
Gras
Italique
Souligné
Barré
Gauche
Centré
Droite
Justifié
Flottant à gauche
Flottant à droite
Lien
Citation
Puce
Spoiler
Wiki
Image
Flash
Youtube


Prévisualisation
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.028 secondes