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


  • Dennoch, leider.


    Ich habe letzter Zeit hast Probleme tun wenn Herbst-Update kann sicherlich CommonAPI soweit nicht nutzbar warst.

    Und warum hatte Entwicklung des CommonAPI schon beendet wärst, denn hat traurige Zeit hätte schwierige Behebung

    und kaum hilfreich warst.


    Schon mal gesehen, weil hat lange Entwicklung des CommonAPI mitgestaltet habe und was passiert das Ende des CommonAPI

    pünktlich zu Herbst-Update nicht erschienen wäre.


    Erstmal vielen Dank, lieber Ei.os

  • Um euch mal einen Eindruck zu geben was das dann bedeutet:


    Fragestellung: Warum crasht meine "UI Improve" Funktion (in der Beta Version)?

    (Der Großteil ist in LUA geschrieben und nutzt quasi nur TPF Bordmittel bis auf 4 Funktionen)


    Ab geht die Reise:

    - Crash in ConstructionList in Lua

    - in conlist.patchModelGroups()

    - bei commonapi._native.ModelMetadataExt.set( modelId, "uiCommonAPI", uiCommonAPI)


    Hmm, aber die MetadataMap sieht doch noch recht gleich aus im Speicher, also weiter:

    - schau mir die Code Zeile an: IdRep_Model* idrep_model = ModelMetadataExt_getIdRepModel(), die aufruft:

    Code
    IdRep_Model* ModelMetadataExt_getIdRepModel() {
        if (CGame_CurrentPtr == nullptr) {
            return nullptr;
        }
        ModelRep* modelRep = CGame_CurrentPtr->gameRes->modelRep;
        IdRep_Model* idrep_model = &modelRep->modeldata->rep_Model;
        return idrep_model;
    };

    Also wieder mal die Struktur von CGame analysiert:

    Wo wird gameRes gesetzt und ist es noch an der selben stelle?

    - Analysiert und ja, ist immer noch an der richtigen Stelle.


    Also GameRes analysieren:

    - GameRes ModelRep ist auch an der gleichen Stelle.


    Aber die Speicherallokation für ModelRep ist nun um 24 Bytes größer :/



    Hier nun mal ein paar C++ Strukturen dazu:


    und das finale geänderte Speicherlayout:


    Sprich ich muss die neue Position von ModelData *modeldata finden, und die geänderte Funktionalität von IdRep_Model.

    Anstatt std::unordered_map name2id;> haben wir nun eine phmap, diese funktioniert anders und hat auch eine andere Speichergröße.



    Das hat mich heute den Nachmittag gekostet.


    Hätte ich die Header Dateien (bzw. ne Art SDK) wäre das ne Sache von 3 Minuten bzw. würde gar nicht erst passieren.

    So Sitze ich da halt Stunden dran. ||


    Jetzt fragt Ihr euch, das Feature ist ja unwichtig, schalten wir UI Improve ab.

    Ok, aber schauen wir doch mal in FlexStreets:


    getOverwriteStripeMaterialsNew von mir macht das:

    int materialId = CGame_CurrentPtr->gameRes->modelRep->modeldata->rep_Material.GetMaterialId(&extra->materialName);


    Das würde natürlich auch Crashen, wenn CGame_CurrentPtr->gameRes->modelRep->modeldata->rep_Material nicht angesprochen wird, sondern irgendwo falsch abbiegt.

    D.h. hier müssen 4 Zeiger und Ihre relative Position richtig sein, sonst gibt es Chaos und die Funktionalität einen Namen zu einer Id aufzulösen.


    Ich hoffe ich konnte euch einen kleinen Einblick geben, warum das nicht so einfach ist und nicht mit der LUA Seite von TPF2 zu vergleichen ist.


    PS: Auch die Pointer validieren bringt meisten nichts, an der Stelle haben wir ggf. nen validen Pointer, der Zeigt nur ggf. auf ne andere Art von Objekt.

    Und das wird im Render Code bzw. beim erstellen von Meshdaten aufgerufen, da gibt es keine LUA Runtime...


    Einzigster Trost, ich hab während des Code bastelns nicht an andere Sachen denken müssen, das kommt aber nun um so mehr. ;(

  • Was passiert das Probleme warst das CommonAPI eher fehlerhaften Programmierungen hattest da erklären??


    Eis_os meint: Das ist eher trauriger geworden was CommonAPI problembehaftet warst???


    Erkläre dazu später mit Eis_0s???

  • In Anbetracht dessen, was dein Werk für das Spiel bewirkt, könnte man meinen, daß UG dich in ihren Dokumentationsverteiler mit aufnehmen müßte und dir zumindest die Revisionszusammenfassungen zukommen lassen könnte.


    Um so mehr ist dir für die unentwegte Mühe zu danken, die du seit Jahr und Tag auf dich nimmst, um diese (nach außen) undokumentierten Änderungen zu verfolgen und in die CAPI einzupflegen.


    Nimm dir auf jeden Fall die Zeit für das Leben außerhalb des Spiels, die du brauchst - auch wenn CAPI hier in dieser kleinen Echokammer ein sehr nützliches Werkzeug sein mag, ist anderes wesentlich wichtiger und hat ein viel größeres Anrecht auf deine Zeit.


    Halte durch!

  • Merkwürdiger Fehler:

    Beim Versuch die Mods upzudaten kommt dieser Fehler:

    nach fast nem halben Jahr hab ich gestern mal wieder Transport Fever gestartet und die gleiche Fehlermeldung erhalten. Gibt es hierzu eine Lösung? Das mit der Kommando-Zeile hat irgendwie nicht funktioniert bei mir. Vielleicht hab ich mich auch nur zu blöd angestellt!?

  • Schau mal hier, ein Workaround wenn windows curl nicht richtig funktioniert:

  • Nochmaliger Hinweis:



    Achtung:

    Wegen privater Angelegenheiten wird es für das Herbstupdate kein direktes Update geben

    Sprich benutzt bitte bei Steam das Build Archive und seht bitte von privaten Nachrichten ab, danke


    Anleitung gibt es hier:

    https://www.transportfever2.co…php?id=gamemanual:updates

    buildArchive35732 kann genutzt werden um die vorherige Version des Spiels zu nutzen.


    Important:

    CommonAPI2 won't work with the new Autumn Update.


    Please use buildArchive35732 to keep the previous game version.


    UG has written a guide:

    https://www.transportfever2.co…php?id=gamemanual:updates


    Please don't send me private messages, thank you.



    -edit-

    Unser Dino von Urban Games war so lieb und hat die Erstellung des buildArchive Eintrags in die Wege geleitet...


  • Wenn Ihr mein letzte Nachricht angeschaut hättet, seht Ihr Ich habe daran gearbeitet und auch erklärt warum das alles sehr lange dauert.


    Inwiefern und wenn ich die Windows Version zum laufen bekomme habe ich keine Ahnung und ich will mich auch nicht festlegen.


    Ich hab ne Tonne an Fragmente für Straßen wieder gesucht und nun gibt es ein Ladecrash in Windows, also kein Fortschritt. Layerview hat mal funktioniert unter Windows habe ich ein CommonAPI2 Menü.
    Die Linux Version hat mir zumindest schon wieder eine CommonAPI2 Menü angezeigt,, aber die Fragmente passen auf neuere Versionen schon wieder nicht mehr. Wie schwierig das ist, hab ich ja schon gezeigt.



    FlexStreets alleine besteht aus 51 Dateien und etwas mehr als 450KB Code. Und nen Debugger kann ich auch nicht dran klemmen...

  • Da ich bis vor kurzem mit Build35320 gespielt habe verfolgte ich die Möglichkeiten neuerer API's nur am Rand. Gehe ich recht in der Annahme, dass ohne API keine mittigen Straßenbahngleise möglich sind? Die sind mir enorm wichtig! ... obwohl einige Features des Herbstupdate auch interessant klingen...

    I5-7500, 16GB DDR4 RAM, GTX1070 8GB, Festplatte Crucial BX500 SSD 1TB

    Industie- u. Verkehrsgigant, ab 2005: LOCOMOTION, ab 2017 TF, TpF - SimCity 1-4, ANNO 1602-1404, Civilization 2-4 - und und und...

  • Da ich immer wieder lese, das es keine CommonAPI2 Version geben wird, das hab ich so nie gesagt!

    Ich habe nur wenig Zeit dafür und wenn doch, wie gestern, ist alles recht kompliziert.


    Ich arbeite an CommonAPI2 weiterhin in meiner Freizeit wenn es eine fertige Version geben wird kann ich aber nicht sagen.


    Es wurden etliche Änderungen in TPF2 gemacht, die mich halt ausbremsen.

    Es kann natürlich auch passieren das bestimme Konzepte nicht mehr funktionieren oder anders umgesetzt werden müssen.


    Randnotiz, Ich hab sogar detailliert über Änderungen des Spiels berichtet.




    English:

    As I read several there won't be any CommonAPI2 anymore, this I never said!

    I only have limited time, and the time I have for it is eaten by complicate problems.


    I still work on CommonAPI2 on my free time, when I can offer a version I won't know.


    A lot of TPF2 internals have changes so there is only slow progress.

    It may be that certain aspects won't work with the new update, and may need to be changed.


    Sidenote: I wrote about internal changes of TPF2 in my last posts...

  • eis_os :


    Nur mal eine Frage. Ist eine Änderung des Depot-Adapters auch so aufwendig? Ohne CommonAPI2 läuft dieser leider auch nicht und meine Gleis-Mods werden nicht mehr angezeigt (z.B. Depots, Stahlbogenbrücke). EAT1963 hat bei seiner Spitzkehre irgendetwas eingebaut, damit dort sämtliche Gleis-Mods verfügbar sind. Anfangs war das nicht der Fall, aber mit dem Depot-Adapter hatte ich bei der Spitzkehre auch sämtliche Gleise zur Verfügung.