Hierarchie der Straßen im Kreuzungsbereich

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Ich versuche gerade herauszufinden, welcher von zwei unterschiedlichen Straßentypen optisch Vorrang an einer Kreuzung hat, insbesondere im Hinblick auf Straßen- und Gehsteig-Texturen. Kennt jemand zufällig die Regeln dafür oder hat selber etwas herausgefunden? Ich habe schon so viel herumexperimentiert, komme aber nicht dahinter. Es scheint Relevanz zu haben, ob eine Straße im Standard-Verzeichnis liegt, aber auch nicht immer. Die Geschwindigkeit könnte eine Rolle spielen, es gibt aber auch Gegenbeispiele. Kosten? Wohl eher nicht? Breite? Wohl auch nicht. Mit dem Parameter Priority kann ich überhaupt nichts anfangen. Ich habe den Verdacht, er hat überhaupt keine Funktion.

    ... don't know much trigonometry ... don't know much about algebra ... don't know what a slide rule is for ...

  • Aus der Wiki: Wenn eine Kreuzung aus verschiedenen Straßentypen besteht, wird für die Pflasterung und andere Materialien derjenige verwendet, der am häufigsten für die Straßenabschnitte verwendet wird, die sich am Kreuzungsknoten treffen. Wenn mehrere Typen gleich häufig verwendet werden, gibt es keine garantierte Reihenfolge, sondern in der Regel wird der Typ mit dem kleineren Index im Straßentyp-Repo verwendet.


    Vorsicht; Modstrassen sollten in einem Unterordner vom Standard Ordner liegen, ansonsten werden diese Strassen auch zur Erstellung der Städte herangezogen .


    kleiner Tipp; Modstrassen sollten nicht direkt im Standard Ordner liegen sondern in einem Unterordner.

  • Bitte beachten, CommonAPI2 FlexStreets ändert den Algorithmus und hat einen höheren Bias durch Einbeziehung von priority. Sprich es wird tendenziell die Straße nehmen die eine höhere priority hat.


    Ein Neubau der Kreuzung ist zwingend Nötig um Änderungen zu übernehmen. (Umschalten Spielereigentum reicht schon)


    Wenn gewünscht kann ich noch den C++ Code dafür dranhängen...

  • Speedmaster hat Recht. :thumbup: Leider hatte ich den Beitrag im UG-Wiki nicht gesehen. Es ist tatsächlich von der Reihenfolge im Repository abhängig. Was in der Praxis die schlechteste, weil zufällige Lösung ist. Priority wirkt sich laut Anleitung wohl nur auf Straßenmarkierungen aus, was nicht wirklich durchdacht ist. Dass es diesmal etwas mit CommonAPI zu tun hat, glaube ich nicht, weil es ein generelles Problem darstellt. Ich werde forschen müssen, in welcher Reihenfolge die Straßen ins Repository geladen werden, und ob durch Umbenennung oder Änderung der Ladereihenfolge Abhilfe geschaffen werden kann. Ansonsten gäbe es wohl keine Chance, dort irgendwie einzugreifen. :( Hieße, wieder einmal eine Mail an UG, wobei ein funktionaler und sinnvoller Priority-Eintrag schon einmal auf meiner Wunschliste stand.


    Update: Ich hab mal geforscht und festgestellt, dass bei einem neuen Savegame die Repository-Plätze zunächst alphabetisch vergeben werden. Ausnahme: Die Vanilla-Straßen wandern ganz nach vorne; offensichtlich sind sie irgendwo spielintern in einer Tabelle eingetragen. Beim Abspeichern des Savegames werden offenbar alle Repository-Plätze ins Savegame übernommen und bleiben weiterhin belegt, selbst wenn die Straßen-Mods wieder deinstalliert werden.


    Im konkreten Fall von charly_o dürfte es daran liegen, dass street im Namen alphabetisch hinter prow und psid steht. Heißt, ich muss beides leider noch einmal umbenennen, um den Fehler zu beheben. Heißt auch, mit Advanced Tram System noch nicht zu viel zu bauen, weil evtl. Straßen/Tramgleise ersetzt werden müssen.

    ... don't know much trigonometry ... don't know much about algebra ... don't know what a slide rule is for ...

    Einmal editiert, zuletzt von WernerK ()

  • Die Repository Plätze wurden durch die Reihenfolge des Betriebssystem vergeben (und weder Windows noch Linux garantieren diese*). Die Reihenfolge, bzw. die ganze Straße wird mittlerweile mitgespeichert.

    (UG hat da mehrere Ladefunktionen, früher wurde quasi nur die Position gespeichert)

    Damit ist es möglich ein Savegame ohne Straße zu laden.

    Die Zip Dateien sind eine tieferliegende Schicht und UG hat da mehrmals geändert. Auch wenn es nun sortiert, alte Savegames bleiben so wie sie sind...


    Ob UG es mittlerweile sortiert durch die Änderung des Zip Supports keine Ahnung. Es gibt zwar Listen für den Straßenbau bei der Erstellung von Straßen. Mir wäre aber keine List aufgefallen im Ladecode für eine feste Reihenfolge.


    Die Reihenfolge ist damit, api.res.streetTypeRep.getAll().


    Und nochmals: Ich habe in CommonAPI2 extra Code drin, der das verhalten ändert, ich hab den UG Code dafür analysiert und für nicht zweckmäßig befunden.


    Und genau das was in UGs Wiki steht stimmt. Da die Reihenfolge Lageabhängig ist und UGs Code die kleinste Id nimmt, kommt es bei fast allen Spieler dazu, das die kleine Straße Vorrang hat bei ner Kreuzung von kleiner Straße mit großen Straßen. Mit CommonAPI2 ist das dann genau anders herum und die große Straße hat Vorrang bzw. eine Straße mit priority.



    * Da ein Directory Entry so geschrieben wird, wie die Dateien entpackt werden, ist die Chance groß eine alphabetische Reihenfolge zu erhalten.

  • CommonAPI2 Code dazu:


    Grob: Zähle alle Straßentypen, füge der Anzahl die Priorität * 100 hinzu. Schaue welche Straße ID den höchsten Wert erreicht...

  • Wie gesagt, bei mir ist die Reihenfolge bei einer frischen Map alphabetisch, wird aber durch spätere Installationen durcheinandergebracht, und selbst nicht mehr installierte Typen verbleiben auf immer und ewig an selber Stelle im Repository. Soweit zumindest meine Forschungsergebnisse. Dass du da in der CommonAPI etwas gemacht hast, ist grundsätzlich ok, aber eigentlich sollte es da eine Regelung seitens UG geben. Priority auch für Texturen, Masten etc. zuzulassen, wäre ein guter Schritt. Zufallsergebnisse wären auf jeden Fall extrem doof. :-(


    Was mein Tramsystem betrifft, werde ich auch einige Tests mit CommonAPI durchführen. Leider ist die Installation nach neuen Spiel-Updates immer etwas abschreckend. ;-)

    ... don't know much trigonometry ... don't know much about algebra ... don't know what a slide rule is for ...

  • Es hat viel Überzeugungsarbeit gebraucht statische Repository Ids zu bekommen und eine Speicherung so das man ein Spielstand laden kann.

    TPF3 wird dann vielleicht deine Wünsche berücksichtigten.. Musst halt den Dino ordentlich nerven...


    Technisch sollten ca. 50% was in CommonAPI2 drin ist, schon im Grundspiel sein, gerade diese technischen Sachen haben es nur mit viel Nachdruck ins Spiel geschafft:

    - Model checks damit das Spiel nicht crasht.[seit der letzten Version drin, seats werden aber immer noch nicht überprüft]

    - Mod Parameter Checks (Duplikate)


    Das sind keine gimmicks. Außerdem zeige ich ja, das ich von Außen die Engine zu viel mehr bringen kann und das mit quasi "bescheidenen" Mitteln.



    Keine Ahnung was ihr alle mit CommonAPI2 habt,.

    Installierst halt die neuste Version der CommonAPI2 oder ggf. ein kleinen Eintrag via buildoverwrite, das sind drei klicks. Fertig.

    Wenn ich bei deinen Mods die Mod-Abhängigkeiten durch installiere bin ich länger beschäftigt ;)


    Und ja, diese halbgaren Sachen nerven. Gerade weil StreetGeometry::TransitionUtil::GetNodeStreetType wirklich sehr einfach ist und man da bestimmt ne andere Lösung anbieten könnte.

    Wenn du eine bessere "mathematische" Lösung hast, CommonAPI2 ist schon vorbereitet und kann technisch auch einen anderen Wert nehmen oder einen besseren Algorithmus.

    priority war aber für UGs Straßen die einfachste Wahl. In meiner Todoliste steht dafür drin, ggf. die Lanes noch hinzuzuaddieren bzw. die Straßenbreite.
    Sprich ne größere Straße hätte dann automatisch mehr Gewichtung...

  • Zitat

    Musst halt den Dino ordentlich nerven.

    Ich denke mal, der Dino wird das nicht alleine entscheiden können. Ansonsten nerve ich schon genug. ;)

    Zitat

    Wenn ich bei deinen Mods die Mod-Abhängigkeiten durch installiere bin ich länger beschäftigt

    Bis auf die Kleinbahngleise, wo ich bestehende Ressourcen zur Vermeidung von Doppelentwicklungen nutze, besteht maximal nur eine Abhängigkeit. Aber ich gebe zu, dass es auch nicht immer einfach ist. Was aber auch daran liegt, dass Klippen immer wieder durch eine Kette von Workarounds umschifft werden müssen.


    Eine Erweiterung des Parameters Priority sehe ich wie gesagt als beste Lösung an. Eigentlich bräuchte man drei Priority-Parameter: Einen für Markierungen, einen für die Kreuzungstextur und einen für die Masten. Es kann nämlich sein, dass eine Straße die Masten von einer Tramstrecke übernehmen soll, aber nicht die Bodentextur.

    ... don't know much trigonometry ... don't know much about algebra ... don't know what a slide rule is for ...

    Einmal editiert, zuletzt von WernerK ()

BlueBrixx