Salut,
tu fais simplement la même que ton A*, sauf que tu définis le poids des noeuds par rapport à la distance à la zone (ou, par approximation, la distance à son barycentre) et tu arrêtes ton A* dès que tu as trouvé un point dans la zone d'arrivée (au lieu du point ciblé spécifique).
Note que faire un A* sur chaque coordonnées peut très bien marcher, la problématique de performances ne se pose qu'à moitié. Ok, si ton bâtiment fais 10K cases, y'a sûrement plus rapide, mais tant que tu n'as pas fait simplement l'essai de perf, ce problème est probablement négligeable: un A* en JS fait par le client et simplement vérifié par le serveur [ie: le serveur regarde juste que le chemin est valide, et s'en fiche de savoir si c'était le plus court] a une durée hyper-négligeable pour des cartes de jeux comme cela. Donc x10, (parce que ta zone fait 10 cases) bof, ça ne changera rien.
[edit: histoire de m'appuyer sur qqc, https://briangrinstead.com/blog/astar-se...t-updated/ annonce 5-10ms/A* pour une grille 100x100, donc bon, même x10, tu restes raisonnable]
tu fais simplement la même que ton A*, sauf que tu définis le poids des noeuds par rapport à la distance à la zone (ou, par approximation, la distance à son barycentre) et tu arrêtes ton A* dès que tu as trouvé un point dans la zone d'arrivée (au lieu du point ciblé spécifique).
Note que faire un A* sur chaque coordonnées peut très bien marcher, la problématique de performances ne se pose qu'à moitié. Ok, si ton bâtiment fais 10K cases, y'a sûrement plus rapide, mais tant que tu n'as pas fait simplement l'essai de perf, ce problème est probablement négligeable: un A* en JS fait par le client et simplement vérifié par le serveur [ie: le serveur regarde juste que le chemin est valide, et s'en fiche de savoir si c'était le plus court] a une durée hyper-négligeable pour des cartes de jeux comme cela. Donc x10, (parce que ta zone fait 10 cases) bof, ça ne changera rien.
[edit: histoire de m'appuyer sur qqc, https://briangrinstead.com/blog/astar-se...t-updated/ annonce 5-10ms/A* pour une grille 100x100, donc bon, même x10, tu restes raisonnable]