Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dooku

unregistriert

11

31.07.2013, 16:42

Natürlich fallen da noch alle Knoten weg die außerhalb des Rasters liegen oder auf gleichartige fallen würden. Trotzdem ist allein diese Menge von Knoten (ohne Kanten) schlichtweg zu gigantisch....
Kommentare ?
Ja gigantisch viele. Und wenn du das mit Feldern machst, sind es sogar noch mehr. Da hast du dann immer 4 Moeglichkeiten, also ist der Baum dann 4^n. Es gibt nunmal ziemlich viele moegliche Wege, um nicht zu sagen unendlich...
Naja, abgesehen davon, dass man so das Raster der Spielewelt als Graph für A* verwenden kann. In meinem Fall, ist das ja nicht mehr möglich. Deminsprechend muss der Baum an Aufenthaltsmöglichkeiten ersteinmal erstellt werden. Oder liese sich das eventuell kombinieren, dh während dem Durchlauf von A* alle unbekannten Knoten erstmals instanzieren? So könnte man die Anzahl wahrscheinlich nochmal drücken. War das mit "beachte speziell den Hinweis auf A*" gemeint?

Dieses Paper hier sieht sehr interessant aus:

http://www.cs.cmu.edu/~motionplanning/re…kevehicle-1.pdf



Da wird eigentlich genau das beschrieben.
Das klingt vielversprechend !


Gruß Dooku

PS:


Zitat von »Dooku«

Kommentare ? :D


Lies vollständig, speziell den Hinweis auf A*, und probiere es aus, bevor Du lästerst.
Ich hab mich über niemanden lustig gemacht. Interpretiere den Smiley eher in Richtung Skepsis an meinem eigenen Kommentar, denn ich dennoch nach bestem Wissen geschrieben hab.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

12

31.07.2013, 17:08

Achso, dann hatte ich Dich missverstanden. Wie gesagt: A* ist eine gängige Priorisierungsheuristik, die auch in diesem Fall gute Dienste leisten dürfte, aber natürlich auch bei komplexen Umgebungen degenerieren kann. Es dürfte bei der Fahrzeugsteuerung aber umso kniffliger sein, Totpunkte und schon besuchte Zustände zu erkennen. Sonst verrennt sich die Heuristik z.B. in einer Sackgasse in die ziel-naheste Ecke und betrachtet dort bis in alle Ewigkeit Kleinstmanöver hin und her.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

13

31.07.2013, 19:05

Sonst verrennt sich die Heuristik z.B. in einer Sackgasse in die ziel-naheste Ecke und betrachtet dort bis in alle Ewigkeit Kleinstmanöver hin und her.
Nein, das tut sie nicht. A* betrachtet immer den Knoten, bei dem die Summe aus bisherigem Weg + geschaetzter Restweg minimal ist. Das heisst nach einer endlichen Zahl von "Kleinstmanöver" ist der dort bisher zurueckgelegte Weg trotzdem so lang, das der Algorithmus dann bei einem naeher zum Start gelegenen Knoten abbiegt.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

14

01.08.2013, 16:49

Würde es nicht auch einfach reichen mit Navigation Meshes zu arbeiten? Dann guckst du bei jeder Bewegung, dass du auf dem Navigation Mesh bleibst. Das kommt natürlich immer ein wenig auf die Umgebung selbst an, sollte damit aber doch eigentlich recht gut machbar sein.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

15

01.08.2013, 17:17

Was genau wuerde das gegenueber seinem Grid helfen? Er koennte ja deiner Logik zu Folge auch einfach bei jeder Bewegung schauen, dass er auf den begehbaren Gridfeldern bleibt.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

16

01.08.2013, 17:40

Gridfelder sind aber meistens kleiner als einzelne Polygone vom Navmesh. Man müsste also nicht nur das aktuelle Polygon checken sondern die umliegenden auch. Da ich bei einem Navigationmesh je nach Bauart der Karte eher wenige Große Polygone besitze dürfte hier die Komplexität geringer sein. Einfach weil eine Wendeaktion bei einem Grid vermutlich über viel mehr Polygone verlaufen würde. Wie gesagt hängt von der Umgebung ab und ob es viel bringt bin ich mir nicht sicher.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

17

01.08.2013, 17:51

Welche "Komplexitaet" meinst du denn jetzt? Ich kann mir keine Definition von Komplexitaet vorstellen, wo ein Navmesh "einfacher" als ein Grid sein soll.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

18

01.08.2013, 17:58

Mir geht es darum, dass es einfacher ist zu prüfen ob der Spieler bei einer Aktion (Laufen, Kurve gehen, Fahrzeug wenden, ...) in wenigen Polygonen oder in vielen bleibt. Einfach weil ich behaupte, dass man bei einem NavMesh die Polygone so verteilen kann (wenn es die Welt denn zulässt), dass man mit wenigen Großen Polygonen auskommt. Ich bleibe also bei so einer Aktion wahrscheinlicher in meinem großen Polygon und es reicht hiermit auf Kollision zu prüfen. Bei einem Raster passiert es schneller, dass ich während so einer Aktion mehrere Felder passiere. So muss ich mit recht vielen Feldern testen. Wie ich bereits gesagt habe bin ich mir über den Vorteil den man dadurch erhalten kann selbst noch nicht ganz bewusst, ich glaube jedoch dass es einen Performancevorteil geben sollte (bei geeigneter Weltgeometrie).
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

19

01.08.2013, 19:12

Mir geht es darum, dass es einfacher ist zu prüfen ob der Spieler bei einer Aktion (Laufen, Kurve gehen, Fahrzeug wenden, ...) in wenigen Polygonen oder in vielen bleibt.
Was genau meinst du da mit "einfacher ist zu prüfen"?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

20

01.08.2013, 20:29

Ach TGGC das wird mir hier zu blöd. Ich bin mir ziemlich sicher dass du weißt was ich meine. Ich habe behauptet dass es weniger komplex ist, was in meinem Fall bedeuten soll, dass es einfacher zu berechnen sein würde. Jetzt kommt es natürlich auf die Polygone vom Navmesh an und wie komplex (Anzahl Vertizes) sie sind. Um das mögliche Missverständnis gleich aus dem Weg zu räumen, einfacher zu berechnen bedeutet nicht weniger Codezeilen oder was weiß ich, sondern schneller und somit einfacher für einen Computer zu berechnen. Wie gesagt war das einfach eine fixe Behauptung. Im Endeffekt macht es vermutlich doch eher einen untergeordneten Unterschied weshalb wir hier eigentlich auch nicht weiter drauf rum reiten müssen. Dem TE wirds vermutlich am Ende nicht helfen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige