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

Intelligence artificielle Discussion :

[Pathfinding] Déplacement d'unités optimisé


Sujet :

Intelligence artificielle

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Points : 23
    Points
    23
    Par défaut [Pathfinding] Déplacement d'unités optimisé
    Bonsoir,

    J'essae de développer actuellement un RTS pour une console de jeux, la SONY PSP. Je programme entièrement en utilisant le language de script LUA et un style pseudo orienté objet en utilisant les métatables.

    Pour le moment, je suis assez satisfait du résultat. J'ai un générateur de terrain et de ressources correct, scrolling de map, affichage et gestion d'une mini carte, déplacement d'unités avec l'algorithme de pathfinding A-star.

    Seulement voilà..C'est là que je galère un peu.
    Pour le moment, lorsqu'on déplace une unité, pas de souci.Quand il s'agit dun groupe d'unités, j'ai concu le code de sorte que dans ce cas, les unités soient listées dans une queue, etr le chemin de chaque unité est calculé l'un après l'autre, afin d'éviter les lags et freezes..car la PSP dispose de peu de ressources (333 Mhz maxi pour le CPU, 32 Mo de ram dispo quand on travaille avec le LuaPlayer).

    Les unités évitent donc les obstacles (ressources, arbres, batiments)..mais elle ne s'évitent pas elles même..une unité peut donc traverser une autre qui est sur son chemin.

    Je pense qu'il est possible d'améliorer cela, mais comment ? Je souhaiterais notamment pour le déplacement groupé, un seul chemin soit calculé, et que toutes les unités suivent ce chemin. Quel algorithme appliquer ? et comment faire en sorte qu'un unité soit un obstacle permanent pour une autre, sans générer pour autant trop de calculs...?

    Merci par avance..S'il est nécessaire de détailler comment j'ai implémenter mon A-star, faites le moi savoir.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Hi, pour l’entre croisement des unités il suffit de les considérer comme étant des obstacles une méthode update qui considère l’état des lieux, je veux dire par là que le chemin pour chaque unité est défini, et à supposé que dans un état « i » l’unité « u1 » a un voisinage « V » pour toutes unité « u appartenant a V » qui s’entrecroiserait avec l’unité « u1 » à l’état « i+1 » tu appliques un petit algorithme de circonstance le choix ici est très grand.

    Pour les chemins, quand tu sélectionne un ensemble d’unités il suffit de calculer le chemin juste pour l’une d’elles, ensuite tu déplace non pas unité par unité mais le bloc en entier, en gardant les distance (la symétrie).

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Points : 23
    Points
    23
    Par défaut
    Bonsoir et merci pour ce début de réponse...
    hélas, je n'ai pas très bien compris la première partie de la réponse...
    Ou alors ce que j'en ai compris ne me conviens pas trop, ça demande un peu trop de calculs...

    J'ai une approche de solution, qu'en pensez vous ?
    L'idée, c'est de considérer qu'une unité parfaitement immobile est un obstacle. Dès qu'elle se met en mouvement, elle n'est est plus un.
    Ce qui est intéréssant, ç'est que cela permet en quelques itérations de mettre à jour la table de collisions suivant que l'on prend en considération QUE les unités immobiles...

    Pour le déplacement groupé, ce que tu me proposes est assez général....En fait, il va y avoir un problème lors des traversés des zones étroites..Si la largeur du bataillon est supérieur au passage offert, alors ça risque de cailler...

    De meilleures idées ? ou des liens ? merci!

Discussions similaires

  1. Organisation du code / déplacement d'unités
    Par Invité dans le forum SFML
    Réponses: 8
    Dernier message: 15/07/2013, 17h20
  2. Déplacement "automatique" du curseur
    Par Amenofis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/01/2003, 19h57
  3. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 12h30
  4. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/11/2002, 00h56
  5. Connaitre l'unitée à ajouter dans USES
    Par DelphiCool dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2002, 14h48

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