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


  • Wird die noch erstellt?

    Ihr müsstet das Spiel downgraden damit ihr CommonAPI² nutzen könnt


    Was soll ich tun, kann ich es normal einladen? Code bei Beta wird nicht genommen.


    Common API ist nicht an, bitte helfen ich brauche diese Mod! Wie kann ich sie trotzdem nutzen? Bitte um Hilfe?

    wiedemann2023 grüßt! Schaut gerne in meinem MOD-bereich vorbei ;)

    Einmal editiert, zuletzt von eis_os () aus folgendem Grund: 2 Beiträge von sandra.wiedemann mit diesem Beitrag zusammengefügt.

  • Hier rein, oder?


    Also habs jetzt da rein, und kann das Spiel wieder starten, schaue jetzt noch ingame und sonst schonmal vielen vielen dank für eure hilfe!

  • Ich bitte euch auch weiterhin die Forenregeln zu beachten. 5 Posts auf einmal müssen wirklich nicht sein...


    Wie man auf eine alte Version kommt, ist im offiziellen Handbuch von TPF2 beschrieben:

    https://www.transportfever2.co…al:updates#older_versions


    Für Steam wäre das dann buildArchive35716 um auf Build 35716 zurückkehren. Linux Nutzer können buildoverwrite nutzen. Das steht aber auch im Release Thread drin.


    Nochmalig: Inwiefern mit einer neuen Version zu rechnen ist, kann ich nicht sagen... Gründe hab ich schon weiter oben erörtert.



    -edit- Nachtrag, so geht das bei GOG Galaxy: (Dann immer auf Spielen klicken, nicht auf Aktualisieren)

  • Danke für den Tipp mit dem Downgrade.

    Nun kann ich die Mod wieder nutzen.

    Ein Computer ist dazu da, die Probleme effizient und schnell zu lösen, die man ohne ihn gar nicht hätte.

  • Hallo. Auch ich habe "downgegraded". Funktioniert Alles. Vielen Dank und Grüsse. eis_os . Ich möchte die CommonAPI nicht mehr missen. Es ist eine Erleichterung und gibt viele Features. Schade, daß UG da wenig Informationen rausrückt, um Deine Arbeit zu unterstützen. Aber ich kann ja auch völlig falsch liegen und Du bist im regen Kontakt. Würde mich freuen :)

  • Nein, kein Kontakt. Das hab ich ja schon vorher geschrieben.


    Ich hab irgendwann aufgehört zu Zählen aber nach 3 Stunden heute konnte ich mich nicht weiter motivieren auf DeAssembler Code zu schauen.

    • Fragment in alter Version finden
    • In der neuen Version nach der gleichen Code stelle suchen.
    • Grob schauen ob der Code noch passen könnte.
    • Fragment neu schreiben, schauen ob CommonAPI2 es findet.
    • Nächstes Fragment.



    Das ist halt sehr viel Zeit verbunden. LINE_DESTINATION / LabelSystem ist das erste Feature, das scheinbar wieder läuft.

    Im Umfang ist es aber lächerlich zu FlexStreets. Und wenn auch alles gefunden wurde, heißt das nicht das alles wieder läuft. Grundlegend nutzt die neuere Compiler Version teilweise andere Funktionen der MS C++ Standard Library. Sprich der Binärcode ist dann anders gestrickt. Ein If then else zweig ist nun anders herum in der exe, mal sind nur ein paar Register vertauscht...


    Es wäre hilfreich alle Funktionsnamen zu haben, die Code Fragmente schreiben sich aber nicht alleine um die genau richtige stelle in der TPF2 exe zu finden...


    Also bei dem Umfang, kann ich sagen, das ich die nächsten Wochen keine Version veröffentlichen werde...


    Und ich kann auch noch nicht abschätzen, ob eine neue TPF2 Version dann zu dieser halbwegs identisch wird.

    Weil, das wird definitiv das letzte mal sein, das ich alle Fragmente neu schreibe...

  • ich habe die buildvers35716, möchte aber die version davor wieder laden, weiß aber leider nicht mehr die buildversion!?

    Nichts Wissen macht nichts.....8)

  • Einfach irre, daß sich keine Lösung finden lässt, die dir diese Arbeit zumindest teilweise ersparen könnte und eine sichere Lösung schafft.

    Was ich dazu denke, schreibe ich hier besser nicht in vollem Umfang.

    Danke auf jeden Fall, daß du es nochmal versuchst!

  • Nunja, schau dir einfach mal Cities Skyline an.

    Das benutzt Mono/Unity und hat dann Microsoft Intermediate Language.


    Da es eine Zwischenschicht ist, gibt es viele Stolpersteine durch Optimierungen des Codes nicht. (MSIL wird in x86_64 bit umgewandelt)

    Trotz das es für Modding in c# ausgerichtet ist, gibt es auch Mods die nach Änderungen im Spiel nicht laufen.


    UG hat ja nicht böswillig irgendwas geändert. Die Linux Version der CommonAPI2 funktioniert ohne Änderungen mit der neusten Build.


    In der Regel kompilieren Compiler mit der gleichen Version und gleichen Eingangsdaten die selben Ausgabedaten. Stichwort: Reproducible builds

    (Das ist bei Linux aber mehr ein Thema)


    Wenn man nun den Compiler updatet, kommt am Ende hinten etwas anderes raus. Dieses kann auf modernen CPUs ggf. schneller sein.


    Wenn der neuere MS Compiler nun anstatt

    mov rax, [esi+16]

    mov rcx, [edi]


    dieses codiert:

    mov rcx, [edi]

    mov rax, [esi+16]


    Stimmt die Bytefolge zum Suchen nicht mehr, der Code macht technisch genau noch das selbe. Nun findet der Compiler es auch noch besser temporäre Variablen anders im Stack (Speicher) abzulegen, dann nimmt es noch andere temporäre Register.


    mov rcx, [r9]

    mov rax, [r8+32]


    Nun ist die Bytefolge und Länge der Bytefolge anders. Wenn ich Pech habe, ist die neue Bytefolge nicht mehr eindeutig. Sprich die passt dann auf anderen Code.

    Wenn ich den Renderer ändere dann aber im TownDeveloper lande, ist das halt keine gute Idee dort etwas zu ändern.


    UG hat darauf keinen Einfluss...


    UG hat einen Einfluss vernünftige API Schnittstellen zu schaffen.

    Aber schon bei einfachen Sachen gibt es immer wieder Probleme und gab es zig Änderungen. Das ist auch der Grund warum CommonAPI2 einen Wrapper um UGs UI api hat. Problemen wie nicht änderbare on* callbacks.


    CommonAPI2 löst das halt damit, das die UI Elemente entfernt werden und dann komplett neu gebunden werden. Das ist unschön, läuft aber relativ Stabil auch für Sachen wie den Inspektor...

  • Schönen Sonntag


    Ich hab mich durch den meisten Code durchgearbeitet und habe mal eine Dll kompiliert.


    Diese DLL funktioniert nur mit Windows Build 35720:

    • Nutzt als Basis die Version 1.8.20230808
    • Beendet das Spiel
    • Macht ein Backup eis_os_commonapi2_1
    • Sofern 1.8.20230808 nicht installiert war, installieren.
    • Geht in eis_os_commonapi2_1\bin und ersetzt die DLL Datei mit der Dll aus dem zip.
    • Nutzt buildoverwrite: steam_35720_1, speichern nicht vergessen, neu starten.
    • Bitte beachtet, die neue DLL funktioniert nicht mir früheren Versionen von TPF2.


    Sachen die nicht funktionieren:

    • Steam Workshop Folder
    • Steam Integration

    Wirklich getestet habe ich die ganze Version nicht, eigentlich sollte aber alles funktionieren.
    Wenn etwas kaputt ist, bitte melden.


    Nochmaliger Hinweis:
    Solltet Ihr wegen Problemen zu einer alten TPF2 Version zurückkehren,

    darf die neue DLL nicht genutzt werden. Macht halt einfach vorher ein komplettes Backup von eis_os_commonapi2_1, natürlich wenn das Spiel nicht gestartet ist...


    Ich erwarte für nächste Woche (siehe SteamDB) ne neue TPF2 Bugfix Release, darüber hinaus hab ich auch kaum lust alles zu testen. Sprich, auch wenn ich mir 99% sicher bin, das alles richtig läuft, speichert eure Savegames unter einem neuen Namen.






    This is the first test version of CommonAPI2 Windows for Build 35720

    Note: Steam integration isn't fixed yet.



    This DLL only works with windows build 35720:

    • As base, please use version 1.8.20230808
    • Quit the game
    • Create a backup of eis_os_commonapi2_1
    • If 1.8.20230808 isn't installed yet, please install this version.
    • Go to eis_os_commonapi2_1\bin and replace the dll file with the one in the zip. Please double check if you really have overwritten the file.
    • Use buildoverwrite: steam_35720_1, please don't forget the setting save, restart the game
    • Please note, this dll only works with build 35720, it won't work with older Versions.

    I thinks all stuff except workshop path and steam integration should work.

    If something doesn't work, let me know.



    Important note (a second time):

    If there are any problems and you want to go back to an older version, don't use the dll file!

    Simple create a backup of the folder eis_os_commonapi2_1 before upgrading and while the game isn't running!


    Additional, I am quite sure all stuff should work as expected. However it is still a good idea to create new savegames with a new name, so you can go back to older versions!


    As we already see in steam db, it's likely that we get a new bug fix release soon from Urban Games, so I really I am not in the mood to do a test round.





    -DLL Datei entfernt / Dll removed.

    CommonAPI2 20230909 oder neuer für Build 35720

    Please use Version CommonAPI2 20230909 or newer forrBuild 35720

BlueBrixx