CommonAPI2 Entwicklungsdiskussion, Fragen & Antworten

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


  • Nun, beim Ansehen des Videos habe ich mir gedacht. Ganz nett, aber braucht man das...?
    Nachdem ich nun den ganzen Vormittag Nodes auf meiner Karte gelöscht habe, um vernünftige Kreuzungen hinzubekommen, muss ich resümieren - ich brauch es!

    Vielen Dank dafür, dass Du immer soviel Energie in diese schier unendliche Geschichte steckst!

    Der Mensch ist nicht das, was er vorgibt zu sein - er ist das, was er verbirgt!

  • Zitat

    Bei Kreuzungen wird der Winkel der Abzweigung als Indiz genutzt, um die richtige Straße mit den richtigen Daten zu verknüpfen.

    Das könnte ein Grund sein, warum es nicht immer funktioniert.


    Was verstehe ich unter "komplexer Kreuzung"? Sowas hier :-)



    Da mein Savegame aber ebenfalls sehr komplex ist, und die stdout allein schon vom Hauptprogramm megamäßig zugemüllt wird und ansonsten auch keine Auffälligkeiten zeigte, werde ich sowas nochmal auf einer Minimap unter Laborbedingungen testen und dir dann persönlich zukommen lassen. Notfalls kann ich dann auch das komplette Savegame verschicken.


    Bevor jetzt jemand sagt "Ist ja auch unfair, gleich mit dem Härtetest zu kommen" - sowas mache ich natürlich auch mit den eigenen Mods. ;-) Und warum ich überhaupt so was gebaut habe? Ganz einfach als Trick, um größere Radien für die Tram zu bekommen, wenn schon vom Spiel unnütze Verbindungskurven angelegt werden.


    Es gab allerdings auch Probleme bei weniger komplexen Situationen.

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

  • WernerK

    (natürlich auch alle anderen)


    Könntest du mal die DLL Datei in bin austauschen und mir berichtet ob es nun funktioniert:

  • Ich bin auch echt baff. Damit, daß das noch möglich werden würde, hab' ich auch nicht gerechnet. Traumhaft!

    Bei mir waren die Änderungen auch manchmal nicht sofort sichtbar, aber mit ein wenig hin- und her hat's trotzdem immer funktioniert.

    Wenn's jetzt noch irgendwann möglich wird, die kleine Landstraße mit einseitigen Straßenbahngleisen zu verlegen, für meine Vorstadt- und Landstraßenbahnen, dann bin ich langsam wunschlos glücklich in dem Segment :D

  • Zitat

    Wenn's jetzt noch irgendwann möglich wird, die kleine Landstraße mit einseitigen Straßenbahngleisen zu verlegen, für meine Vorstadt- und Landstraßenbahnen, dann bin ich langsam wunschlos glücklich in dem Segment :D

    Du meinst so wie hier? Kommt mit etwas Glück als Weihnachtsüberraschung, aber, wie du weißt 8), muss ich zwischendurch immer mal die schon existierenden Mods updaten. ^^

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

  • Zitat

    Könntest du mal die DLL Datei in bin austauschen und mir berichtet ob es nun funktioniert:

    Leider nein. :( Nach dem Austausch der dll gab es zunächst wieder einmal Startprobleme. Beim Ladezustand von 4 % ist das Spiel eingefroren. Beim zweiten Versuch hat es dann interessanterweise - wie gehabt - geklappt, aber bei den Testkreuzungen war es wieder Fehlanzeige, wobei einige der Verbindungen sich auch wiederum problemlos entfernen ließen. Komplexere Kreuzungen werden durchweg richtig behandelt, sobald sie einigermaßen rechtwinklig angelegt sind. Es liegt also wohl am Winkel. Lassen sich die Verbindungen nicht anders ermitteln? Du hast die ID des einen markierten Nodes, du hast die ID des anderen, da müsste sich über die Transport-Network-Tabelle doch die Verbindung der beiden Nodes über die conns ziemlich eindeutig heraussuchen lassen, ohne es an irgendwelchen Winkeln festzumachen?


    Ist es eigentlich so vorgesehen, dass manchmal auch mehrere rote Punkte erscheinen?


    Du bietest da auch eine Debug-Ausgabe an, die nützlich sein könnte. Könntest du die eventuell in die stdout umleiten, dann könnte man im Nachhinein noch darauf zugreifen?


    Update: Ich habe einen Versuchsaufbau mit ebenfalls unregelmäßigen Winkeln gemacht, und da klappt es. Allerdings werde ich da weiterforschen und die Komplexität noch erhöhen. Meine ursprüngliche Testkreuzung (die im Bild) habe ich erneut bearbeitet und festgestellt, dass da nicht etwa gar nichts passiert, sondern schon eine Verbindung entfernt wird, allerdings die falsche. Die liegt interessanterweise in unmittelbarer Nähe derjenigen, die eigentlich gelöscht werden sollte.


    Ich will auch nicht gänzlich ausschließen, dass evtl. "Altlasten", sprich überalterte Datenstrukturen aus früheren Spielversionen, eine Rolle spielen könnten. Außerdem sind rund 200 Mods installiert, da kann auch noch eine Menge passieren.


    2. Update: Ich bin der Sache etwas nähergekommen. Es ist denkbar, dass der markierte Node, in diesem Fall der Endnode, nicht mit dem rechnerischen Endnode übereinstimmt. Denn bei allen Verbindungen, die auf diesen Node zulaufen, bekomme ich ein Fehlergebnis. Evtl. Ungenauigkeit in der Markierung? Ein weiteres Indiz dafür könnte auch sein, dass sich bei Abzweigungen von schmalen Feldwegen die Nodes erst gar nicht markieren lassen.

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

    2 Mal editiert, zuletzt von WernerK () aus folgendem Grund: Neuer Stand der Dinge

  • ich meinte eher so wie die einseitige Straße mit Bürgersteig im Straßenset von eis_os.

    Das Problem dürfte sein, dass in zwei Richtungen befahrbare eingleisige Tramstrecken eigentlich auch zweigleisige sind, nur mit beinahe übereinanderliegenden extrem schmalen Spuren. Und die würden dann nicht zu den normal breiten restlichen Fahrbahnen passen. Es lässt sich natürlich theoretisch alles umprogrammieren, aber unterschiedliche Fahrspurenbreiten wären wirklich eine echte Herausforderung - obwohl die Datenstruktur des Transport Network für sowas bereits von UG vorbereitet ist (TpF 3?). Das nächste Problem wären dann noch die Bahnübergänge. Wenn du die Gleise wirklich direkt neben der Straße verlegen möchtest, geht das nur über unechte Bahnübergänge à la Build with Collision/Parallel Tool und eben nicht aus einem kombinierten Element. Und für realistische Zugkreuzungen an Ausweichen bräuchten wir dann noch eine irgendwann einmal sauber funktionierende Fahrplan-Mod, aber das ist noch das geringste Problem.

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

  • Ach, so weit wie das, was du da eben gezeigt hast, hatte ich gar nicht "geträumt" :)
    Mir ging's nur darum, zum Beispiel eingleisige Wendeschleifen in ländlicherer Umgebung durch Straßen führen zu können. So wie mit der einseitigen Stadtstraße aus dem von mir erwähnten Set. Ich verwende auf meiner 60er-Karte die Landstraßen auch innerorts, eigentlich überall, außer in der größten Stadt.

  • Guten Morgen.


    Also bei mir hat das mit den Winkeln diesmal funktioniert.


    Altlasten kannst du durch das entfernen der NodeData entfernen Knopf herauswerfen. Wobei die interne Map auf LUA Seite beim auswählen sowieso neu erstellt wird. Du kannst in den Debugdaten auf ein Transport Lane klicken, dann zeigt es dir den errechneten Punkt an.

    Die klickbare Node Bereich wird über die Lane Breite errechnet, sollte die Hälfte gegen Null tendieren, kann es sein das der Node nicht gewählt werden kann.

    Weiteres fällt mir nicht ein.


    Mehrere rote Punkte? Ja du kannst für eine Quellnode Blau mehrere Zielnodes entfernen und auch Zielnodes hinzufügen (grüne Punkte) Siehe Video...


    Eine andere Lösung zu Winkeln gibt es nicht. Oder ein separates Edge Object(mdl) für jede Daten Möglichkeit, dann könnte man aber keine Haltestellen mehr bauen + ich hab da noch Sachen auf der Todoliste.


    Du denkst in cons, das ist keine con. Das ist eine BaseEdge BaseNode, die geänderte ConnectionMap wird schlussendlich in den Shape Daten gespeichert. Genau die Funktion zum errechnen wird geändert und das Ergebnis bearbeitet.

    An der Stelle hast du eine Liste mit Straßen und musst dann eine ConnectionMap herausgeben. Nodes muss man sich selber errechnen... Der Lua Code errechnet dieses selber. Das ist nun die siebte Version davon.


    Bei jedem Umbau kann sich die Sortierung ändern. Sprich die Edges die an eine BaseNode hängen haben keine feste Sortierung noch einem Index. Da die Berechnung kompliziert ist, wird diese bei der LUA Daten nur beim wählen eines Nodes gemacht. (Da ja die Map Änderungen gespeichert werden inkl. Winkel sind die Entity Daten dabei eigentlich egal)


    Lane Breiten: Zu viele Codebereiche errechnen die Lanebreite durch die Anzahl der Straßenbreite ohne Fusswege. Obwohl das CommonAPI2 an manchen Stellen ändern könnte, würde ein Laden ohne CommonAPI2 zu sehr viel Chaos führen.


    Doppelbelegung der Fahrtrichtung auf einer Schiene, ja.

    Es gibt das Problem das zwei Trams dann aufeinander Zufahren und nur durch Verkaufen wieder gelöst werden können. Beide Seiten bekommen Grün an der Kreuzung...

    (Ein rotieren bringt nichts, da es ja dann nur eine Lane gibt)


    Lanes haben keine Richtung nur die Verbindungen verhindern Chaos im Spiel.

    Es gibt einen verstecken Advance Mode im NodeEditor, da wird der Forward Check umgangen. Da hab ich meine Trams zu einem Betriebshof auf nur einem Mittelgleis gelegt. Durch Wegpunkte kann man das dann wieder sicher auseinander trennen. Aber da man sich damit wirklich sein Spiel kaputt machen kann, ist das nicht aktiv...

  • Zitat

    Du denkst in cons, das ist keine con. Das ist eine BaseEdge, die geänderte ConnectionMap wird schlussendlich in den Shape Daten gespeichert. Genau die Funktion zum errechnen wird geändert und das Ergebnis bearbeitet.

    Nö, das sind Base Nodes. Ich hab mich damit ja schon selber lange genug rumgequält. ;-)


    Aber jetzt die eher gute Nachricht: Mir ist gelungen, eine der problematischen Kreuzungen auf einer Mini-Map mitsamt Bug nachzubauen. Kriegst du per Konversation. ;-)

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

  • Vielleicht hättest du dir den Aufwand sparen können, wenn Du direkt gesagt hättest, das du mit "Build With Collision" baust und die Testkreuzung ne Kollision verursacht.

    Also ich hab die Änderungen in der DLL Datei mal gerade für Linux gebaut und das Savegame "Moderne Testanlage2" durch gejagt.


    Wer das auch möchte:

    Einfach in /eis_os_commonapi2_1/res/scripts/commonapi2/ui2/NodeWindow.lua

    local cmd = api.cmd.make.buildProposal(proposal, ctx2, false)

    durch

    local cmd = api.cmd.make.buildProposal(proposal, ctx2, true)

    ersetzen.


    Werde dafür wohl noch ne Checkbox einfügen damit Kollisionen ignoriert werden können...

  • Na, Hauptsache der Fehler ist gefunden. ^^ :thumbup: War wohl auch keine Kollision, sondern ein zu enger Winkel. Ist mir aber auch erst beim Nachbauen aufgefallen. Inzwischen dürfte der Einsatz von BwC gerade bei experimenteller Tramgleis-Verlegung - Stichwort spitzwinklige Abzweigungen - gar nicht mehr so selten sein.

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

  • Hallo,


    hat jemand Spielstände mit großen .sav.lua Daten?


    Wenn ja wie groß werden die bei euch? 200KB 300KB 500KB noch mehr?


    Ich hab mal in meine Testmap mal alle 10k BaseNodes mit NodeDaten hinzugefügt und stelle fest das Speichern wird nun extrem langsam (außerhalb meines Codes) so bei 80% (siehe Grafik)

    Hab nun gut 1MB an sav.lua Daten :/ Gut ich glaube es gibt kaum jemand der 10000 BaseNodes definieren wird aber das Speichern zerrt an den Nerven...


    Sprich die Anzeige bei Speichern... bleibt dann so stehen:

BlueBrixx