Pathfinding trop gourmand ?

Bonjour,
J’utilise l’automatisme pathfinding pour créer mes IAs (j’en ai 20 sur la scènes), mais avec ces évènements.

j’ai donc un freeze de1809ms lorsque j’exécute la fonction moveto.
N’existe t-il pas un moyen d’optimiser ?
Merci d’avance. :slight_smile:

Salut,

Ce genre d’algo de pathfinding est très gourmand et il y a peu de moyen de l’optimiser.
Le seul moyen de fluidifier serait d’utiliser un autre algorithme.

Bonjour,
Le Pathfinding fait beaucoup de calculs pour arriver à un résultat très simple… Nous humains savons traverser des couloirs sans faire de calcul. Alors que la machine va calculer son chemin tout au long de son déplacement… Tenez justement… Ne serait-il pas possible que l’automatisme fasse tous les calculs avant le déplacement (s’il ne le fait pas déjà) ?
@+
sototo

L’algo calcule le trajet et fait le déplacement ensuite. :wink:
Cela provoque le freeze lors de l’appel de l’action permettant de diriger l’objet, mais dès que c’est calculé, l’objet bouge jusqu’à sa destination sans problème. :wink:

Bonjour,

Je ne comprends pas très bien pourquoi cela freeze comme tu dis !

Ta fonction n’est pourtant exécutée qu’une seule fois toutes les 7 secondes, non ?

Ou alors il y a autre chose…

Et si tu remontais les actions du 2ème pavé “Pas de conditions” juste au dessus ? (après donc l’action de MAZ de ton chronomètre)

A+

Et bien, ça doit freezer toutes les 7 secondes car le jeu calcule le chemin à parcourir. :wink:

Oui, c’est comme le dit Victor.
Je sais très bien ce qui se passe.
Le jeu freeze toutes les 7 secondes car il calcule le chemin de 20 objets différents. Autrement ça doit aller pour quatre ou cinq :stuck_out_tongue:
L’astuce est donc de ne l’utiliser que quelques fois pour un petit groupe d’objets en même temps. J’ai quelques idées là dessus, si tout ce que j’ai déjà tenté ces derniers jours n’a pas marché (oui parce que ça fait un moment que j’ai fait des tests, j’ai posté pour voir si on avait une autre solution potable, j’ai juste eu droit à la solution coupe gorge périodique et la solution coupe gorge constante).

Genre, toute les seconde, faire le calcul pour 3-4 objets.

Oui, je viens d’essayer, mais malheureusement.
En mettant un évènement répéter 2 fois, prendre en compte un objet IAs au hasard puis exécuter les actions de cela. J’ai toujours un freeze de 530ms :frowning:
C’est juste énorme alors que je n’ai que deux exécutions de l’évènement. C’est la condition prendre un objet au hasard qui fait cet effet ?

Sur ta feuille oui mais dans GD… pour faire ça il y a un bon petit système

C’est assez énorme en effet. Quelle est la taille de ta carte sur laquelle tu lance le pathfinding ?
Tu peux tenter de modifier la taille des cases, ou lancer le pathfinding sur des chemins plus courts. ( Voir opérer à deux échelles : Un pathfinding avec des cases grosses pour déterminer globalement le prochain point à atteindre, et un pathdinding plus précis pour déplacer le personnage entre les obstacles entre sa position et la position du prochain point à atteindre )

la taille de la map fait appriori 1250px de large et 2000px de haut (je n’envoie aucun itinéraire autour de ce cadre)(et d’ailleurs c’est calculé automatiquement ? je n’ai pas trouvé de fonctions ou quoique ce soit d’autre pour ça) et les cellule du tableau font 10*10 (px ?). Mais effectivement j’avais oublié qu’on pouvais mettre plusieurs fois le même automatisme, seulement je ne vois pas comment optimiser cela sur un terrain comme ça :
map.jpg
(j’ai volontairement fait une carte “labyrinthique” pour tester les IAs)

J’avais effectivement essayé des cases plus grosse, mais les IAs ne sont alors pas capables de passer dans les passages trop étroits, bien que cela convienne globalement. Comment ferais-je pour déterminer quel automatisme utiliser au bon moment ?

La scène est relativement petite en plus… L’automatisme est trop gourmand alors.

L’image est réduite, elle fait en réalité 12502000, ce qui fait, pour des cellules de 1010, 125*200=25000 cellules.

Dans tous les cas, je me demande comment les développeurs d’age of empire I (oui le un où les unités ne se déplaçaient pas de manière groupé), pour gérer sans rams sur des PC plutôt vieux jusqu’à 400 unités en même temps ! Bon après le pathfinding doit pas être codé pareil que dans GD. Parce que là en gros, ça veut dire que la refonte de war of frite world, ne peut pas utiliser le pathfinding et que je dois réutilisé le vieux système de chemin qui rend les IAs prévisibles et peu coriaces (et surtout les rend incapable de se déplacer sur une map de joueur).