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 habe hier gerade mit einer Steam Windows Kiste sowohl mit 32019 als auch mit 31944 getestet.

    Es könnte noch sein das ne alte CommonAPI2Native.dll irgendwo im System/Lua Pfad rumliegt, aber auch das wäre sehr unwahrscheinlich.


    Die DLL bzw. das Spiel könnten so ungünstig im Speicher liegen via ASLR das ein Patch unmöglich wird, das wäre aber ein sehr seltenes Ereignis und ich wüsste nicht wie ich es testen könnte.


    Der RTTI Code schaut eigentlich in den Binärcode, nach nem String und errechnet daraus dann die Speicherposition.
    Haben andere Nutzer das selbe Problem? Wenn ja, bitte mal melden inkl. technische Daten: Arbeitsspeichergröße, Windows Build Version, etwaiger Virenscanner.

  • Das entfernen der weißen Überlagerung beim erstellen von Linien war eine mehr als gute Idee. So sehe ich das ganze besser.


    Ein Problem habe ich aber:

    Ich habe den Town Development-Mod heruntergeladen mit dem man das automatische Städtewachstum ausstellen kann. Er ist aktiviert und auch korrekt eingestellt dass er normal nix mehr bauen dürfte. Leider funktioniert das ganze aber nicht und die KI baut weiter.

  • Hallo eis_os,


    ich habe noch einmal ein bissche mit meinem bug (#1, #2) rumgespielt.


    Crasht nach ca. 20 Minuten.


    Crasht nicht, ca. 90 Minuten gespielt.


    Tropical an beiden stellen crasht auch.


    Es liegt also irgendwie an der skybox oder atmosphere?


    (Dazugehörige stdout.txt)


    Edit: Temperate map generator mit tropical environment schmiert auch ab, liegt definitv am environment.

    Einmal editiert, zuletzt von Jinks ()

  • Nur um ganz sicher zu gehen, Du bist im Karteneditor mit tropischer Karte, große Karte und im Karteneditor crasht es oder, so eine Karte gespeichert -> und dann laden und crash im weiteren Spiel?


    Jetzt habe ich gerade in der letzten Version die imgui Stats deaktiviert, dann könnte man schauen wie groß das Vertex Array wirklich ist. I

    Ist das CommonAPI Menü oben auf sichtbar oder unsichtbar geschaltet?


    Hab mal mein 3200G mit einer großen Karte ohne Aktionen 20 Minuten mit Tropical laufen lassen, bis jetzt kann ich das leider nicht reproduzieren...

  • Nur um ganz sicher zu gehen, Du bist im Karteneditor mit tropischer Karte, große Karte und im Karteneditor crasht es oder, so eine Karte gespeichert -> und dann laden und crash im weiteren Spiel=

    Ich erstelle eine Random Karte (oder lade eine aus dem Workshop) gehe in die einstellung, stelle environment auf TROPICAL (der rest scheint komplett egal zu sein, da hab ich schon viele Kombis durch) und starte das Spiel.


    Dann baue ich eine Linie auf, und lass die laufen. Nach 20-30 Minuten schmiert TpF2 ab. Ich glaube es passiert nicht, wenn man das Spiel einfach im Pause Modus belässt, vielleicht hatte ich da aber auch zu wenig geduld.


    Im Moment spiele ich eine große Tropische Map mit environment auf DRY, keine Probleme seit ca. 11:30.


    Edit: Und ja, das Menü ist sichtbar. (Wusste gar nicht, dass man das abschalten kann. :D)

    Einmal editiert, zuletzt von Jinks ()

  • Hast du vielleicht irgendeine Mod an, die etwas am Enviroment Tropical ändert oder hast du irgendetwas bei den Vanilla-Dateien verändert?


    Andere Frage: Mit ausgeschalteter und deinstallierter CommonAPI hast du den Fehler nicht?

    13! ≠ 13

  • Hast du vielleicht irgendeine Mod an, die etwas am Enviroment Tropical ändert oder hast du irgendetwas bei den Vanilla-Dateien verändert?


    Andere Frage: Mit ausgeschalteter und deinstallierter CommonAPI hast du den Fehler nicht?

    Siehe die originale Fehlermeldung, der Fehler ist in CommonAPI, bzw. in der Renderkomponente. Soweit ich nachvollziehen kann pfuscht kein mod am Tropical Environemt rum. (AKA es hat kein mod ein res/config/environment/)

  • Es gibt an der Stelle eigentlich nur zwei Möglichkeiten, entweder ich bekomme den Speicher gemappt in der Größe oder nicht.

    VK_ERROR_MEMORY_MAP_FAILED = -5 bedeutet ich bekomme meinen Buffer nicht mehr eingeblendet


    Und die Vulkan Spec sagt:


    https://www.khronos.org/regist…pMemory.html#_description

    Der Treiber kann das nicht mehr Mappen, weil der Speicher vielleicht fragmentiert ist. Der Code wird technisch bei jedem Render Present Pass aufgerufen und technisch sollte es ja wenn es einmal in den Speicher passt, das auch zukünftig mappen können :?:


    Ergo kann es sein einfach nicht mehr genügend Platz gibt im VRAM gibt, das würde dann zum Crash führen. Ich kann versuchen die beiden Buffer nacheinander zu kopieren aber eine Lösung auf Dauer wäre das dann auch nicht.


    Und für alle, sollte es morgen ne Beta Build geben:

    Nein, CommonAPI2 wird nicht direkt darunter laufen bei der angekündigten Änderungsliste ...

  • I will auch nicht ausschließen, dass der mesa Treiber da mist baut, wer weiss. AMD ist bei gamern ja eher rar.


    Das Komische ist halt, dass das nur mit einer von drei environment maps passiert, weil die machen an sich ja nicht so viel. Bisschen Licht, bisschen Skybox und Parameterisierung für den Wasser shader.


    Mesa hat nur eine Stelle an der VK_ERROR_MEMORY_MAP_FAILED auftritt für RADV und ansonsten finde ich dazu nur einen obskuren vkcube bug.


    Diverse Diskussionen rund um Vulkan behaupten man soll am besten seinen Speicher direkt beim Start mappen und dann behalten anstatt das in der Render Loop zu machen, wäre das hier eine Option?

    Bis auf den allerletzten crash ist der auch immer am IndexBufferMemory gescheitert, nie am VertexBufferMemory. Kannst du einen großen Block mappen und dann die pointer offsets selbst ausrechnen? Ich habe vage Anspielungen auf mögliche race conditions gesehen und du machst da 2 map calls direkt hintereinander...


    Ich mach gleich erst mal Updates und guck ob sich zufällig was am Treiber getan hat.

    Edit: Keine Besserung. Hab sogar mal AMDVLK statt RADV ausprobiert, hat keine Auswirkung auf den Fehler.

    2 Mal editiert, zuletzt von Jinks ()

  • Die Behandlung der Buffer basiert auf den imgui Beispiel Code und wird im Mesa Overlay für Vulkan ( Intel hat das zu Mesa hinzugefügt) genauso gemacht:


    https://gitlab.freedesktop.org…y-layer/overlay.cpp#L1238


    Also so total falsch kann das auch nicht sein :S


    Technisch ist aber CommonAPI2 kein Vulkan Layer, sondern klemmt sich zwischen Vulkan und TPF2.


    Es kann sein das TotalVtxCount zu groß wird und das der Inhalt der Daten nicht mehr dort rein passt. Ich muss mal schauen ob ich da mehr Debug Daten hinbekomme. Aber auch da ist die Frage, warum es dann TPF2 Klima abhängig ist


    Ich denke also eher daran, das mein Code genau da Probleme bekommt, weil etwas anderes nicht stimmt. Sehr komisch und mein 3200G läuft ja auch mit Mesa GIT aber ich hab da ne 4GB Resizeable Bar Einstellung, das ist eher ungewöhnlich für ein APU...

  • So wirklich Sinn macht das alles nicht. :/

    Ich hab jetzt auch mal versucht den Button nach dem Spielstart abzuschalten (Close Menu), mit dem Ergebnis das TPF2 immer noch das Zeitliche segnet, aber jetzt komplett ohne Fehlermeldung. Einfach weg.


    Schmeisst TPF2 dir was vor die Nase was so einfach nicht passt? Vielleicht ist ja auch einer von deren shadern problematisch, aber gerade noch gut genug, dass der durchrutscht wenn keiner zu genau hinguckt (aka n Overlay hinzufügt).

  • Wenn es ohne Render aktiven Render Code passiert, kann es noch sein, das die Fonttextur (einmalig geladen, nicht jedes Frame) zu einer Kollision führt, ich würde dich daher bitte, das mal ganz ohne installierten CommonAPI2 zu schauen, ob es auch passiert.

    Ich habe das Gefühl, das technisch der Renderer an der Stelle schon gestorben ist, wegen anderen Problemen und es erst an diesem Punkt auffällt...

  • Ich habe das Gefühl, das technisch der Renderer an der Stelle schon gestorben ist, wegen anderen Problemen und es erst an diesem Punkt auffällt...

    HEUREKA!


    Scheinst Recht zu haben. Deine Fehlermeldungen sind aber schöner...



    Wie lasse ich diese Information denn jetzt möglichst effizient UG zukommen?

  • Aus aktuellen Anlass: (Cross Post)


    Bitte deinstalliert CommonAPI2 komplett wenn ihr die aktuelle Beta nutzt,

    Ich weiß nicht was UG gemacht hat, aber mein ganzes UI System gebaut mit TPF2s Bordmitteln funktioniert seit Build 33262 gar nicht mehr. Und ich rede hier nicht von exotischer Nutzung oder das laden meiner C++ DLL / so.


    Sprich der Entity Inspector und das untere CommonAPI2 Menü im Spiel crasht das Spiel mit wilden Fehlermeldungen wie diesen hier:

    ../../src/Lib/UI/MemoryManager.h:28: std::unique_ptr<_Tp> UI::MemoryManager::Remove(T*) [with T = UI::CComponent]: Assertion `it != m_data.end() && "Item is still owned by UI code."' failed.


    Auch erhalte ich komische Fehler vom Texturmanager bezüglich element:destroy() unter Linux. Oder das ganze Spiel bleibt im Crashhandler einfach stehen. (Ein Dump wird erzeugt, das Spiel aber nicht beendet)


    Auch funktioniert mein Failback UI auch nicht mehr. Ich habe keine Ahnung warum man alle UI Bemühungen immer torpediert... So funktionieren natürlich Failbacks nicht, wenn die UI implodiert.



    ---


    If you use TPF2 Beta Build 33262 uninstall CommonAPI2 completely .


    I don't know what UG changed, but my whole UI System build with UGs API Toolkit doesn't work anymore since Build 33262. Even removing all failback start menu code, dll and so on.

    The entity inspector and the lower CommonAPI2 menu while in game crashes the game with odd error messages like:

    ../../src/Lib/UI/MemoryManager.h:28: std::unique_ptr<_Tp> UI::MemoryManager::Remove(T*) [with T = UI::CComponent]: Assertion `it != m_data.end() && "Item is still owned by UI code."' failed.


    I get some random Texturemanager errors aswell, if I try to use element:destroy under Linux. The whole game stops in the crash handler after creating a dump, but the game won't quit properly.


    I simply don't understand that all ui work get constantly get crashed, I can't write proper failbacks if the ug ui implodes...

  • WICHTIG:


    Habt Ihr keine Beta/Testversion von TPF2, so nutzt bitte weiterhin:

    CommonAPI2 - Neue Versionen und wichtige Informationen


    Für Build 33262 Beta hab ich mal meinen jetzigen Stand zusammengepackt: 1.7.20210620-dev


    Im großen und ganzen läuft diese Version mit der Beta Version.

    Es gibt nun auch ein Rendermode Einstellung, wenn UG nicht ständig irgendwas an der UI herum bastelt, würde ich mehr Funktionen portieren, aber es gibt leider zu viele Stolpersteine bei jeder Release.

    2 = Die CommonAPI2 Render Pipeline wird nicht genutzt, damit hat man leider keine Möglichkeit Mods zu verwalten, aber damit kann man meinen Vulkanrender komplett abschalten...





    Für Build 33345:

    Bitte nutzt buildoverwrite steam_33345_1

BlueBrixx