Anmelden

Vollständige Version anzeigen : Wegfindung


ghost
26.08.2006, 11:32
Hallo!

Ich stelle diese Frage mal hier in diesem Forum, da sie gut zum Thema Städtebau passt und weil es hier sicher ein paar Leute gibt die mir weiterhelfen können.

Also ich sitze gerade an der Programmierung eines Städtebau Spiels über die alten Maya Kulturen in Mittelamerika. Menüs und Editor sind schon fast fertig und alles läuft eigentlich sehr gut, wenn da dieses Ding Names Wegfindung nicht wäre. ;)

Wie in fast jedem CB Game muss man ja Straßen errichten auf denen Leute gehen können. Bei Leuten die zufällig gehen habe ich damit keine Probleme.

Mein Problem ist, wenn zum Beispiel ein Karrenschieber Ware X von A nach B bringen muss. Also zum Beispiel: Karrenschieber bringt Keramiken von Lagerhaus 88 nach Lagerhaus 75

Vor meinen mislungenen Theorien möchte ich noch sagen, dass ich mit einem Basic Dialekt, also mit einer Nicht-objektorientierten Sprache arbeite. Das bedeutet auch dass ich keine Klassen oder Klasseneigenschaften definieren kann. (Falls jemand C++, Ruby, ... Programmierer ist)

Theorie 1: (Gib den Karrenschiebern ein Gehirn!)
Der Karrenschieber nähert sich dem Ziel. Sobald eine Abzweigung kommt geht er in die in der er dem Ziel am nächsten kommt.
Das klingt gut, ist es aber nicht. Bei einer Stadt die aus einer einfachen Kreuzung besteht geht das noch aber nicht sobald sie wie auf dem folgenden Bild komplexer wird:
http://home.arcor.de/dggames/k1.JPG

Theorie 2: (Gib dem Karrenschieber ein etwas größeres Gehirn)
Der Karrenschieber probiert vor dem Losfahren veschiedene Wege "im Kopf" durch. Endet ein Weg in einer Sackgasse, so kehrt die Routine wieder zur letzten Abzweigung zurück.
Ein Bild sagt mehr als tausend Worte:
http://home.arcor.de/dggames/k2.JPG
(Außerdem würde die Performance extrem darunter leiden)

Theorie 3: (Lass das Haus denken)
Das Haus speichert die Koordinaten der Straßenteile mit denen es kolidiert. Wenn ein Karrenschieber nun eine Anfrage stellt, lässt das Haus seine verbundenen Straßenteile nach und nach die Straßenteile in Richtung Karrenschieber abfragen.
Warum das nicht geht sieht man auch am besten in einem Bild:
http://home.arcor.de/dggames/k3.JPG
(Auch hier wäre der Performanceverlust zu groß)


Ich stelle diese Frage abschichtlich in einem Forum in dem nicht viele Programmierer sind, da Leute die sich mit einer Programmiersprache nicht auskennen oft ganz andere und einfachere Ideen haben als der Progammierer selbst.

Falls eine der Theorien unverständlich ist kann ich sie gerne noch einmal im Detail erklähren. Es ist aus meiner Sicht aber klar, dass es entweder Probleme durch Performance, Kollisionsabfrage oder zu schlechte Abfrage mit diesen Theorien gibt.

Ich hoffe jemand hat eine zündende Idee. Bis es soweit ist lasse ich das Spiel ruhen, vielleicht fällt mir selber noch was ein. :)

Vielen Dank für jede Antwort,
ghost

hades
26.08.2006, 12:18
Hallo ghost

da ich zwischen durch in meiner Freizeit auch einwenig an einem Spiel programmiere habe ich mich auch schon damit befasst
schick mir doch per PN Deine Mailadresse, könnte Dir ein paar gute Erklärungen zum Thema Wegfindung schicken

Guss Hades

ghost
26.08.2006, 17:09
Vielen Dank, das mache ich gleich! :D

tobing
26.08.2006, 18:11
Sticjwort: A*-Algorithmus. Ein effizienter und sehr häufig verwendetes Verfahren zur Wegfindung, der sich auch für mehrere Units gleichzeitig verwenden lässt.

Einige Artikel dazu (und zu anderen Themen) gibt es hier: http://www-cs-students.stanford.edu/~amitp/gameprog.html

ghost
29.08.2006, 11:53
Vielen Dank @ hades und tobing
Da ich im Moment keinen funktionierenden Internetanschluss zuhause habe, kann ich mir die Sachen die ihr mir geschickt hab erst ansehen, wenn ich von daheim wieder ins Internet komme. Erstmal vielen Dank für die Hilfe!
@hades
Ich konnte die E-Mail die ich dir zurückgeschrieben habe deshalb auch noch nicht abschicken. :( Aber das C-Script PDF hat mich schon auf ein paar Ideen gebracht. Vielen Dank!

lg ghost