Je pense que c'est possible de faire du path finding avec navier-stockes. Si tu mets des conditions de débit positif et négatif respectivement au point de départ et d'arrivée de ton dépassement, les ligne de courant vont "naturellement" s'établir entre les deux, sur le chemin qui engendrera le moins de perte de charge (comme en vrai avec de l'eau dans ta baignoire).
J'ai pas d'argument qui prouve que ce sera le chemin optimum, mais je vois pas pourquoi ça serait pas le cas.
Je trouve ça plutôt élégant comme utilisation de N-S.
Reste le problème de la résolution, vu qu'on ne sait pas le faire de manière exacte, il faut discrétisé le terrain et tout mais dans le cas d'un jeu je pense que ça améliore les performances et qu'en plus on a pas besoin de beaucoup de précision. D'autant que dans un ordinateur tout est discrétisé
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
On peut croire que le pathfinding est un problème simple si on ouvre un bouquin de théorie des graphes, justement.
Mais quand on rajoute le steering et le flocking, on obtient un "hard problem" bien ouvert
La solution mécaflu de gpg est créative pour gérer des flux de déplacements d'unité, je materai ça à l'occase, tiens.
Sleeping all day, sitting up all night
Poncing fags that's all right
We're on the dole and we're proud of it
We're ready for 5 More Years
Remettre en question le travail des anciens est salvateur certes. Mais l'ignorer, sous pretexte de ne pas se polluer l'esprit, est juste... Arrogant. Einstein ne devait sûrement pas ignorer les bases de la physique classique quand il a pondu la théorie de la relativité
Merci pour vos réponses, qui sont très intéressantes.
Au niveau de la réinvention de la roue, je tiens quand même à préciser que les scientifiques passent une bonne partie de leur temps à vérifier et à préciser les résultats des autres. Et donc à refabriquer cette roue, qu'ils ont vu dans la publication scientifique, chez eux.
(Voir à ce propos le Science & Vie qui parlait des arnaques scientifiques, beaucoup plus courantes qu'on peut le croire, où des chercheurs créent des données et résultats sous la pression du stress et des attentes de leurs supérieurs.)
Ensuite, il faut bien vous rendre compte que je n'ai sans doute pas encore le niveau pour me mettre à la pointe de la recherche, en synthétisant tous les travaux précédents, tout simplement parce que je sors à peine de Terminale et que j'entre seulement en école d'ingénieurs dans quelques jours.
Ceci n'était qu'une simple distraction de vacances, un jeu que j'avais envie de faire vite-fait et moi-même.
En fait, il y a beaucoup de choses que je n'ai pas dites, pour alléger l'article. Mais sache que lorsque le joueur disparaît du champ de vision du computer, celui-ci tente uniquement de rejoindre sa dernière position connue. Il ne sait pas où va le joueur ensuite.
Mais s'il entend un bruit, provenant de l'autre côté d'un obstacle, il ira voir ce qu'il se passe dans les environs (il y a introduction d'une approximation, fonction inverse de l'intensité du bruit entendu).
Dans tous les cas il ne sait jamais la position du joueur avant de l'avoir vu.
- ŁPŢЋэҚıΊΊεґ, pour vous occire - http://pierre.parreaux.free.fr/
Salut,
Il est bien moins gourmand de placer des waypoints au moment de la conception (comme sur les maps d'unreal), ca évite toute la phase de calcul lourd puisque l'IA dans ce cas ce limitera a passer par le moins de point possible entre A et B
- ŁPŢЋэҚıΊΊεґ, pour vous occire - http://pierre.parreaux.free.fr/
J'ai lu un peu de tout dans ce thread au niveau intervention, et je rejoins les gens qui t'enjoignent a te documenter sur les travaux effectues sur les parcours de graphes. C'est un probleme "classique" d'algorithmique, qui a donne naissance au Djikstra et au A* (et a des cousins comme les BFS et DFS).
Vouloir reflechir par soi meme est louable, et comme dit precedemment, ignorer les decennies de recherche sur le sujet est au mieux idiot, au pire une enorme preuve d'orgueil. Mais rien de mieux pour guerir ca que de se rendre compte du temps perdu a imaginer une solution non optimale quand il existe des solutions meilleures, plus simples (ce qui devrait t'arriver tout le temps si tu t'echines a vouloir reinventer la roue).
2 petits liens au passage qui m'ont bien servi quand j'etais a plancher sur un exercice de pathfind/IA : un article de Gamasutra sur le pathfind (assez court mais tres bien ecrit et clair); et la page du celebre Amit, une espece de reference sur le sujet de l'internet, qui a le merite aussi bien d'aborder les algorithmes de parcours que les methodes de representation de l'espace et les problemes de partitionnement de celui ci.
Cela n'enleve rien au travail effectue, et j'avoue avoir beaucoup aime ton jeu. L'ambiance y est excellente, et on s'y croirait.
Ce n'est pas du temps perdu. Je le répète, ce n'était qu'à but ludique, et je n'avais pas la tête à aller fouiner dans la de la documentation pour essayer de reprendre des systèmes que je sais par ailleurs pertinemment être meilleurs.
Mon système ne m'a d'ailleurs pris que 4 ou 5 jours (réflexion + implémentation) sur le mois que m'a pris le jeu (à peu près). <= Ces temps sont des temps en période de vacances, c'est à dire que je me suis surtout détendu et j'ai fait autre chose que de la prog.
Merci pour les liens.
- ŁPŢЋэҚıΊΊεґ, pour vous occire - http://pierre.parreaux.free.fr/
A propos de réinventer la roue bien, pas bien, je pense que du moment qu'on comprend ce qu'on écrit, ça n'a finalement pas beaucoup d'importance.
Trouver la solution soi-même peut être intellectuellement très stimulant, mais je pense que globalement on gagne du temps et on apprend aussi beaucoup en réimplémentant une solution éprouvée.
Méfiez-vous juste du code que vous ne comprenez pas.
(Pour info, c'est pas applicable pour du flash je pense)
T'as l'algo des fourmis, hyper simple mais qui nécessite un langage compilé (ie. Performant) :
Tu définies ta carte en matrices.
Tu codes une routine toute conne (mais qui doit être hyper performante genre en C voir assembleur) :
- Chercher la case adjacente aléatoirement en préférent les cases déjà marquées
- Marquer dans la matrice les cases sur lesquelles tu es passé.
- S'arrêter dés que t'arrive au point B (ou relancer la fourmi du point A)
Lancer les fourmis du point A (ie. Appeler un bon nombre de fois ta routine)
Qu'est ce qui va se passer :
- Initialement toute ta matrice est à 0, les premières fourmis vont partir au hasard.
- Les premières fourmis qui arrivent sont celles qui ont trouvées un chemin plus rapide que leur soeurs,
- Au prochain passage les fourmis auront tendances à préfèrer le chemin déjà marqué par les plus rapides.
Au bout d'un certain temps, tu tues toutes les fourmis (oui c'est sauvage), et tu suits le chemin le plus marqué pas forcément optimal mais plutôt rapide.
Les avantages sont multiples:
- Tu peux fixer un temps maximal pour trouver un chemin, (plus tu laises les fourmis se baladée, plus se sera précis, mais rapidement tu as une tendance plutôt bonne).
- Tu peux peux "pondérer" tes chemins (par ex. Dans l'eau ton gus marche moins vite, donc tu marques moins fort la case ou ta fourmi passe, en ville c'est limité en 50, sur le périph. 130...etc).
Inconvénients:
- Faut un langage performant sinon c'est trèèès long,
- Faut un peu bricoler pour trouver le bon nombre de fourmis, et l'algo pseudo aléatoire.
C'est ce genre d'algo (avec pas mal de mise en cache), qui permet à Mappy et autres google map de trouver des chemins instantanément à travers la France.
ça sert aussi dans les réseaux pour trouver quels routeurs utiliser.
C'est ce que font les fourmis dans la nature pour trouver et ramener de la bouffe :
- Toutes partent au hasard en laissant une trace de phéromone,
- Dés qu'une fourmi trouve de la bouffe, elle la ramène à la maison, en suivant le chemin qui sent le plus les phéromones.
T'as qu'a observer les fourmis elle se suivent très rapidement vers le plus court chemin pour la bouffe.
Edit un lien : http://fr.wikipedia.org/wiki/Algorit...ourmis#Origine
Keyboard error or no keyboard present
Press F1 to continue, or DEL to enter setup
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Tiens c'est marrant çe truc
Je connaissais ce fonctionnement chez les fourmis mais je savais pas que ça avait été réutilisé en informatique...
Pour le Flash, tout dépend à quelle fréquence l'algo est appelé. Si c'est en continu à chaque frame c'est pas possible, mais si c'est une fois de temps en temps pourquoi pas, je pense que ça peut se faire, on pourrait d'ailleurs étaler les calculs sur plusieurs frames : ça ferait que le perso précise son chemin au fur et à mesure qu'il avance.
Dans un jeu comme le mien, je pense que ça pourrait être envisageable, car le pathfinding n'est pas invoqué en continu (même s'il y a poursuite d'objets dynamiques : C'est soit il le voit et il va tout droit dessus ; soit il le voit pas et il rejoint sa dernière position connue).
Mais la solution me paraît pas du tout optimale. Ca marcherait mieux pour des labyrinthes ou des trucs comme ça.
Je vais réécrire mon pathfinding en utilisant Dijkatruc, en y mélangeant mes algos détections d'obstacles, et en faisant du wayPointing automatique en reprenant mon idée des coins caractéristiques des blocs. Ca devrait super bien marcher.
Dernière modification par LPTheKiller ; 07/09/2009 à 22h51.
- ŁPŢЋэҚıΊΊεґ, pour vous occire - http://pierre.parreaux.free.fr/
Faut lancer beaucoup de fourmis alors.Envoyé par fofo
Si une majorité part du mauvais coté au début, le chemin le "plus marqué" fera systématiquement un détour.
Non ?
Ça fait beaucoup de calculs quand tu veux déplacer une seule unité à l’autre bout de la carte.
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
- ŁPŢЋэҚıΊΊεґ, pour vous occire - http://pierre.parreaux.free.fr/
Je m'étais déjà amusé avec l'algo des fourmis, mais c'est effectivement très lourd. Et si le nombre d'itération n'est pas infini, on n'est pas assuré d'être sur le chemin optimal. Du coup, on obtient souvent de bon chemin, mais à l'allure un peu erratique.
Avec une implémentation sur le GPU ça doit le faire, ça à l'air de bien se paralléliser.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Ca me rappelle l'époque où je voulais implémenter l'algo de djikstra juste avec ce que j'avais appris à faire en terminale ES spé maths, sans wikipedia ou autre aide... Ya pas à dire, dessiner ça rend les choses plus simples ! Et je suis pratiquement certain que tu prends le temps de faire de la pédagogie parce que ça t'aides toi à clarifier ton problème !
Quand on peut expliquer sans ambiguité sa problematique à un novice, on rend le probleme bien plus clair pour soi même !
Conan, qui a t'il de mieux, dans la vie ? Ecraser ses ennemis ; Les voir mourrir devant soi ; Et écouter les lamentations de leurs femmes.