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


  • Angehängt ist eine Windows Development Version:


    Erstmal ist eine ganze Menge noch nicht wirklich genutzter Code zu CommonAPI2 dazugekommen;


    Die Idee ist, anstatt X Gleistypen zu erstellen um X Oberleitungen zu haben, das man das CommonAPI2 Regionen nutzen kann um die Oberleitung in dieser Region durch neue Oberleitungen zu ersetzen.

    Mit flexstreetstracks lädt dann neue Oberleitungstypen unter res\capi_config\catenarytrack, funktioniert daher analog zu anderen TPF2 configs. Es gibt sogar volle api.res Unterstützung.


    Eigentlich sollte das Feature schon längst fertig sein. Alle Vorplanung und Test zum trotz erhält der Renderer von Gleisen leider keine Daten aus der Edge sondern Daten aus BaseParallelStripe.

    Darin dann die Daten zu verfrachten, ist leider sehr schwer. Außerdem hab ich noch nicht herausgefunden wie TPF2 da die parallelen Gleise wirklich errechnet.

    Sprich es sucht sich den schnellsten Gleistypen, um zum Beispiel die Abstände der Masten zu errechnen.


    Kann sein daher das dieses Feature auch nicht final in eine stabile CommonAPI2 Version schafft..



    Ein weiteres Feature was ich heute komplettiert habe ist der neue labelType STOP_LINES. (Siehe meinen Beitrag vom 18.2.2024 weiter oben)

    Damit kann kann man nun die Namen einer Linie bei Station anzeigen lassen.




    Via params kann nun auch die terminalId angeben werden. Sprich dieses ermöglicht die Auswahl des Terminals in einer Konstruktionen. Ihr könnt euren Sims nun Wegweiser zu den Abfahrtsstellen spendieren... Vielleicht verlaufen sie sich dann weniger und fragen weniger bei Simoggle nach dem Weg ;)


    Da ich keine Stationen mit passenden labelList Texte dafür zum Testen habe, tja ohne Test.


    Es gibt dafür natürlich auch ne Dokumentation:

    https://commonapi2.bytetransfe…/LabelTypes?id=stop_lines


    Und ja alle drei Funktionen müssen in der CommonAPI2 eingeschaltet werden.


    Auf der Todo Liste steht da auch noch den Text in Linienfarbe anzuzeigen, das ist aber ein anderes Thema. Mit viel Arbeit wäre das wohl auch möglich...

    Technisch sind auch noch Fahrgastinformationssystem auf den Plan. Ohne Konstruktionen neu zu bauen bzw. den Namen ständig zu ändern.


    STATION_NAME ist auch in der Dokumentationen, da streetTerminals keine Stationsnamen in meinen Test angezeigt haben, mit FlexStreets geht es nun aber..


    1.8.20240303-dev

    - Windows only dev version

    - LabelSystem: add terminalId to labelType STOP_LINES

    - FlexStreets: add setting flexstreetstracks to toggle train track catenary patches, track region and CatenaryTrackRep code

    - add note about experimental status of flexstreetstracks

    - remove note about experimental status of simperson patch


    1.8.20240222-dev

    - Windows only dev version

    - nodedata: fix playerOwned lost when using region and nodedata editor

    - inspect window: add copy function for eventtrace

    - LabelSystem: add STOP_LINES support (requires linedestination, flexstreets and newevents)

    - FlexStreets: set streetTerminals ModelInstanceList transformer to ConstructionTransformator (14), to support STATION_NAME

    - add commonapi.supports("STOP_LINES")

    - add new internal code to support CatenaryTrack Repositories (currently mostly disabled)

    - add api.res.commonapi.catenaryTrackRep interface

    - internal: Simplify Region_ConnectorContext_Data, store catenaryTypeId

  • Moin,

    ich bin mit der neuen dev build gerade im Karteneditor unterwegs und da greift der LayerView Patch mit "2 = Weißes Layer nicht nutzen + UI" bei den Höhenlinien leider nicht.

    Irgendwie hatte ich das früher hinbekommen, dass auch bei den Höhenlinien kein weißes Layer war, sondern Stufen in Hellgrün bis Dunkelgrün.

    Da ich ein paar Wochen Auszeit hatte, bin ich jetzt nicht sicher, ob es an der Tpf2 build 35732 liegt oder an was anderem.

  • Habe die neue Version 1.8.20240303-dev der CommonAPI2 sowie die Version 1.60 des Straßenpakets (Rasengleis) installiert und erhalte nun während des Ladevorgangs meines Spielstandes bei 16% die Meldung "Internal error - An error just occured." :rolleyes:
    Keine andere Mod wurde aktualisiert oder zusätzlich "neu" aktiviert!

    Ist der Fehler irgendwie auszuloten?
    Ich hänge die stdout an.

    Vielen Dank im Voraus für eine Antwort ^^

    stdout.txt

  • Zwei Sachen: Bitte das Debug Level/verbosity auf 99 erhöhen, speichern, Spiel neu starten und crashen lassen. Diese stdout.txt anfügen, dann bitte mit der letzten normalen Version ausprobieren, ob es den selben Crash gibt.

  • Wieder bei 16%? Das sieht nach mehr aus.

    Lässt sich das Spiel ohne eingeschalteten FlexStreets in CommonAPI2 laden? (Ausschalten, Speichern, TPF2 neu starten)


    Noch kann ich das nicht weiter eingrenzen. Lässt sich ein neue Karte erstellen?


    GGf. mal die kleine .sav.lua deines Spielstandes anhängen...

  • Wieder bei 16%? Das sieht nach mehr aus.

    Ja, wieder bei 16% ...


    Lässt sich das Spiel ohne eingeschalteten FlexStreets in CommonAPI2 laden? (Ausschalten, Speichern, TPF2 neu starten)

    leider auch nein, wieder Absturz bei 16%


    Lässt sich ein neue Karte erstellen?

    Eine neue Map, in der nur CommonAPI2 und das Rasengleis als Mods aktiviert sind, lässt sich laden und läuft



    GGf. mal die kleine .sav.lua deines Spielstandes anhängen...

    Porta Saxonia.sav.lua

  • Bis jetzt hab ich nichts gefunden, da werde ich wohl das komplette Savegame brauchen.


    Da UG swisstransfer benutzt für so etwas, schlage ich das mal vor. Du kannst mir dann den Link in einer privaten Nachricht hier im Forum geben.

    -edit-

    Und bitte deine settings.lua der CommonAPI2

  • Ich hab da ne ganze Zeit an Debugging Zeit verheizt, schlauer bin ich nicht geworden, drum hier noch mal ein paar Informationen:

    • Ich bitte euch immer ein Backup euer Savegames anzulegen
    • Informationen zu geben ob Ihr auch eurer Spielversion geändert habt. Es ist ein Unterschied ob Ihr die TPF2 Build geändert habt!
    • Solltet Ihr einen Spielstand speichern und diesen nicht mehr beim
      nächsten mal laden können, bitte ich euch diese hier als Bug zu melden.
      Wenn Ihr meint der Spielstand durch eine Funktion der CommonAPI2 kaputt gegangen ist.

      Darunter fallen also keine Spielstände, die nur noch im Pausen Modus laufen oder sonstige kaputte Sachen, wie ne Konstruktion schmeißt einen Lua Fehler.

      Ändert keinesfalls die Rahmenbedingungen oder macht Backups so das Ihr auf den vorherigen Stand zurück kommen könnt, damit wir das Debuggen können
    • Nicht versuchen bei Fehlern (buildoverwrite ggf. genutzt) zu nutzen und dann einen Spielstand zu speichern!
      Wenn CommonAPI2 sagt, das es etwas nicht findet, ist dieses Wichtig!
    • Überprüft die Dateigröße, ist die sav Datei nun ungewöhnlich kleiner als vorher? Dann ist beim Speichern etwas kaputt gegangen
    • Upgrade von CommonAPI2:
      • Mach ein Backup von CommonAPI2 und Straßenpaket vor dem Updaten.
      • Solltet Ihr dann eure Savegames nicht laden können, bitte um genaue Informationen: Alte Version -> Neue Version
    • Nutzt CommonAPI2 nicht bei Instabilen Systemen:


      • SSD HDD hat ständig korrupte Daten... Dann kann natürlich auch ein Spielstand kaputt sein.
      • Es gibt ungewöhnliche Crashs beim Spielen ohne CommonAPI2.
      • Der Grafikspeicher läuft über und das auch ohne CommonAPI2
      • Ihr habt das System übertaktet. TPF2 verhält sich ziemlich anders als viele andere Spiele, nur weil Spiel X läuft, heißt das nicht das eure Kiste stabil ist.
        Glaubt Ihr mir nicht? Schaut mal hier https://www.radgametools.com/oodleintel.htm, so etwas kann auch bei AMD CPUs passieren.



    Allgemein habe ich nun Herausgefunden, das der Spielstand bei procedural::Shapes die Daten aus mir unerfindlichen Gründen nicht laden kann. Das komische, es sieht so aus das der Dateistream nicht mehr richtig ist, d.h. die Eingangsdaten nicht mehr gelesen werden können.



    Daher der Aufruf, testet mal den NodeEditor und das Region Feature und speichert eurer Spielstände mit neuen Namen ab!


    Könnt Ihr diesen Spielstand nach einem sauberen Neustart des Spiels laden? Wenn nicht, dringend hier melden, danke...

  • wie kann ich die LINE_DESTINATION CommonAPI in meine Mod implementieren?

    Ich habe das wie folgt gelöst (sodass die Anzeige mit sowie ohne CommonAPI funktioniert.):

    So funktioniert LINE_DESTINATION, wenn die CommonAPI auch aktiv ist, ansonsten verhält sich das Label wie ein Vanilla NEXT_STOP label.


    Direkt zum Anfang vom mdl-File:

    Code
    function data()
        local labelType = "NEXT_STOP"
        if (commonapi ~= nil and commonapi.supports and commonapi.supports("LINE_DESTINATION")) then
         labelType = "LINE_DESTINATION"
        end
    return {

    und dann den labellist-Eintrag an der Stelle type entsprechend angepasst:

    Code
    {
        alignment = "LEFT",
        alpha = 1,
        -- (...)
        type = labelType, -- <=== Der Punkt hier ist wichtig!
        verticalAlignment = "CENTER",
        dontModify = true,
    },

    Ansonsten kannst du dir das auch direkt in der Mod anschauen: SBB FV-Dosto (RABDe 502) Repaint. Der Code oben stammt aus /res/models/model/vehicle/train/sbb_dosto_middle_1st.mdl

  • Ist es auch möglich, mit der CommonAPI oder irgendwie anders Linienname und LINE_DESTINATION oder Linienname und NEXT_STOP nebeneinander anzeigen zu lassen? oder kann man einfach eine variable einbauen und die aus LINE_NAME und z.B. NEXT_STOP zusammensetzten?

BlueBrixx