Anfängerprobleme: der Überblick fehlt und die Mod funktioniert nicht

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the Transport-Fever Community

  • Hallo zusammen,


    ich habe gestern erstmals mit einem Modell für TPF begonnen. Ich möchte ein paar Sehenswürdigkeiten meiner Heimatstadt nachmodellieren und als Assets in TPF einfügen. Allerdings bekomme ich es nicht hin, das Asset auszuwählen. Sobald ich im TPF darauf klicke, um es zu platzieren, stürzt TPF ab.
    Ich habe als ersten Test eine "Skulptur" in BLENDER erstellt und dann mit dem PlugIn exportiert. Mit BLENDER kenne ich mich soweit aus, dass ich 3D-Modelle erstellen kann. Jedoch mit dem Erstellen von Mods für TPF kenne ich mich gar nicht aus. Ich habe mir einige Tutorials durchgelesen und auch Videos angesehen. Allerdings geht es entweder nicht um Assets, sondern Fahrzeuge, oder die Videos dauern 2 bis 4 Stunden und sind zum Teil ziemlich verwirrend.


    Hier ein kurzer Überblick über das, was ich gemacht habe und wie ich die Datei- und Ordnerstrukturen von anderen Asset-Mods übernommen habe:


    BLENDER
    Zuerst habe ich über "Create TF OBject" ein LOD eingefügt. Darunter habe ich dann einen Cube hinzugefügt, den ich zur Skulptur verarbeitet habe. Ich habe Material erstellt und dann per UV-Export exportiert, bearbeitet und wieder in BLENDER geladen. Anschließend erfolgte dann der Export: Model type "other".


    ORDNERSTRUKTUR
    Damit ich auch alle Dateien und Ordner habe, habe ich mir die Mods anderer User angesehen und folgende Struktur angelegt:


    Im res-Ordner im Mod-Ordner "skradan_skultur_1" befinden sich:
    <ul style="font-size: 13px; background-color: rgba(0, 0, 0, 0);">[*]construction

    • assets

      • buildings

        • skulptur.con


    [/list]<ul style="font-size: 13px; background-color: rgba(0, 0, 0, 0);">[*]models

    • material

      • asset

        • Material.mtl
    • mesh

      • asset

        • skultur

          • skulptur.msh
          • skulptur.msh.blob


    • model

      • asset

        • skulptur.mdl


    [*]textures

    • models

      • asset

        • skulptur.tga
    • ui

      • construction

        • assets

          • buildings

            • skulptur.tga<br style="background-color: rgba(0, 0, 0, 0);">



    [/list]<ul style="font-size: 13px; background-color: rgba(0, 0, 0, 0);">[*]image_00.tga
    [*]mod.lua
    [/list]
    Verhalten im TPF
    Ich kann den Mod im Menü von TPF auswählen und aktivieren. Gehe ich dann auf eine Map, kann ich ihn auch unter Buildings sehen (d. h. das Vorschaubild). Klicke ich ihn aber an, um ihn zu platzieren, stürzt TPF ohne Fehlermeldung ab.


    Könnte es an der von mir gewählten Ordnerstruktur liegen, an den .mdl, .msh oder .lua-Dateien oder ggf. bereits ein Fehler bei der Exportierung aus Blender vorliegen?


    Ich bin leider total ratlos und auch die Videos und Tutorials helfen mir nicht wirklich weiter, weil dieses Problem dort nirgends vorliegt und somit auch nicht gelöst wird.


    Viele Grüße,
    Skradan

  • Der Model Viewer stürzt dabei auch ab und wirft die angehängte Meldung aus. Allerdings werde ich daraus absolut nicht schlau.


    Die Skulptur.con sieht so aus:


    local zPos = 0


    function data()


    return {
    type = "ASSET_DEFAULT",
    description = {
    name = _("Skulptur"),
    description = _("Skulptur"),
    },
    availability = {
    yearFrom = 1850
    },
    buildMode = "MULTI",-- SINGLE = einzeln, MULTI = mehrfach, BRUSH = sprühen
    categories = { "buildings" },
    order = 518610905,
    skipCollision = true,
    autoRemovable = false,
    params = {},
    updateFn = function(params)
    local result = { }


    result.models = { {

    id = "skulptur.mdl", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, zPos, 1 }
    } }

    result.terrainAlignmentLists = { {
    type = "EQUAL",
    faces = { }
    } }


    return result
    end
    }


    end

  • Was für ein Material nutzt du? Steht da eventuell SKINNING_TEXTURED? Würde auch darauf hindeuten, dass du das alte Plugin für TF nutzt.

    Ja, es steht SKINNING_TEXTURED in der Material-Datei. Ich weiß nicht, ob ich ein altes Plugin verwende. Ich weiß nur, dass mir nicht so viele Optionen angezeigt werden, wie hier im Forum auf Screenshots zu sehen ist. Allerdings kann ich nicht sagen, ob ich das Plugin unter dem richtigen Link runtergeladen habe.

  • Wenn da skinning_textured steht benutzt du defnitiv das veraltete plugin.


    Das neue gibts hier
    Blender Import/Export Addon (aktuell Version 0.5.3 - Alphatest)


    Noch zur Erklärung, das alte plugin hatte als default einstellung "skinning_textured". Das neue hat "reflective_normal" als default. Das wird zwar in TPF (für Fahrzeuge) egtl auch nicht benutzt aber für den Anfang ist es ok, solange man sich noch nicht in die DDS-Texturen eingearbeitet hat und es bringt TPF/TF nicht zum Absturz.


    PS: Willkommen im (Modding)-Club
    PPS: GTX 770? Schaut nachm Notebook aus, die hat mein ASUS auch :D


  • Vielen Dank für den Link! Habe das neue Plugin gleich installiert und werde mal ausprobieren, ob das Modell zumindest im ModelViewer angezeigt wird. :) Ebenfalls vielen Dank für die Erläuterung! Mit DSS wollte ich mich erst beschäftigen, wenn es mit der Anwendung meiner Mods in TPF funktioniert.


    Ja, GTX770. Mein Rechner ist von 2013. :D

  • Also, es hat sich auf jeden Fall etwas geändert. Leider nur die Fehlermeldung. :D
    Ich habe es nun mal mit einem anderen Modell probiert. Allerdings klappt das auch nicht wirklich. Im Ordner-Menü des ModelViewer wird mir hinter dem Ordner meines Modells eine -1 angezeigt. Keine Ahnung, ob das vielleicht auch etwas zu bedeuten hat.
    Jedenfalls habe ich das Modell nur mit den Dateien zu laden versucht, die BLENDER ausgeworfen hat. Mit den zusätzlichen Dateien, die für TPF benötigt werden, wurde der gleiche Fehler ausgeworfen.


    Langsam kostet es mich auch Haare... :D

  • Nach Stunden über Stunden der Tutorials, Beschreibungen und Rumprobiererei habe ich es endlich geschafft, ein selbst erstelltes Modell erfolgreich in TPF zu laden.
    Leider werden Material und Textur nicht richtig angezeigt. ^^ statt der verwendeten Test-Textur (Image) wird die Kirche in einer seltsame Farbe angezeigt.


    Daher habe ich noch zwei Frage, in der Hoffnung, dass mir jemand helfen kann:

    • Gibt es eine Art Leitfaden für die Einstellung von Material und Textur für den TPF? Das wäre eine echte Hilfe.
    • Wie stelle ich das Zentrum des Objekts ein, so dass die Kirche wirklich auf dem Boden steht und nicht darin versinkt oder darüber schwebt? Mit einem normalen Objekt geht das in Blender ganz einfach. Nur bekomme ich das mit dem LOD und MODEL nicht hin.


    Im Übrigen nochmals viele Dank für die Hilfestellungen bis hierher. Ohne den Hinweis auf das veraltete Plugin wäre ich wohl längst vollends verzweifelt. Ein bisschen verzweifelt bin ich zwischendurch aber dennoch...

  • so dass die Kirche wirklich auf dem Boden steht und nicht darin versinkt

    Du solltest es ganz im Gegenteil so einstellen DAS die Kirche im Boden versinkt ;) sonst schaut aus als wenn sie schwebt. Also einfach noch 1m Fundament unten dran modellieren und es passt, das ist bei allen Häusermodellen so gelöst.

  • Das ist die default-Textur, welche auch für Normal-Maps verwendet wird und daher eine "blanke" Normal-Map darstellt. Daher diese lila Färbung, da es den Grundwinkel/keinerlei Abweichung darstellt. Ums kurz zu machen: Du hast in der mtl einen falschen Pfad zu deiner textur angegeben ;)


    Positionierung des Objekts erfolgt i der mdl über die Transformationsmatrix. Oder bei einem Asset kannst du die gesamte mdl auch mit so einer Matrix anpassen. Im Normalfall liegen die Ursprünge einfach bei 0|0|0 und man muss da nichts ändern.


    Dein eigentliches Problem ist glaube etwas anderes. Du möchtest, dass das Terrain unter deiner Kirche angepasst wird oder? Ich geb dir dazu mal ein paar Codeschnipsel, die du bei dir in der con einfügen musst. Ach was soll der Geiz, mein Riesenrad ist bisher minimalistisch, da kann ich auch den ganzen Code zeigen:


    Und weil es sich auch anbietet, hier noch gleich die strings.lua (kommt gleich mit neben dem res-Ordner und der mod.lua in den Mod-Ordner):


    In der con in Zeile 26 erstelle ich eine Variable für ein terrainFace. Das = {} initialisiert sie als sogenannte Tabelle - stell es dir einfach als Array, oder noch besser als Liste vor. In Zeile 47 wird diese dann dem Spiel übergeben. Mit Daten befülle ich sie in den Zeilen 33-38. Wie bei einem Array greife ich mit den eckigen Klammern auf ein Element zu. Anders wie bei Arrays kann ich einfach ein neues Element hinten anfügen (daher für mich eher der Listencharakter mit nem Zugriffsverhalten, wie bei einem Array ^^ ) (dieses #Array+1). Du kannst also auch mehrere terrainFaces definieren. Du gibst dort einfach 4 Punkte/Vektoren an, die eine Fläche aufspannen und gut. Für das reine funktionieren sollten diese grundlegenden Erklärungen glaub ich erstmal ausreichen :)


    Was du auch machen kannst ist ein groundFace. Das funktioniert im Grunde ganz genauso. In Zeile 27 erstell ich die Variable und in Zeile 30 beschick ich sie mit Daten. Hier hast du allerdings nur zweidimensionale Vektoren. In Zeile 31 wird sie gleich ans Spiel übergeben. Was bringt dir das? Wenn du in der con mehrere mdl's zu einem Asset zusammen fügst, musst du jedes einzelne Modell seperat abreißen. Legst du ein groundFace an, kannst du alles mit einem Mal dem Boden gleich machen.


    In den Zeilen 19-21 siehst du, wie man für das UI Parameter anlegen kann. du kannst hier natürlich auch mehrere Keys angeben, aber der Grundaufbau ist hier auch schon gut zu sehen. Du kannst hier auch direkt einen String jeweils angeben (bietet sich bei Zahlen oder Symbolen bspw an), dann verzichtest du aber auf die Übersetzbarkeit. Alles was in _() steht kann mittels der strings.lua übersetzt werden. Wie du vllt siehst, finden sich die entsprechenden Werte in der strings.lua wieder. Als Bsp wird dm_funfair_param_clr aus der con in der strings.lua wieder aufgegriffen und ich biete Texte für deutsch (hier wird es durch "Farbe" ersetzt) und englisch (hier wird es durch "Color" ersetzt) an. Alle nicht vorhandenen Sprachen greifen dann automatisch als default-Rücksprung auf englisch zu. Beachte bitte auch die Systematik bei der Benennung! Eindeutige Namen sind wichtig, da es sonst mit mehreren Mods, die die gleichen Namen nutzen zu problemen kommen kann.


    Gut, nochmal zu den Parametern: Dort oben werden sie erstellt und in Zeile 41 greife ich darauf zu. Ich habe 4 mdl's die auf _0.mdl, _1.mdl usw enden. Mein Key hat 4 Parameter, welche der Reihenfolge nach die Werte 0, 1, 2 ,3 zurück geben, je nachdem, welchen Wert man in der UI ausgewählt hat. params.color (.color, weil der key des Parameters "color" ist) wird also je nach Auswahl zu 0 1 2 oder 3. Ich trenne meinen String mit dem Pfad zur mdl also auf und setze die Zahl des Params ein und erhalte somit einen gültigen Pfad zu meinerjeweiligen mdl-Datei.


    Ich hoffe, das rüstet dich für zukünftiges basteln gut aus. Da bleiben sicher noch genug Detailfragen, aber die kannst du ja gerne Stück für Stück stellen :)



    Edit: Achso, ich hatte dir nochmal ein Bild vom Menü ingame angehängt, damit du das mal vergleichen kannst, was da am Ende bei raus kommt.

    Büffeln is nich so meins, ich bin da eher der Ornithologe...

  • Vielen lieben Dank für die Hilfe! Und insbesondere DarkMo für die Mühe!


    Ich habe noch ein Problem entdeckt, das ggf. auch dafür verantwortlich ist, dass die Materialien / Texturen nicht so aussehen, wie sie sollen.
    Wenn ich aus BLENDER exportieren möchte, meckert das Programm, weil einzelne Materialien keine Texturen besitzen und verweist dabei u. a. auf map_normal. Das lässt sich nur beheben, wenn ich im Menü-Bereich "Train Fever Material" den einzelnen maps eine Textur zuweise. Dabei kann ich jedoch nur geladene Bilddateien (Images) auswählen. Das führt dann dazu, dass das Modell hinterher nicht so aussieht, wie es soll.


    Beispiel: Ich möchte eine Werbetafel erstellen. Die Tafel selbst erhält ein Image als Textur (z. B. ein Firmenlogo). Die Säule der Tafel soll aber schwarz reflektieren (wie Metall). Dafür benötige ich kein Image, es sollten die Farbeinstellungen von BLENDER reichen. Allerdings lässt sich das Modell wegen des vorgenannten Problems nicht exportieren. Ich muss also ein geladenes Image der map_normal zuweisen.

  • Auch wenn Blender keine Textur/Bild benötigt, spätestens das Spiel braucht eine ^^ Aber ich hab das TpF-Plugin auch erst seit kurzem und bei mir kommt der Fehler auch immer. Im TF-Plugin hats gereicht nen Material und ne Textur anzuhängen, hier will er da wohl irgendwas anders gemacht haben. Das blick ich aber auch noch ned. Das wichtigste sind aber eh nur die Meshes - alles andere kannste auch händisch erstellen. Und im Endeffekt fehlt ja nur der textures Ordner. mtl's grp's mdl's usw sind ja alle da. Ich geh dann eh nochmal selber über alles drüber, bin nich so der "ich stell alles in Blender ein" Typ ^^ Ich mach das alles im Nachhinein im Notepad++.

    Büffeln is nich so meins, ich bin da eher der Ornithologe...

  • Ist REFLECTIVE_NRML_MAP überhaupt ein geeignetes Material für soein Asset? So aus dem Bauch heraus würde ich sagen, dass dafür ein PHYSICAL/PHYS Material angebrachter wäre.



    Und noch ne doofe Frage: eine UV-Map hast du erstellt? Also jeder Fläche auch ein Platz auf der Textur zugeordnet.

  • Nimm bei type mal reflective als material, ich vermute mal du hast eh keine normalmap gemacht.


    Ne fehlende normal stört aber nicht, man sieht weder im modell_viewer noch ingame wenn die fehlt. Also um präzise zu sein das modell ist deswegen nicht lila.