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


  • Und nochmal für alle:

    CommonAPI 1.6.20200728 oder älter wird nicht mit der Vulkan Version funktionieren und explodieren, ich habe euch gewarnt...


    And again for all:

    CommonAPI 1.6.20200728 or earlier won't work with Vulkan TPF2, you have be warned!



    Und ich habe keine Informationen von UG, also kann ich auch nichts zu der angekündigten Vulkan Version sagen...

  • Wenn das stimmt was Du schreibst , eis os und ich bezweifel das nicht , ist das ein unwürdiges Verhalten von UG .


    Ohne Modder verliert man doch schnell das Intresse an dem Spiel . Meine bescheidene Meinung dazu .


    UG ein Tip von mir , kümmert Euch mehr um die Modder , die Sorgen mit dafür , das das Spiel gekauft wird . Ohne einen Mod hätte ich diese Spiel nie gekauft . Und werde , falls ein Nachfolger kommt , mir sehr genau überlegen , ob das für mich dann in Frage kommt .

    MfG Gaga


    Weisheit stellt sich nicht immer mit dem Alter ein . Manchmal kommt auch das Alter ganz allein .


    AMD Ryzen 5 Six-Core 3,60 GHz , Ram 32 GB , Geforce GTX 1080 TI 8 GB .

  • Urban Games Meinung ist klar, sie mögen es überhaupt nicht was ich da im Speicher mache ;)

    Wobei ein paar wichtige Sachen für alle Nutzer mit ein paar neuen APIs umsetzbar wären.


    Für die Modlisten braucht es eigentlich nur eine API um alle Modverzeichnisse auszulesen,

    eine API um die gerade gewählten Mods zu bekommen und eine API um die Mods zu aktivieren und deaktivieren:


    Das sind in LUA der CommonAPI2 technisch zwei Funktionen


    commonapi._native.setModListCallbackFn(savegamemodlistcallback);

    commonapi._native.setActiveModList(modlist)


    Und ein paar Filesystem Funktionen um das Dateisystem zu lesen..



    Und hier mal eine C++ Template Funktion aus der CommonAPI2 Callback Routine, um den Arbeitsaufwand von UG einzuschätzen:

    UI Modliste des Ladedialogs von TPF2 nach LUA:


    Eine C++ Template Funktion brauche ich, da sich das Speicherlayout der UI Liste pro Build ändert.

    UG hat direkten Zugriff auf Hilfsfunktionen und müsste sich daher nicht mit Pointer casts rumschlagen oder lastGoodId...

  • Ups , das scheint ja ein Heidenaufwand zu sein für UG . Wohl zu teuer die Zeit dafür ^^


    Für eine Verbesserung hat dann Urban Games wohl keine Zeit . Hmm , anscheinend sind die Käufer wohl nicht so wichtig für UG .

    MfG Gaga


    Weisheit stellt sich nicht immer mit dem Alter ein . Manchmal kommt auch das Alter ganz allein .


    AMD Ryzen 5 Six-Core 3,60 GHz , Ram 32 GB , Geforce GTX 1080 TI 8 GB .

  • Just wanted to say that I never had a single problem with this API, and I love the additions you made with (like the Line Destination thingy, loved that). I also clearly understand your opinion about UG communication, which is nearly nonexistent. I hope you'll have more answers about that, I have 0 knowledge about coding so I can bring answers myself.

  • CommonAPI 1.6.20200728 oder älter wird nicht mit der Vulkan Version funktionieren und explodieren, ich habe euch gewarnt...

    Danke für die Warnung, die angekündigte Explosion mit Vulkan (interessante Wortwahl..?) habe ich mir etwas spektakulärer vorgestellt, aber naja... Der Failback Mechanismus funktioniert ja recht gut.


    Jedenfalls kann ich als Modder wieder nur sagen, dass das Modden ohne CommonAPI für mich deutlich anstrengender ist.

    Die UG Konsole ist zwar nicht schlecht (und teilweise auch praktischer), aber durch die fehlende Verbindung zu anderen Threads bin ich weiterhin auf die CommonAPI Konsole angewiesen. Das merke ich gerade jetzt besonders, da ich an einer Mod mit Gamescript und Gui dran bin, und da nützt es wenig, wenn die Konsole in einem isolierten Thread ist...


    Daher hoffe ich, dass für die Zukunft eine Lösung gefunden wird. Mit dem neuen Mitarbeiter bin ich da aber eigentlich zuversichtlich;)

    Aktuell switche ich aber erstmal wieder auf stable

  • Ja, es müssen X Fragmente neu gefunden werden. Außerdem muss ich mit dem Umschalten der Renderer herumschlagen.


    Eigentlich war der Plan die ganze UI dann per UG UI Toolkit umzubauen, das wird wohl aber nichts, wegen vielen technischen Problemen.

    Das ich da im Start Menü überhaupt via LUA die TPF UI anspreche ist nicht vorgesehen. Der Hauptentwickler für den UI Code ist wohl fassungslos, das ich da überhaupt dran komme.


    Wenn man bei OpenGL bleibt, besteht zumindest Hoffnung. Aber viele andere Fragmente für TPF2 sind Panne und so kann ich da noch keine Entwarnung geben.


    Bei Vulkan ist das so eine Sache für sich. Ich muss da schauen während TPF seine UI baut, die richtigen Vulkan Funktionen oder eben sogar TPF2 Code anzusprechen.

    Vulkan ermöglicht, mehrere Devices anzusprechen, gleichzeitig. sprich auf Intel GPU Rendern wenn es eine dedizierte Karte gibt und all so Feinheiten.

    OpenGL ist da eben viel einfacher, das braucht Zeit die ich eigentlich gerne in andere Dinge stecken wollte.

  • marcok_78 Zitat Wiki

    Vulkan – zunächst Next Generation OpenGL oder glNext genannt – bezeichnet eine Computergrafik-Programmierschnittstelle, die quelloffen ist und auf die Entwicklung plattformübergreifender Anwendungen mit dem Schwerpunkt auf 2D- und 3D-Grafik zielt. Mit der Arbeit an der Schnittstelle wird mehr Rechenleistung durch hardwarenähere Programmierung als bei OpenGL erzielt. Dies entspricht einem geringeren Abstraktionsgrad der Schnittstelle. Auf diese Weise sollte der für OpenGL notwendige Treiberüberbau reduziert werden.


    LINK https://de.wikipedia.org/wiki/Vulkan_(API)

    Bekennender TPF 1 Spieler und Schönbauer

  • Ich habe mal eine DLL gebaut die mit Beta 31340 funktioniert. Zurzeit nur im OpenGL Modus.

    Beachtet, da sich die Initialisierung des Renders erheblich geändert hat,

    somit gibt es keine Möglichkeit eine DLL anzubieten, die auch mit älteren TPF2 Versionen funktioniert!


    Daher, solltet Ihr auf die stabile TPF2 zurückkehren wollen, wird diese Version implodieren. Sichert die alte CommonAPI2 Version für die stabile Version.

    Auch wieder mein eindringlicher Hinweis: ICH HABE EUCH GEWARNT!


    So damit darf VacuumTube weiter seine Scripts debuggen :)

    Im Vulkan Mode fehlt die UI, technisch sollte aber alles im Hintergrund auch funktionieren, wenn nicht bitte um Rückmeldung


    1.6.20201220-dev

    - add commonapi.rerequire

    - support for OpenGl Renderer on TPF2 Beta 31340

    - Warning: This version only supports TPF2 Windows Beta 31340 in OpenGL mode!


    Und ja, ich hab schon Ideen zu einem CommonAPI2 Vulkan Overlay, nur Vulkan ist eben eine andere Hausnummer da ich da erst mal eine Möglichkeit finden muss, die richtigen Vulkan Funktionen aufzurufen und dann auch noch im laufenden Renderbetrieb umzubiegen.

  • Es rendert, es crasht, aber es zeigt ein CommonAPI2 im Vulkan Render Modus!


    Damit ist erst einmal bewiesen, das auch CommonAPI2 im Vulkan Modus technisch möglich wäre. Einen Zeitplan habe ich erst mal nicht.


    Der Vulkanrender basiert zurzeit technisch aus einem Wilden Mix aus

    Meinem Vulkan Render (Hook eines laufen TPF2 Vulkan Renderer, Frame Management)

    imgui vulkan referenz render, (Font Texture Uploader, ImGUI zu Vulkan Vertex Code)

    mesa overlay render (Pipeline, um das fertige Frame aus TPF2 wieder in die Graphik Pipeline zu bekommen und wieder zurück )


    Das hat jetzt 4 freie Tage verbraucht ||

  • 1.6.20201226-dev

    So die meisten Probleme in Vulkan Render sind beseitigt, nun sollte man auch das Fenster verändern können, ohne das TPF2 sich beendet.


    Bitte schaltet euer TPF2 erst mal in den Fenster Modus, dann ist es einfacher zu sehen ob etwas kaputt geht


    Sollte es zu einem Crash kommen, bitte ich eine stdout.txt anzuhängen, mit diesen Einstellungen:

    settings.lua von TPF2 ( \Steam\userdata\<userid>\1066780\local ) uploadCrashDumps = false und rendererDebugMode = true setzen

    settings.lua der CommonAPI2:


    return {
    uiscale = 1,
    enablelinedestination = true,
    fixscripts = true,
    buildoverwrite = "",
    verbosity = 99,
    disablenative = false,
    enableluasocket = false,
    }


    rendererDebugMode nach dem Testen wieder auf false stellen. TPF2 kreiert ein Haufen Vulkan Warnings, eure FPS und SSD werden dankbar sein!


    1.6.20201226-dev

    - support for OpenGl & Vulkan Renderer on TPF2 Beta 31379

    - In Vulkan Render: AltGR + c will disable rendering hook for perfomance tests

    - Warning: This version only supports TPF2 Windows Beta 31379!



    Mich würde Interessieren wie die Perfomance des Renderns so ist. Außerdem Kompatibilität mit Dritt Software, AMD Vulkan auf Windows usw...

    Technisch muss das fertige Frame abgeholt werden, die CommonAPI2 UI drauf gemalt und dann wieder in die Present Pipeline kopiert werden. Das sollte alle Grafikkarten eigentlich gut können.

  • Using:

    Build: Build 31379 Windows 64-bit

    commonapi2.init 20201226

    CommonAPI2Native: stdout.txt logging enabled

    TPF2 Build 31379

    Found device #0: GeForce RTX 2070 (id: 7943, vulkan version: 1.2.155, driver version: 1930838016 [460.89.0.0], vendor id: 4318 [Nvidia])


    In the attached, I have the mouse pointer hovering over the 'X' that should close the 'Dear ImGui Metrics' window.

    If I actually click on that 'X', the game will crash. I know it is easy to avoid -- I can just hit the Escape key like the graphic suggests, but if you can trap it, you might prevent some people complaining about it.

    This happens with both the Vulkan and OpenGL renderers.


    When one is actually following the instructions, this version of CommonAPI2 seems to be working well so far. There certainly doesn't seem to be any frame rate hit for having the API visible on screen.

  • Thanks for testing this version and great to see it does indeed work.


    The window "imgui metrics" is a internal debugging tool so I can see what happens in the internals. (It shows a warning that it will crash your game if you don't use a debugger)


    I will try to remove this window in builds as soon as the renderer is stable.

  • Definitiv die letzte Version für das Jahr 2020 ;)


    commonapi.dmp bzw. inspect.lua hat sich verschluckt bei TPF2 CVec3f und ähnlichen Typen über sol. Das sollte nun besser funktionieren. Und damit man da nicht erschlagen wird mit metatables wird die Ausgabe eingedampft ein bisl, sollte bei StreetProposal helfen. (Wer das gar nicht haben möchte, kann auch { metatables = 0 } als zweiten Parameter angeben oder 2 für Leute wie mich, die wirklich alle Infos aus TPF2 raus quetschen wollen.

    1.6.20201231-dev

    - Enable disclaimer in error messages again

    - Fix translation missing in native code

    - Fix commonapi.dmp error in sol type metatable mt.pairs function

    - commonapi.dmp metatable reduced output when mt.__name or mt.__type.name is found


    (Nur für die Windows Steam Beta Version geeignet)



    Ich wünsche euch allen ein erfolgreiches und gesundes Jahr 2021

  • TPF2 Windows Beta 31408 funktioniert mit:


    1.7.20210105-dev

    - support for OpenGL & Vulkan Renderer on TPF2 Windows Beta 31408 (not compatible with old versions)

    - add inspector window using tpf ui

    - add menu to commonapi button in tpf ui

    - tpf ui wrapper changes:

    - autorebuild ui if uilist changes via stepfn

    - support changeonenter

    - use id as caption failback

    - TextInput set inital text

    - Use protected pcall for fireEvents (so errors won't quit the game)


    Es gibt nun auch ein neues Fenster um Infos über Entities zu erhalten, (es zeigt alle Elemente, nicht nur eine Zusammenfassung wie das UG Fenster).

    Des weiteren habe ich auch ein Trace Fenster für guiHandleEvent (10 Events). Das ist aber alles nur rudimentär..



  • Sorry eis_os. Ich verstehe nur noch Bahnhof....Meine API funktioniert seit Beginn. Mit ein bischen Try and loose habe ich auch viel verstanden. Bringt das jetzt etwas für mich als Normal-User oder ist das eher für Modder und Entwickler hilfreich?

BlueBrixx