Beiträge von eis_os

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


    https://www.transportfever.net/wsc/index.php?search/


    Unten Filebase Eintrag anklicken, dann Transport Fever 2 anwählen.


    Den Suchbegriff ggf. mit "Baureihe 52" benennen, wichtig sind " drumherum. Alles was zu kurz ist wird nicht bei der Suche übernommen...



    Alternativ:

    Bei der Suche oben Lupe klicken, links neben den Suchfenster die Maus positionieren sollte die Suchparameter ändern: Von Alles auf Filebase Einträge, dann das Suchwort eingeben und danach die Suche ggf. anpassen... (Suche ändern)

    Sprachübersetzungen via _() im config/gamescripts funktionieren nicht (immer?) ordnungsgemäß.


    So meine Hitliste zurzeit:

    Mod stylesheets crashen das Spiel wenn man die Debug Console auf hat und ins Hauptmenü zurückkehrt. (stylesheet kann auch leer sein)

    Nicht gebundene Elemente (nicht an ein Layout Element), die eine Id haben via setId, sind via destroy ggf. nicht immer zu entfernen.

    Enzojz hat wohl gerade auch Probleme mit api.gui.comp.List.addItem


    comp.Component:addStyleClass führt nicht immer zu einem Redraw.


    Und wenn man mit UG Elementen arbeitet sind zwar laut getName() Textviews oder ähnliches, sind aber teilweise nur als IComponent gebunden.

    (Beispiel: Im Linienmanager die Stationsnamen)

    Bei checkboxen kann man nur mit einer gebunden onToggle Funktion den check status herausfinden.


    (Ich bin aber auch "Power User" und erstelle mal eben so 100 Elemente on the fly und lösche die auch im Inspector Fenster)

    Das ist kein gültiges Mod Verzeichnis:

    steam workshop mods sind in einem Verzeichnis <Zahl> im Workshop Verzeichnis.


    Alle andern Mods sind unter local/mods oder Spielverzeichnis/mods haben immer die Form <irgendwas>_1. Ohne _1 _2 _3 oder eine andere Versionsnummer ist es kein gültiges TPF2 Mod.
    Wer was anderes behauptet muss sich nicht wundern wenn es nicht richtig läuft.

    Wie geschrieben, dies ist eine Version die mit Beta 31408 läuft. Eine alte Version wird mit dieser Beta nicht funktionieren.


    Das Fenster ist für die Mod Entwicklung interessant. Primär für meine eigene. Im Endeffekt wird über Kurz oder Lang die Imgui basierte UI nicht mehr benötigt. (Das hängt aber auch von UG ab)

    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..



    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

    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.

    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.

    Ganz einfach, es gibt keine technische stabile Basis und die "Support Kosten" sind zu hoch. Da ich UGs Beta auch nicht unnötig beeinflussen möchte habe vorher alle Versionen entfernt. Ihr liest ja nicht und macht verrückte Sachen, wie "Mein TPF2 crasht", beschwert euch bei UG und sie sind Sauer auf mich. Oder CommonAPI2 ist nicht geladen und ich soll schuld sein...


    Warum ich keine Versionen verteile habe ich zusammen gefasst:

    CommonAPI2 Entwicklungsdiskussion, Fragen & Antworten


    Wenn es eine Dev Version gibt, ändere ich das erste Post hier:

    CommonAPI2 - Neue Versionen und wichtige Informationen

    Und nein, es gibt keine Dev Version für die stabile Version und die Version für die Beta ist veraltet.

    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 ||

    Ja, jede Funktion fügt Referenzen zu genutzten upValues hinzu, so das sie weiterhin im Scope sind.


    Zum guten Stil gehört daher, seine Variablen soweit lokal zu deklarieren, d.h. lokal zum Modul, zur Funktion usw.

    Einerseits, damit dein Mod nicht andere Mods beeinflussen bzw. dein Mod beeinflusst wird.

    Nichts ist ärgerlich wenn Mod A mit B nicht funktioniert und man dann stundenlang Debugging machen muss.


    Lua schaut technisch jeweils die upValues in den nächsten Variablenscope (auch ne interne Tabelle), ist da nix in der Tabelle, geht es in den nächst höheren Variablen Scope usw.


    PS: Die interne sind etwas komplizierter und das ist jetzt nur grob gesagt.

    Die Funktions-Deklarationen sind technisch eigentlich eine Zuweisung Variable = Funktionsobjekt, also syntaktischer Zuckerguss
    local function myFn() end
    ist dann:
    local myFn = function() end

    https://www.lua.org/manual/5.2/manual.html#3.5


    Und lua tabellen sind referenzen, dies muss man beachten wenn man doch ein deepcopy braucht...


    Sprich, dein result ist eine Tabelle, das ist intern eine Key Value Store und gar nicht mit c++ struct sondern eher mit std::unordered_map zu vergleichen.

    https://www.lua.org/pil/2.5.html


    Für C++ Indianer wichtig, man fängt bei 1 für numerische Indizes in einer Tabelle an, UGs API sind aber C++, so das wenn man zu TPF2 spricht, meist mit 0 beginnt, zum Beispiel defaultIndex bei der UI.



    PS: Und wenn du erst mal LUA Tabellen denkst zu verstehen, kommen metatable ins Spiel und versauen dir den Tag.