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

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

1

16.05.2013, 23:02

Algorithmen für Straßen KI

Weiß jemand welche Algorithmen von Spielen verwendet werden für straßenbasiertes Pathfinding? Ich nehme mal an Dijkstras.
Was ich mich frage ist, wie kann man über die Relevanz von Straßen entscheiden, gibts da einen Algorithmus für? Bei mir wäre es für den PC nicht von Relevanz ob ich die ganze Stadt als Graph nehme
oder nicht, da sie klein ist, aber es interessiert mich trotzdem.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

16.05.2013, 23:29

Guck dir mal A* an.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

17.05.2013, 13:35

A* baut ja auf Dijkstra auf und erweitert diesen. Das schöne an Dijkstra ist aber, dass die Position vom Ziel nicht unbedingt bekannt sein muss. Stell dir vor du hast an jedem Knoten bestimmte Eigenschaften gespeichert. sagen wir einfach mal jeder Knoten ist ein Haus und hat die Eigenschaften der Farbe. Jetzt könntest du von einem bestimmten Haus aus das nächste gelbe Haus suchen. Das Haus selbst muss vorher nicht bekannt sein. Das kann schon schick sein. A* hat dann natürlich auch seien Vorteile. Allgemein solltest du mal nach Graphenalgorithmen suchen. Es gibt zum Beispiel auch den Algorithmus von Floyd und Warshall. Damit werden alle kürzesten Pfade zwischen allen Knotenpaaren in einem Graphen berechnet. So könnte man zum Beispiel alle Wege vorberechnen und speichern. Wenn man nun wirklich einen Weg benötigt muss man diesen nur noch nachgucken. Da kommt es natürlich auch wieder auf die Umstände an.
„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.“

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

4

18.05.2013, 14:04

Also ich hab eine einfach kleine Stadt und will halt immer zu Punkten finden.
Ich dachte mir ich berechne den nähesten Knoten und lasse das Fz dorthinfahren und von dort dann über ein RecastNavigationSystem zum Zielpunkt.

5

18.05.2013, 19:09

Wenn es Dir 'nur' darum geht einen möglichen Weg von A nach B zu 'finden',
hilft Dir vielleicht die erste Seite dieses Threads?!

Ansatz zur Wegfindung

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

6

18.05.2013, 20:40

Auch da kommt mein Link vor.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

7

19.05.2013, 01:35

Soviel zu den Straßen...
Aber angenommen ich habe eine Feuerwache, wäre es dann nicht sinnvoll die Anfahrt mit Dijkstras zu berechnen, da ja immer vom gleichen Start ausgegangen wird.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

19.05.2013, 02:01

Was du suchst ist der bereits genannte A* Algorithmus: http://en.wikipedia.org/wiki/A-star_algorithm ;)

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

9

19.05.2013, 07:59

Was du suchst ist der bereits genannte A* Algorithmus: http://en.wikipedia.org/wiki/A-star_algorithm ;)

Zweifach genannt. :P
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

19.05.2013, 13:49

Nein. Wenn du eine bestimmte Feuerwache suchst dann macht das mehr Sinn mit A* dran zu gehen. Wenn du aber 5 Feuerwachen in der Stadt hättest und du wolltest den Weg zur nächsten Feuerwache berechnen, dann würde sich Dijkstra anbieten. Du brichst in dem Fall ab, sobald irgendeine Feuerwache gefunden wurde. Diese ist dann die nächste Feuerwache. Und wenn deine Knoten auf dem Grafen nicht stark verteilt sind, dann musst du nicht erst zu dem Knoten fahren. Du nimmst den Weg von dir zum nächstgelegenen Knoten einfach mit in deine Pfadliste auf. Am Ende kannst du den Pfad smoothen. Du guckst quasi ob du Knoten im Pfad überspringen kannst und direkt zum nächstlegegenen Knoten Luftlinie fahren kannst. Das machst du solange wie du den Pfad verkürzen kannst. Dadurch entfallen teilweise hässliche Bewegungen im Pfad, wie zum Beispiel gerade beim ersten Knoten und dem dann weiteren Verlauf.
„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