IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PureBasic Discussion :

Pathfinding coopératif Astar


Sujet :

PureBasic

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 24
    Points
    24
    Par défaut Pathfinding coopératif Astar
    Le pathfinding coopératif permet aux unités d'une même équipe de coopérer, comme cela se fait dans un RTS.
    Il n'est pas nécessaire de relancer le pathfinding A* puisqu'il s'agit en fait d'un A* en 3 dimension: X,Y et Temps.
    Ca donne une impression d'intelligence aux agents.



    Ajouter/Effacer un obstacles [clic Gauche]
    Sélectionner une unité [clic Gauche]
    Pathfind de l'unité vers un but [clic droit]
    Ajouter une unité [Espace]
    Supprimer l'unité sélectionnée [Suppr]
    Voici le lien pour télécharger le listing test.
    http://wordoxhelper.free.fr/Projet%20pathfinding.zip
    Le fichier à compiler est Main.

    Problèmes connus de ce test.
    1- Deadlock possible si on joue dans un couloir de 1 case de large (les unités se repoussent à droite, puis à gauche sans arrêt)
    2- Ne pas ajouter d'unité sur le chemin et pendant le déplacement d'une unité; à moins de relancer son pathfinding par clic droit.
    3- Ne pas envoyer d'unité dans un espace inaccessible.
    Merci de reporter tout autre bug.

    Voici le lien en anglais de l'article qui m'a inspiré: http://www0.cs.ucl.ac.uk/staff/D.Sil...h-AIWisdom.pdf
    Voici le lien en anglais de l'article qui m'a inspiré pour le HPA*: http://webdocs.cs.ualberta.ca/~jonat...apers/jogd.pdf

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    C'est Comtois qui m'avait branché sur la structure de tas et l'algo A* à l'époque.
    Il avait fait un programme intéressant là dessus...
    Donc je veux l'en remercier.

  3. #3
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    Salut

    Je viens de tester. Apparemment on ne peut sélectionner qu'une seule unité et pas un groupe ? En lisant ton message, je m'attendais à pouvoir sélectionner un groupe, et ensuite désigner un point à atteindre et le groupe coopèrent pour se déplacer ensemble au point désigné. C'est peut-être prévu, mais pas encore intégré dans ta démo ?
    2ème remarque, tu ne gères pas les obstacles en diagonales, par exemple ci dessous (une croix = obstacle, un rond = accès libre)
    123
    A xoo
    B oxo
    C oox
    Si tu es en B1 tu ne devrais pas pouvoir aller en A2 comme c'est le cas actuellement, à moins que ton jeu le tolère ?

    Sinon, c'est un bel exemple, bon courage pour la suite.
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    C'est sympa d'avoir testé et d'avoir le retour de l’œil d'un connaisseur, c'est le premier retour constructif que j'ai !

    Pour la sélection en groupe, je vais la rajouter tout de suite, ça ne devrait pas etre un problème. (juste à faire la sélection, l'algo s'occupe du reste)
    En fait, je ne l'ai pas intégré car le jeu qui se basera sur ce squelette sera en 2d isométrique (la sélection sera un peu plus compliquée.)
    Néanmoins si on souhaite que les unités seletionnées se regroupent toute seule en formation, ça va etre un peu plus de boulot ^^.
    D'ailleurs, l'affichage actuelle est très mauvais et lent, il faudrait que je remplace la grille par une liste chainée... Mais bon, puisque c'est en attendant une autre visu...

    Pour ce qui est de la diagonale entre 2 obstacles, c'est voulu et ça devrait rester ainsi pour mon futur jeu.(c'est à voir... Ca nécessiterai juste de réserver les emplacements latéraux lors de déplacements en diagonale)
    J'ai déja l'option des déplacements orthogonaux uniquement ou diagonaux aussi. (constante #Nodiagonal au début de Main)

    Je viens de finir l'intégration d'une abstraction aux déplacements. (en fait un HPA* à un seul niveau)
    Je découpe la carte en carrés virtuels, j'y fais des "portes" entre les obstacles sur les bords, je pré-calcule les distances entre elles. En cas de rajout d'obstacle, le calcul se refait
    localement.
    Ca permet de se déplacer sur de grandes distances avec un coup de recherche insignifiant, moyennant une légère perte de précision au milieu du parcours, précision qui sera atténuée en rajoutant des points intermédiaires. (et puis surtout s'il n'y a pas de chemin possible, ça explore la carte beaucoup plus rapidement !)



    J'optimise actuellement ma procédure tris par tas, qui est déja rapide, en assembleur, pour gagner encore, puisqu'elle est très sollicité.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 24
    Points
    24
    Par défaut Question
    J'ai modifié le code de l'archive pour avoir la sélection multiple.
    Les agents se rendent au point désigné et y forment un cercle/disque, en fait (la forme la plus simple à réaliser, mais je peux leurs assigner d'autres formes si besoin).
    Pour un déplacement en formation, ça nécessite une approche légèrement différente, il faut un seul pathfinding pour l'unité de tete, les autres se contentant de la suivre. C'est aisément réalisable, mais j'ai des points plus urgents sur lesquels avancer avant de m'attarder sur la spécificité des unités militaires.

  6. #6
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    Le FPS en prend un coup, avec moins de 10 unités en déplacement, il est tombé à 10.
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2007, 12h16
  2. Pathfinding A* Astar
    Par LEK dans le forum Intelligence artificielle
    Réponses: 8
    Dernier message: 01/06/2007, 11h33
  3. pathfinding en js
    Par arcanis dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/05/2007, 12h12
  4. pathfinding click and play
    Par youp_db dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 05/08/2006, 00h28
  5. Réponses: 8
    Dernier message: 12/04/2006, 01h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo