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
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