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


  • ich weiß jetzt nur nicht was ich von dem ganzen halten soll. Ich hatte nie Probleme mit der commonapi2. Würde nur gerne wissen, ob

    - die commonapi2 nur temporär disabled werden soll, weil du demnächst eine neue Version lieferst

    oder

    - ob du einfach keine Lust mehr hast, diese weiterzuentwickeln, aus welchem Grund auch immer (weil die UG Steine in den Weg legt oder was auch immer)


    Und was ist mir den beiden anderen Mods von dir (modular_trainstation) ? Funzen die noch ?


    Das ist keinerlei Wertung zu deinen Entscheidungen, sondern einfach nur die Frage weil ich unsicher bin ob ich deine Mods in Zukunft weiterverwenden kann oder nicht - mehr nicht.

  • Ich kann dir dazu keine klare Aussage geben.


    Der Train Station Adapter für Gleise ist technisch überflüssig um Gleise zu bauen. UG hat das postRunFn System eingeführt, das war einfach da, mit der Erklärung so funktioniert das nun. Ob UG nun auch ein Gleisupgrade und Oberleitungsupdates anbieten wird, keine Ahnung. UG wohl selber nicht. Upgrade Pfad? Keine Ahnung.


    Es gibt leider keine Neuerungen in dem nun vorliegen Spielupdates, die eine CommonAPI2 Lite Version ohne DLL ermöglichen könnten.

    Das die Build Nr in die stdout.txt geschrieben wird, hat nun zwei Spiele gebraucht, eine API Funktion gibt es derweil nicht, oder wurde vielleicht eingeführt. UG Changelogs sind dürftig. Und wenn Sie es gäbe? Bestimmt wieder so, das Sie zwar irgendwo in api steckt, aber beim Laden der strings.luar noch nicht zur Verfügung steht. Brauchbar ist das dann für den speziellen CommonAPI2 Fall nicht.


    linedestinationpatcher ist für ein Feature, das im Native Code Teil der CommonAPI2 abläuft, man kann es ohne Probleme entfernen. In den -dev Versionen war es abgeschaltet um Crashes zu vermeiden.


    Fakt ist, ich bin auf UG zugegangen und habe versucht das Problem für beide Seiten zufriedenstellend zu lösen. Ich habe klar gesagt, was für die Grundfunktionen nötig sind. Ich habe schon während der Testingphase versucht UG UI Code zu nutzen, aber das war mangels Dokumentation noch zufriedenstellender APIs kaum möglich. Es gibt auf Discord einen Screenshot von Sonntag, der zeigt das ich das sehr wohl versucht habe aber eben nur teilweise erfolgreich war.

  • Neuer Build 29416 von UG, nein leider noch keine neue CommonAPI2,

    aber wir haben nun das hier im Changelog von UG:

    getBuildVersion


    Damit sollte es mir möglich sein einen sicheren DLL Loader zu entwickeln, der wirklich die CommonAPI2 nur dann lädt, wenn ich die Version auch freigebe. Also ich schon mal Crash Test Dummy gespielt habe...

    Es wird zwar immer noch an einigen Kanten Probleme geben, aber ein Totalcrash sollte wir damit vermeiden können.


    Urban Games ist Happy wenn sie weniger Crashs bekommen. Damit sollten hoffentlich alle Seiten zu Frieden sein :)

  • Ich hab grad mal geguckt, die Version steht ja noch nicht mal im exe-Header, so wie das eigentlich Windows-Konvention sein sollte. Sonst könntest du sie dir ja auch da weg holen und wärest unabhängig. Bischen unprofessionell von UG, denk ich.

  • Das ist nicht ganz so einfach, Fakt ist, die DLL wird von lua geladen und lua erwartet eine lua Tabelle als Rückgabewert. Denn kann ich aber nur geben, wenn die LUA Runtime in der DLL Datei genügend schon über TPF2 kennt. Und in lua wird man den PE Header nur schwer auslesen können. Linux unterstütze ich ja auch, also eine Lösung wäre das auch nicht.


    Wie ich das alles zusammenbringe, werden die nächsten Tage zeigen. Fakt ist, ich kann mit TPF2 Boardmitteln (hoffentlich) nun erstmals vorher schauen ob die Version "gut" ist und die CommonAPI2 DLL nicht laden. Dafür muss ich den Loader umschreiben und testen, dann die CommonAPI2 an die neuste TPF2 Version anpassen, testen und weiter geht es.

  • Für Binärmodule wie LFS musst du technisch mit der LUA Library linken, TPF2 exportiert aber keine Symbole, d.h. das geht so nicht.

    Deswegen hat meine DLL eine eigene LUA Runtime, die binär identische Speicherresultate liefert, dafür braucht Sie aber auch Informationen aus dem TPF2 Code. Ich habe für CommonAPI selber ne LUA Library die Verzeichnisse scannen kann geschrieben 8)


    Und ja, CommonAPI2 läuft schon wieder, es fehlt aber noch eine Lösung damit commonapi.repos und andere Teile nicht mehr geladen werden, wenn die DLL nicht geladen werden kann.

  • Guten Morgen,


    ich hatte es im Workshop Forum bereits geschrieben, mein Problem ist, dass ich dennoch Abstürze habe, obwohl ich die Mod eigentlich entfernt habe.

    Es kann gut sein, dass diese in einem Mod noch drin ist, sodass es deswegen zu den Abstürzen kommt, jedoch finde ich die stdout.txt Datei auf meinem

    PC nicht.

    Muss ich jetzt jede Mod entfernen und dann wieder hizufügen? Könnte ich auch so das Problem finden?


    Ok ich habe die Datei gefunden, nun ja das Problem istz bekanntlich vor dem Computer.....stdout.txt

  • e:\Programme (x86)\Steam\userdata\999236574\1066780\local\mods\

    e:\Programme (x86)\Steam\steamapps\common\Transport Fever 2\mods\

    nach dem Verzeichnis eis_os_commonapi2_1 schauen und entfernen.


    e:\Programme (x86)\Steam\steamapps\workshop\content\1066780\

    nach dem Verzeichnis 1947572332, sollte es hier noch vorhanden sein, hast Du es nicht via Steam Client deabboniert!


    Wenn es immer noch nicht geht, den ganzen Steam Ordner nach CommonAPI durchsuchen, es sollte eine DLL auftauchen in einem bin Verzeichnis. Den kompletten Verzeichnispfad dann bitte hier posten...



    PS: Und als Statusreport, CommonAPI2 kann ohne DLL zurzeit keine Spracje herausfinden, eine Modliste gibt es leider auch noch nicht ;(

  • Es wird auch weiterhin nur mit DLL richtig funktionieren. Das Problem ist, meine alte debug.sethook Variante zum aufspüren von Mods funktioniert nicht. Warum kann ich auch nicht sagen, weil trotz aller Bemühungen seitens UG, das Spiel ohne Fehlermeldungen crasht. Nen Debugger darf ich an die Steam Version auch nicht dranhänge, das mag Steam gar nicht gerne.


    Die UG UI scheint Speicherlecks zu haben, das liegt primär daran das ich ein Heavy Duty Nutzer bin und meine APIs sehr dynamisch zu Werke gehen, d.h. ich füttere technisch die gleichen Daten meiner UI an meine lua imgui bridge, und einer neu geschriebenen tpfui.lua. Zurzeit ist das aber eher noch pfui. Fakt ist, ich kann den CommonAPI2 Einstellungsdialog nun via api.gui. darstellen, habe aber noch mit der Übersetzungsfunktion _ technische Problem. Warum ich das primär machen muss, ich will


    • Eine Info für den Nutzer haben das die CommonAPI2 gerade ohne DLL geladen wurde
    • Die Möglichkeit bekommen, die Einstellungen umzuschalten ob die DLL geladen werden soll
    • Es ermöglichen allen Nutzern einen bestimme Versionsstring einzugeben, damit ich nicht ständig Steam Updates machen muss, wenn UG ein neues Build macht.


    Das bedeutet, ich werde dann hier im Forum einen String veröffentlichen, der dann das Laden der DLL mit einer bestimmten neuen Version ermöglicht.

  • Vielen Dank, jetzt geht es wieder, im Verzeichnis:


    e:\Programme (x86)\Steam\steamapps\common\Transport Fever 2\mods\


    War es noch vorhanden, jetzt geht das Spiel wieder:thumbup:

  • eis_os: Man kann Dir gar nicht genug danken.


    Anbei eine erste Rückmeldung: Ich habe gerade die neue CommonApi2 heruntergeladen und kurz ausprobiert. Die Bahnhofsmodule von Marcolino26 funktionieren wieder (seine Mod benötigt aber auch noch einige Anpassungen, z.B. die Gleis-Lua's, ist aber ein anderes Thema). Vorher konnte man ja keine Gleismodule mit Oberleitungen setzen. Auch konnte ich beim Depot wieder unterschiedliche Gleis-Geschwindigkeiten einstellen. Einen Test mit einem Zug gemacht, 2 Bahnhöfe mit 60 km/h Modulen und mit 60 km/h Gleisen verbunden, ein Depot mit 60 km/h Gleis, alles mit Oberleitung und hat tadellos funktioniert.

  • Ich kann die CommonAPI2 auch nicht mehr sehen (Build 29485 Testing) - keine Ahnung, ob sie aktiv ist.

    Lässt sich das irgendwie feststellen?

    geh mal auf die Seite und scroll ganz nach oben commonapi2-neue-versionen-und-wichtige-informationen

    da steht dann dieses


    Build 29485 Testing:

    Windows Steam Version: Spiel starten, API Knopf drücken für die Einstellungen, dann unter Build override steam_29485_1 eingeben und speichern. Spiel neustarten.Linux Steam Version: Spiel starten, API Knopf drücken für die Einstellungen, dann unter Build override steam_29485_2 eingeben und speichern. Spiel neustarten


    hatte etwas gebraucht bis ich auf die idee gekommen bin, diese seite aufzurufen statt die download.. ;)

    16 GB Speicher AMD Ryzen 5 5600X 6-Core Nvidia GeForce RTX 3070

BlueBrixx