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


    Wie und wo in mdl Dateien labelLists definiert werden, steht in UG Modding Anleitung > mdl > label_list. Ich kann dir leider nicht erklären wie mdl Dateien funktionieren, das würde den Rahmen sprengen.

    = Ich habe keine Lust bzw. Zeit dich erst mal einzeln zu Fragen welches Modell du überhaupt ändern möchtest, dir den Pfad zu dem Model herauszusuchen und die dann ggf. die Zeilennummer herauszusuchen. Die Antwort hast du schon bekommen...


    Du erwartest eine einfache Antwort ohne überhaupt alle nötigen Basisinformationen zu geben.... Erst nach einer weiteren Antwort deinerseits wurde ich unentspannt... und deine weiteren Beiträge machen es nicht besser.
    Hast du eine Supportanfrage mit hinreichend genügend Informationen kannst du sie auch gerne weiterhin stellen...Ggf. wird dir ein andere Benutzer sogar helfen können..

    Wie man im anderen Diskussionsfaden sieht, habe ich keine neue DIN bis jetzt, du kannst dich aktiv beteiligen.

    Wenn es geht bitte Fonts mit https://de.wikipedia.org/wiki/SIL_Open_Font_License verlinken, dann schaue ich mir das an...


    -edit-

    Für Font Vorschläge bitte den Thread hier nutzen

    -/edit-



    Nur so am Rande.

    Ich habe nichts gegen Fragen, aber wenn man zweimal auf die TPF2 Wiki https://www.transportfever2.co…modding:resourcetypes:mdl hinweist, sollte es genug sein.

    Das ist kein allgemeines Hilfeforen, nur weil du etwas nicht verstehst / kennst, bedeutet es nicht, das ich irgendeine Verpflichtung habe dir irgendwie eine Schritt für Schritt Anleitung darzubieten.


    Zitat

    Models are stored in the .mdl format in the res\models\model\ folder. The format consists of geometric information for different levels of detail (LODs) and metadata.


    Konstruktive Fragen beantworte ich immer gerne:

    "Ich habe im meinen TPF2 Ordner kein res\models\model\ Verzeichnis gefunden, ich möchte das Schild X aus dem Paket Y ändern. Hier der Link zum Mod Download... "


    In der Regel bekommt Ihr trotzdem erst mal eine neutrale Antwort.

    Siehe dazu hier: RE: CommonAPI2 Entwicklungsdiskussion, Fragen & Antworten


    Ich erwarte ein Mindestmaß an eigener Mitarbeit... wenn dieser nicht ersichtlich wird, wird mein Ton halt direkter.


    -edit-

    Meine Meinung dazu:

    Wenn du keine MDL Dateien kennst ist es ggf. besser wenn ein Modder sein Projekt entsprechend anpasst.

    Ggf. werde ich ne Lösung erarbeiten, damit Fonts ohne mdl Dateien zu ändern für jeden Text einzeln definieren werden kann.

    Für viele Modelle wäre es besser schon etwas voreinzustellen, als wenn bei jedem Renderaufruf jeder Text nach am Anfang nach einem Steuerzeichen überprüft werden muss...

    Hast du dir schon mal eine mdl Datei angeschaut?

    Hast du dir überhaupt mal die verlinkte Wiki angeschaut?

    Nein, das scheint nicht der Fall zu sein...


    Das ist für Modautoren, die eine Mdl Datei ausliefern und die da einen bestimmten Font aus der Liste auswählen wollen.


    Is es so schwer eine Zeile in eine mdl Datei bei einem label hinzufügen:

    capifont = "SansSerifBold",


    Bei einem beliebigen Fahrzeug, suche nach einem label in den Metadaten

    (Sollte der params block nicht vorhanden sein, diesen selber hinzufügen)

    Code
    type = "LINE_NAME",
    params = {
       capifont = "DotMatrix",
    },

    Fertig.


    Und das Font Paket ist ganz einfach ein normaler Mod, der wird genauso installiert und aktiviert wie alle anderen Mods... Da machst du gar nichts dran, du musst noch nicht mal die Ladereihenfolge beachten...

    Ampeln

    Das ist noch nicht so fertig wie ich es mir wünsche

    Mir fehlt noch eine Möglichkeit für ein optische Markierung eines einzelne Models am Ampelmast.


    Nach dem die Ampelkonstruktion fertig gebaut wird,

    hast du beim Konfigurationsfenster ein "Select Animation Source" Knopf


    Als erstes brauch das Ampelasset eine Quelle, das machst du mit "Select animation source" und wählst die Kreuzung mit vorhandener Ampelanlage aus.

    (Alternativ kann auch ein Bahnübergang herhalten...)


    Jede Ampel am Asset Mast (wird von Mastfuss gezählt) kannst du dann eine UG Ampel zuweisen. "Select Traffic Light"

    das kann für die Fußgängerampeln unmöglich sein, da nimmt man am besten die einzelne Fußgängerampel auf der Gegenüberliegende Straßenseite.


    Wenn man fertig ist, kann per NodeEditor die UG Ampelmasten verstecken...


    Zur Info der BASE_NODE_TRAFFIC_LIGHT:

    Ich kenne UGs Schema nicht, wie Ampelteile und die jeweilige Animationszeit berechnet wird.

    Der Inspektor kann mit CommonAPI2 euch den Inhalt eines api.type.ComponentType.BASE_NODE_TRAFFIC_LIGHT anzeigen,

    das ist normalerweise nicht durch UG an LUA gebunden. Hier merkt man dann auch das die Masten an sich auch "animiert" sind.


    at18 (0x18 Hex in der Struktur) hat für jedes mögliches "state" eine List mit Ampeln die Rot zeigen sollen. (Ampeln die nicht in der Liste sind, sind Grün)
    edgeIdLocked hat für jeden state Wert eine Liste der Edges die "gesperrt" werden. (Debug Laneanzeige: Zwei rote Querstriche)

    stateTimes = für die aktuelle Ampelphase die Animationszeiten. (Startzeit des internen Zeitgebers)


    Kompliziert ist: Nicht alle Nodes liegen hintereinander. Wer eine besser Möglichkeit kennt oder mehr Infos erforschen kann, gerne.

    Bitte beachtet, die Animationsanzahl der Modelle kann von UG Ampel Konfiguration zu UG Ampelkonfiguration abweichen.


    UG Ampeln können Ampelphasen bei keinem Verkehrsteilnehmer überspringen, wie es das macht bzw. errechnet ist mir ein Rätsel.

    Aber die Linux Binärdateien zeigen NonPauseStateCanBeSkipped & PauseCanBeSkipped im TrafficLightSystem::Update2 an.

    Auch wird die transport::EdgeUseManager::GetIncomingOccupiedLength errechnet. Aber wie gesagt, das meiste bleibt für mich eine Blackbox.


    Die eigentlichen Fahrzeuge kennen dann wiederum keine Regeln, sie werden nur durch gesperrte Edges von einer Weiterfahrt gehindert.

    Züge nutzen ein anderes Signalsystem. Daher ist es quasi unmöglich das Eisenbahnverkehr auf Tramschienen wechseln könnten...




    Zum Thema Labellist / Fonts:

    Du lädst das Fontpaket herunter, aktivierst es im Spiel. Dort sind die ganzen Fonts (ttf) drin.

    Wie und wo in mdl Dateien labelLists definiert werden, steht in UG Modding Anleitung > mdl > label_list. Ich kann dir leider nicht erklären wie mdl Dateien funktionieren, das würde den Rahmen sprengen.

    Über deinen Beitrag ist ein Beispiel für eine mdl.


    Siehe dazu auch die Modding Dokumentation von UG:

    https://www.transportfever2.co…ourcetypes:mdl#label_list


    Mögliche Werte für capifont sind:

    Code
    SerifBold
    SerifItalic
    SansSerif
    SansSerifItalic
    SansSerifBold
    SansSerifBoldItalic
    TrafficSignA 
    TrafficSignB
    TrafficSignC
    DotMatrix

    Darüber hinaus gibt es nun auch noch die Condensed für SansSerif:

    Zitat

    SansSerifCondensed

    SansSerifCondensedBold

    SansSerifCondensedItalic

    SansSerifCondensedBoldItalic

    Neue Version 20250511


    Nun gibt es 3 neue Fonts für eure Konstruktionen bzw. für eure Fahrzeuge.

    Auch sind Varianten wie Fett & Kursiv erhalten.


    Diese können einfach in den params Block hinzugefügt werden, der Schrifttyp kann dann auswählt werden.

    Auch wenn die Schrifttypen festgelegt sind, könnt Ihr auch eure eigenen Fontpacks erstellen.

    Eine Liste aller Schrifttypen finden Ihr im Fontpack unter res\capi_config\fontMaps\eis_os_fontpack.lua

    Code
    labelList = {
                labels = {
                    {
                        type = "LINE_NAME",
                        params = { 
                            capifont = "DotMatrix", 
                        },
                        ...
                    },


    Viel Spaß



    New Version 20250511

    Now it's possible to use 3 new fonts for construction and for vehicle labels

    Additional variants are bold and italic.


    The font selection can be added to the params table of a labelList label.

    While the font types are fixed, it's possible to create your own font pack.

    A whole list of all font types can be found in my font package, in the file res\capi_config\fontMaps\eis_os_fontpack.lua


    Have fun



    Changelog:


    1.9.20250511

    - FontMapRep: fix FontMap lua binding in UG Console after game reload

    - FontMapRep: enabled sans serif condensed variants

    - FontMapRep::get should check for nullptr if entry is not found

    - FontMapEntry: add default constructor

    - FriendlyError for TramTrackRep and CatenaryTrackRep

    - FlexStreets: fix TramTrackData lua binding in UG Console after game reload

    - fix GameStateConstructor_Hook debug output


    1.9.20250504-dev

    - inspect window: add CONSTRUCTION(_LABELTEXTS)

    - internal: add NewCommands infrastructure

    - ConstructionAddon: add new internal cmd setConstructionParams

    - internal: add unconditional getGameStateFromEngine

    - LabelSystem: use unconditional getGameStateFromEngine, newevents not needed anymore

    - LabelSystem: add FontMapRep system, mdl support labelList -> label -> params -> capifont = "Fonttype"

    - FriendlyErrors: add error output with file links for CommonAPI2 provided repositories

    - Better error handling for luaTPF::access_error, show parent map keys

    - Windows version: add ressource with manifest and build version into dll




    Downloads:

    >>> CommonAPI2 Download

    >>> Streetpackage Download

    >>> Tram Tracks Download

    >>> Font pack

    Speedmaster

    Lies dir meinen Beitrag durch, als Antwort zur MaikC.


    Die Frage war, warum es Ampeln vor 1950 gibt, aber das passende Werkzeug nicht verfügbar ist bzw. erst ab 1950.

    (Man kann das Trafficlayer als alternative Nutzen, das ist aber ggf. Umständlicher)


    PS: Mit CommonAPI2 ist es sogar möglich per NodeEditor nun verschiedene Ampeln auszuwählen... UG kann nur immer das neuste beim Bau einer Straße anbieten.

    Also ja, es wäre absurd zu behaupten ich wüsste das nicht...

    Weil UG es fest so im Spiel hat und es keinen Programmcode gibt, der da nachschaut ob eine Ampel schon früher verfügbar ist.

    GetStreetToolsConstructionsInput;

    ...

    variable = 1950;

    std::string::createFromChar(&icon, "ui/streets/traffic_light_control_new.tga");

    ..


    res/config/traffic_light/traffic_light_a.lua
    yearFrom = 1912,



    Kurios ist, das es [email protected] gibt... Also von den UI Bildchen her wäre es möglich...

    Es ist keine Verkehrssimulation.

    Es gibt in TPF2 wenn ich mich recht erinnere ein Bias, ab einem bestimmten Jahr fängt das mit dem Autoverkehr an. Das war soweit ich mich erinnern kann fest im Spiel. Sprich nicht jeder besitzt eine Kutsche.


    Konstruktionen gelten nicht als Hauptstraßen. Wenn du also irgendwelche Hauptstraßen hast, dann gibt es Autoverkehr.


    Es gibt genügend Screenshots mit erheblichen Autoverkehr und Staus, ist die Aussage kaum Autoverkehr relativ.


    Sims besitzen halt ein Auto oder nicht.
    Wenn deine Stadt einen vernünftigen ÖPNV hat, wird es kaum Autoverkehr geben.


    TPF2 ist kein Verkehrsgigant. Versuche nicht mit einer Zange einen Nagel in eine Wand zu schlagen.

    Prototypen gibt es nun hier:

    Hallo,


    wie angekündigt gibt es ein neue Funktion zum Nutzen verschiedener Fonts für Labels.



    Code
        labelList = {
                labels = {
                    {
                        type = "LINE_NAME",
                        params = { 
                            capifont = "DotMatrix", 
                        },
                        ...
                    },


    Es gibt nun ein FontMap Repository (api.res.commonapi.fontMapRep)


    Ihr könnt eurer eigenen FontMaps / Packs erstellen und diese werden als Mod eingebunden. (Daher kann man auch via Savegame ModManager verschiedene Fontpacks nutzen)


    Für mögliche Werte für capifont, schaut einfach in das Fontpack bzw. api.res.commonapi.fontMapRep.get(0).

    Es gibt TrafficSignA B C für verschiedene Epochen, aber zurzeit wird immer die alte DIN genutzt.


    Das fontMapRep kann auch via api.res.commonapi.fontMapRep.setActive(idx) umgeschaltet werden.


    Für das Debugging gibt es noch diese Funktion:

    commonapi._native.LabelSystem.changeTestFont("DotMatrix", "Doto/static/Doto-Bold.ttf")



    Solltet Ihr einen Fehler bei commonapi Repositories machen,
    bekommt Ihr unter Windows nun ein hilfreiches Fehlerfenster. Die Dateinamen wird beim Laden überprüft.

    Fehlermeldung kann in die Zwischenablage kopiert werden, und man kann auch zur fehlerhaften Datei springen.



    Eine weitere Funktion für Konstruktionen ist leider noch nicht fertig. So viel sei verraten es hat mit stoppenden Autos zu tun ;)

    -edit-

    FontMapEntry scale ist ohne Funktion. Da gibt es keinen einfachen Patch um das zu ermöglichen... daher erst mal nur Platzhalter...



    1.9.20250504-dev

    - inspect window: add CONSTRUCTION(_LABELTEXTS)

    - internal: add NewCommands infrastructure

    - ConstructionAddon: add new internal cmd setConstructionParams

    - internal: add unconditional getGameStateFromEngine

    - LabelSystem: use unconditional getGameStateFromEngine, newevents not needed anymore

    - LabelSystem: add FontMapRep system, mdl support labelList -> label -> params -> capifont = "Fonttype"

    - FriendlyErrors: add error output with file links for CommonAPI2 provided repositories

    - Better error handling for luaTPF::access_error, show parent map keys

    - Windows version: add ressource with manifest and build version into dll

    Meine Meinung, es gibt leider kein 100% Schutz vor Fehlinstallationen.


    Auch wenn es gelegentlich doppelte Ordner gibt, die Daten in der Zip Datei mit den Mod Ordner verpacken ist eigentlich die Regel hier:

    Code
    kokoloko_alstom_coradia_max_zug_1 
         \res\*
         \mod.lua


    Dann den Anwender sagen, kokoloko_alstom_coradia_max_zug_1 entpacken und diesen Ordner dann in mods kopieren.


    Andernfalls hast du Nutzer die kokoloko_alstom_coradia_max_zug_1(1) oder sonst etwas haben...

    Dank Licaon haben wir also die Möglichkeit DIN anzubieten, bei Peter Wiegel findet man noch andere Schriften, um diese anzuprobieren werde ich wohl eine Testfunktion einbauen müssen.

    Wie immer weniger ist mehr. (auch mehr Performance)


    DIN Die Lizenz ist nicht kompatibel. Bitte beachten, mit Schriftherstellern ist nicht zu Spaßen...


    Solange es keine Zugriff auf die Datei gibt, wird Sie nur Speicherplatz auf der SSD fressen... Ggf. dann auch noch ne Epoche im Verwendungszweck?


    Ich werde mir was für Stile (Europa/USA) ausdenken, aber das wird dann nur global und nicht per Savegame einstellbar sein... Ich hab zur keiner Zeit zugriff auf die momentane Spielzeit bzw. das (Bau)Jahr. Auch kann man Schriften nicht als Mod anbieten.


    Wer ne gute Lösung für ein Mapping hat, gerne.


    -edit-

    sabon: Die Lizenzkommentar war wegen der DIN Schrift an Vetkoplayzz gerichtet.

    Hallo allerseits,

    da nicht alle lesen ja meinen Mega Thread zu CommonAPI2, mal eine Frage an die Community.


    Direkt mal Grüße an das Urban Games Team - Ihr hättet eure Idee gerne umsetzen können, eure Engine kann das ;)


    Verschiedene Schriften sind via Label höchstwahrscheinlich bald via CommonAPI2 verfügbar.

    Technisch ist nur eine Auswahl via Zahl möglich, da ich die Schriftart nicht komplett durch das ganze Spiel als String "durchschleusen" kann.


    Damit die Renderzeit / Perfomance und die Schriften auch nicht total ausufern,

    schlage ich daher vor ein paar generische Schriften in Kategorien bereitzustellen und Modelle können diese dann auswählen.


    Für Dot Matrix würde ich Doto vorschlagen, leider kann man Sie aus der normalen Kamera Entfernung quasi nicht lesen, vielleicht hat ja jemand einen besseren Vorschlag :/

    https://fonts.google.com/?query=doto


    Also welche Schriften würdet Ihr gerne benutzen, bedenkt sie müssen Lizenz "kompatibel" sein, sprich man darf sie weiterverbreiten. Kleinere Dateigrößen bevorzugt...

    Um es Übersichtlicher zu gestalten, bitte schreibt den Verwendungszweck, den Namen und einen Link zur Quelle in eine Quellcode Box:


    Code
    Dot Matrix | Doto | https://fonts.google.com/?query=doto
    ...        |      | 



    Lato Bold / Noto Bold wird es auf jeden Fall geben... (diese sind schon im Spiel)

    Nun noch zum technischen Teil, die Nutzung wird ganz einfach sein, einfach bei params eine Zeile einfügen, hier mal ein Beispiel, ohne CommonAPI2 gibt es halt Lato...


    - English -


    It's likely that the next CommonAPI2 version allows selecting certain fonts for label texts.

    As I can only push a integer value through the game code, I will provide font categories.

    Too many font files would be performance overkill anyway.


    Simple add a source box with one or more entries:

    Code
    display usage   |  font name |  source

    Please note, the license should allow redistribution, so SIL Open Font License and small file size, latin 1 compatibility preferred

    Die Komponente fehlt laut Spiel.

    Eine gesperrter Node würde eher für einer Konstruktion sprechen. "frozenNodes".


    CommonAPI2 hat keine Toleranzgrenze ob eine ShapeList genutzt wird, außerdem wenn ich ne Shapelist benutze, bekomme ich die irgendwo vom Spiel "geliefert".


    Eine Funktion gibt es die eine ShapeList selber anfordert, diese ist in CustomTrafficLightCalcUserTransfsFn.

    Das kann aber nicht dazu führen, da ich einen Abfrage drin habe ob es überhaupt ne ShapeList gibt, und das nur beim Render aufgerufen wird bei einer Ampel:


    (Und wir sehen ja die Weiche, also unwahrscheinlich)

    Code
        void *typeidShapeList = ecs::typid::component::ShapeList;
        if (!ecs::EngineFn::HasComponent(gameState->ecsEngine, &entity, &typeidShapeList)) {
            return false;
        }
        ecs::component::ShapeList* shapeList = ecs::getComponentFromEntity<struct ecs::component::ShapeList>(gameState->ecsEngine, entity.id, typeidShapeList);


    Aber wie gesagt, einfach CommonAPI2 raus nehmen, geht es dann... Ich würde sage, es geht nicht. Mit CommonAPI2 Inspector ggf. schauen ob es da ne unsichtbare Konstruktion gibt.