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

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

1

26.02.2007, 16:19

3D Wegfindung

Hi, ich will für meine NSCs einen Wegfinde Algo entwickeln. Ich kenne A*, nur leider kann man den so direkt für mein Problem nicht anwenden wir mir scheint. Ich habe ein Level (im Grunde eine Gruppe von Meshes) sowie bewegliche Objekte, die bei der Wegfindung möglichst berücksichtigt werden sollten. Die Figuren sollen von einem beliebigen Startpunkt auf der Map zu einem beliebigen Zielpunkt finden und sie können natürlich nicht fliegen (wenn sie es könnten, würde ich A* ganz leicht anwenden können), dh sie sollen immer in Kontakt zu den Polys der Map sein und natürlich keine Polys betreten können, die einen gewissen Neigungsgrad übersteigen.
Viele Spiele verwenden für solche Fälle einfach Wegpunkte, was ich auch machen könnte, aber nach Möglichkeit gerne vermeiden würde.

Hat jemand einen Ansatz für dieses Problem? Gibt es ohne Wegpunkte überhaupt eine Lösung die in annehmbarer Zeit berechenbar ist und einigermaßen vernünftige Ergebnisse liefert? Vielleicht hat ja jemand schonmal soetwas implementiert.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

26.02.2007, 16:26

Du benutzt nicht zufällig für das Level (statischer Teil) einen BSP?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

26.02.2007, 16:28

nein, nur einen einzigen OgreMesh, der aus mehreren Submeshes besteht, was ich auch wenn möglich gerne beibehalten würde weil es sehr leicht zu handhaben ist.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

26.02.2007, 16:33

warum kannst du A* nicht anwenden?

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

5

26.02.2007, 16:38

Ich dachte jetzt weil erstmal A* voraussetzen würde, dass ich dafür die Map mit allen Objekten als zusammenhängendes Modell bräuchte, oder wie mache ich sonst dem Algo klar, dass ein Dreieck des einen Modells zur Zeit ein bestimmtes Dreieck eines anderen Modells berührt, und das dann vermutlich in tausendfacher Ausführung für alle Dreiecke aller Modelle die im Bereich der Wegfindung liegen? Es soll ja möglichst mit mehr als 1 FPS laufen ;)

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

6

26.02.2007, 16:38

Und wie wäre es, wenn du die Map praktisch in mehrere 2D-Layer einteilen, und die verbindungsstücke zwischen den Layern (zB Treppen oder Aufzüge) separat markieren würdest? Dann könntest du den A* Algo einfach ein bisschen modifizieren, und die sache müsste laufen!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

26.02.2007, 16:39

Ist ungünstig weil ich dann wieder die Modellierung des Models stark begrenzen müsste, zB Terrain wäre dabei glaub ich nicht möglich..

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

8

26.02.2007, 16:41

Gerade Terrain würde doch einfach sein... Da liegt frisch alles auf einem Layer. Das einzige was du tun müsstes, ist im Modell jene Stücke die auf einer anderen Ebene führen zu markieren. Dann müsstest du die Karten für A* sogar automatisch erstellen lassen können...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

9

26.02.2007, 16:52

Hmm ich überlege gerade.. dann wäre es ja vielleicht sogar möglich es ohne Ebenen zu machen, aber eben die Verbindungen zwischen den einzelnen Meshes irgendwie zu markieren, so dass er weiß wenn er auf einem Übergangsdreieck des einen Modells angekommen ist er auf dem zugehörigen Übergangsdreieck des anderen Modells weitersuchen kann. Zumindest für den statischen Teil der Map müsste das ja zu Programmstart recht einfach einmalig berechenbar sein. Und wie ich das dann mit den beweglichen Objekten mache kann ich ja dann immer noch schauen. Da die NSCs ja auch über physikalische Kräfte verfügen würden sie die evtl einfach automatisch beiseite schieben, oder man macht es wie bei einigen Spielen und schaltet dafür einfach die Kollision aus.. Allerdings könnte man dann so erstmal keine Brücken für NSCs aus Objekten bauen, aber das wäre nicht das Schlimmste. Danke auf jeden Fall.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

10

26.02.2007, 18:13

Jeder Algorithmus muss ja irgendwie wissen, ob er von Poly A (auf einem Submesh) zu Poly B schreiten kann. Insofern kommst Du doch um irgend etwas wie Kanten, die auf die Nachbarkante / Poly im anderen Submesh zeigen nicht drum rum, oder sehe ich das völlig falsch?
"Games are algorithmic entertainment."

Werbeanzeige