-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pathfinder through maps #18
Comments
BOURRIN |
... Très drole |
Hello, j'avais commencé à coder un algo de PathFinding au niveau du monde. In fine, on arrive à quelque chose d'assez proche de ce que tu proposes, même si j'ai pris le problème dans l'autre sens. En effet, je pars non pas du principe que toutes les cellules de toutes les maps sont mises à plat, car ça pose d'emblée pas mal de problèmes (perfs, mémoire, affichage...). Donc je pars du principe que je fais un PathFinding au niveau des maps. En pratique, cela signifie que chaque cellule est associée à un identifiant de map et un identifiant de submap. A chaque submap est associée la liste des submaps voisines (accessibles directement). Les portails sont assez simple à prendre en compte dans le PathFinding en ajoutant les voisinages correspondant (avec éventuellement une pénalité dans l'algo A* associée à l'usage des portails payants). Ce qui est plus délicat, c'est d'utiliser effectivement le portail une fois dans la bonne map. Dans mon proto, j'effectuais tous les calculs associés à la détection des submaps et la détermination des voisins au chargement initial des cartes. Ca rend ce chargement un peu long (mais ça reste acceptable), donc on peut envisager de stocker ces infos pour ne pas avoir à les recalculer à chaque fois. Mais du coup l'usage d'une BdD devient souhaitable, ou alors passer par un format propriétaire efficace pour permettre un chargement rapide. |
C'est exactement l'idée que j'ai eu et qu'on a travaillé avec Tidus (seulement j'appelle ça des Regions et pas des submap, mais submap est définitivement mieux :p) Pour les portails j'ai pas vraiment planché dessus. |
Now named "Maptraveling" |
Je voulais demander où on se situait au niveau du dev du pathfinder. En regardant le code j'ai trouvé des méthodes pour trouver une path entre deux maps, deux cells mais pas encore de méthodes prenant en charge le déplacement d'un personnage d'une map à l'autre. Est ce un oubli de ma part, ou elle n'est pas encore implémentée? |
Ce sera implémentée prochainement |
Voilà le prochain challenge, réaliser un algorithme capable de trouver le chemin du bot pour aller d'une map à une autre et cela peut importe les moyens à emprunter.
C'est un algorithme de taille qui doit prendre en compte un tas de possibilités
Voici les critères :
J'ai quelques idées pour le réaliser.
Tout d'abord il faudrait faire une sorte de map géante qui regrouperait les 5 600 000 cellules avec leur propriété (ça fait un truc assez lourd :p). Bien entendu on ne peut pas le charger directement dans le bot, ce serait beaucoup trop long et inutile.
L'idée serait alors de faire un outil qui calculerai des tas de chemins possibles qui relieraient les différentes subareas à l'aide du mappage géant (environ 1000 chemins). Avec ces chemins le bot pourrait passer d'une subarea à une autre en suivant le chemin. Ce qui sera plus compliqué à gérer ce sera les interactives objects et les cell triggers (quoique ce dernier peut être +/- deviné)
Reste à voir comment se déplacer dans les subareas. Et bien c'est beaucoup plus simple, on charge les maps de la subarea (il y a en a rarement plus d'une vingtaine) quand on change de subarea et on fait comme pour le mappage géant mais à plus petite échelle. Cela nous fait un pathfinding dans environ 10 000 cellules ce qui avec un pathfinding optimisé est honorable.
Maintenant ce qui est plus compliqué à gérer ce sont les "raccourcis", càd les zaaps, les potions, ...
Mais voilà en tout cas l'idée de départ.
The text was updated successfully, but these errors were encountered: