Pfade, bzw. Wege wie bei Siedler

  • GM 8
  • Pfade, bzw. Wege wie bei Siedler

    Hallo erstmal!

    Ich beschäftige mich derzeit sehr gern mit die Siedler 7 und habe mir gedacht so ein System mal mit dem GM zu schreiben. Nun bleib ich hängen. Ich habe ein Object (obj_ecke). Dieses soll mal immer die Verknüpfung zu den anderen Objecten zeigen (obj_weg). Nun erstell ich den Weg, dies ist noch nicht so schwer und das hab ich auch noch geschaft (Siehe Anhang).
    Ich habs versucht einen Pfad jetzt immer automatisch zu erstellen. Doch das ist nicht sehr klug, da sich der Weg ja in mehrere Wege spalten kann. Also jetzt zu meiner Frage.
    Wie könnte ich das am besten machen? - Doch mit Pfade oder gibt es da eine einfache Lösung?

    Hier mal eine test so weit ich gekommen bin (Linksklick = Ecke auswählen, dann mit der Maus ziehen und mit Rechtsklick weg setzen)
    Ist kein Musterbeispiel, aber es ist auch nicht sehr einfach.

    MfG Rodrog
    Dateien
    • Pfade.zip

      (10,61 kB, 141 mal heruntergeladen, zuletzt: )
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Rodrog ()

  • -$Marvin$- schrieb:

    du kannst versuchen mit "place_free" zu prüfen ob der weg an einer bestimmten position weiter geht oder nicht, wenn ja dann soll er weiter laufen wenn nein soll er prüfen ob es woanders lang geht, oder wie auch immer du es willst.


    Ja hab ich mir auch gedacht, aber das Problem liegt darin das Wege ja freiwählbar sind, und die Arbeter sollten die Wege zur Firma (bzw. Produktionsgebäute) selbst finden, und die Wege können sich splittern. d.H. es kann auch eine Kreuzung sein. Ich glaube da musss schon etwas komplizierteres herhalten :)
    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Ich bin noch nicht so ganz schlau daraus geworden... was genau ist jetzt dein Problem?
    Es soll automatisch Pfade setzen, zwischen zwei Verbindungspunkten? Wenn ja, wo genau ist das Problem?

    Also die GM Struktur "Path" würde ich in deinem Fall nicht benutzen.
    Die Frage ist erstmal, willst du es so simple halten, und nur senkrechte und waagerechte Pfade setzen können? Oder sollen sie so komplex und abgerundet sein, wie es bei Siedler möglich ist?

    So wie es bis jetzt ist, würde ich alle "Ecken", die mindestens 2 Pfade miteinander verbinden (keine Ecke bei der ein einzelner Pfad einen Knick macht), als einen Knoten sehen, der dann in einem Graph, den du intern irgendwie realisierst, untergebracht ist. Dieser Knoten soll dann einfach die Menschen, Esel, usw. eine neue Richtung und Speed geben. Solange es immer nur gerade Linien an Pfaden sind, reicht das ja schon aus. Und damit der Knoten weiß, wo er eine Person hinzuschicken hat, liest er aus der Person aus, wo sie hin will und wendet von sich aus einen Algorithmus wie z.B. A* an. Oder die Person bekommt von anfang an eine Art Liste mit, in der steht, erst links abbiegen, dann gerade aus... usw. z.B. einfach realisiert in Nummern, die die Knoten haben. Du musst allerdings drauf achten, dass alle Suchen neu gemacht werden, wenn ein neuer Pfad gesetzt wird oder ein Pfad/Knoten entfernt wird.
  • BadToxic schrieb:

    So wie es bis jetzt ist, würde ich alle "Ecken", die mindestens 2 Pfade miteinander verbinden (keine Ecke bei der ein einzelner Pfad einen Knick macht), als einen Knoten sehen, der dann in einem Graph, den du intern irgendwie realisierst, untergebracht ist. Dieser Knoten soll dann einfach die Menschen, Esel, usw. eine neue Richtung und Speed geben. Solange es immer nur gerade Linien an Pfaden sind, reicht das ja schon aus. Und damit der Knoten weiß, wo er eine Person hinzuschicken hat, liest er aus der Person aus, wo sie hin will und wendet von sich aus einen Algorithmus wie z.B. A* an. Oder die Person bekommt von anfang an eine Art Liste mit, in der steht, erst links abbiegen, dann gerade aus... usw. z.B. einfach realisiert in Nummern, die die Knoten haben. Du musst allerdings drauf achten, dass alle Suchen neu gemacht werden, wenn ein neuer Pfad gesetzt wird oder ein Pfad/Knoten entfernt wird.


    Ja es sollen nur senkrechte und waagrechte Straßen sein.
    Also wenn ich das richtig verstehe, meinst du das jeder "Knoten" eine Nummer, bzw. eine Orientierungszeichen enthält. Und jedes mal wenn ich einen neuen Knoten erstell, soll immer berechnet werden wie man zu einem "Knoten" kommt.
    Hmm aber wie kann man das realiesieren.
    Mir fällt dazu irgendwie nichts ein. Ich werd mal versuchen und wenn ich etwas nicht verstehe frag ich wieder hier.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Danke erstmal. Ich werde mir noch die mp_grid funktion anschauen, da ich sie noch nicht ganz verstehe. Da ich glaube, dass dies die einzige Möglichkeit sei um das Problem zu lösen, werd ich mir, wie gesagt, die mp_grid-Funktionen anschauen.
    Ich melde mich wieder sobald ich Probleme habe.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • So hier bin ich wieder. Erstmal sry für Doppelpost, aber wenn ich jetzt editeren würde, würde das dann sowieso keiner bemerken, glaub ich zumindest.

    Also ich hab das mit mp_grid schon soweiter schön hingekriegt, nur bräuchte ich jetzt eine Funktion die mir die id eines Objectes zurückgibt, mit dem die Straßen verbunden sind.
    Ich hab mein "System" so gelöst. Das ich zuerst alles rot mache, also mit mp_grid, dann wird nur das grün wo eine Straße oder gebäute darauf liegt, und nun werden einfach die arbeiter hin und her "gesendet".
    Wie kann ich das aber machen, das es zum nähersten Object geht, das mit der Straße verbunden ist? Ich hoffe ihr versteht mich.
    In der Hilfe hab ich dafür nichts gefunden, sry wenn ich es übersehen habe.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.