Assets: Aufbau der Dateien

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


Sie betrachten gerade eine ältere Version des Eintrags. Klicken Sie hier, um zur aktuellen Version zu gelangen.

  • Beschreibung des Aufbaus der *.lua-Dateien für Assets. Außerdem Hinweis, wo nötige Grafiken abgelegt werden müssen.
    Assets sind mit Build 7554 ([url='https://www.train-fever.net/lexikon/index.php/Entry/14-Changelog/#Build_7554']Changelog[/url]) hinzugekommen. Diese besitzen eine eigene Dateistruktur, die eingehalten werden muss. Diese wird im Folgenden erklärt. [box][color=#800080]

    1 Hinweis zu Kategorien

    Assets können in selbst erstellte Kategorien eingeteilt werden. Die Community einigte sich auf eine Liste von zu verwendenden Kategorien. Diese ist im Eintrag [url='https://www.train-fever.net/lexikon/index.php/Entry/140']Assets: Kategorien[/url] einsehbar. Auch können von dort die benötigten Icons für die Kategorien geladen werden. Sollte euer Asset in keine dieser Kategorien passen, könnt ihr euch im Forum [url='https://www.train-fever.net/index.php/Thread/4635-Asset-Kategorien']Asset-Kategorien[/url] Hilfe holen. Dort könnt ihr auch, falls ihr einen Mod mit sehr vielen Assets erstellt, das "Einverständnis" für eine neue Kategorie einholen. Ich werde alles Nötige für eine neue Kategorie hier, der Vollständigkeit halber, mit ausführen.[/color] [/box]

    2 Ordnerstruktur

    Assets befinden sich bei Train Fever im Verzeichnis [tt]res/assets[/tt]. Darin können eigene Unterordner erstellt werden. Für die Benutzeroberfläche werden Icons benötigt. Diese befinden sich im Ordner [tt]res/textures/ui/assets[/tt]. Die Icons sind ggf. im selber Unterordner unterzubringen und gleich zu benennen. Die Grafiken müssen im *.tga-Format ohne Kompression vorliegen. Für die Kategorisierung der Assets wird/werden zusätzlich Icon für die jeweilige Kategorie(n) benötigt [Siehe [url='https://www.train-fever.net/lexikon/index.php/Entry/139-Assets-Aufbau-der-Dateien/#Hinweis_zu_Kategorien']Hinweis zu Kategorien[/url]]. Diese sind in einer besonderen Form zu benennen. Außerdem müssen diese Icons - sofern es nicht die TF-eignenen Kategorien sind - stets mitgeliefert werden! [code]res ┠━ assets ┃ ┠━ exampleAsset.lua ┃ ┖━ bsp ┃ ┖━ assetBeispiel.lua ┖━ textures ┖━ ui ┖━ assets ┠━ asset_category_misc.tga ┠━ exampleAsset.tga ┖━ bsp ┖━ assetBeispiel.tga[/code] Die Assets dürfen beliebig benannt werden, müssen aber auf [tt].lua[/tt] enden. Vermieden werden sollten allerdings Sonderzeichen wie [tt]äöüß[/tt]. Diese führen immer wieder zu Problemen. Zudem ist auf GrOß- und kLeiN-Schreibung zu achten! Zudem sollten Assets keinen Namen der Form [tt]asset_category_*.lua[/tt] erhalten. Diese Namen beißen sich mit den UI-Icons für die Kategorien und werden zu erheblichen Problemen führen!

    3 Aufbau der *.lua

    Nun zum Wichtigsten, dem Aufbau der Asset-Dateien. Es handelt sich dabei um eine Scriptdatei, die die Eigenschaften des Assets beinhaltet. Der Quellcode zeigt die Anordung der einzelnen Eigenschaften in der Datei. Die Eigenschaften an sich sind anschließend aufgeführt. [code='Struktur']function data() return { type = ... , buildMode = ... , category = ... , availability = ... , description = ... , models = ... , order = ... , skipCollision = ... , } end[/code]

    3.1 type

    Der Typ bestimmt die Oberkategorie, in die der Asset eingeordnet wird. Gültig sind dabei zwei Werte: [list][*][tt]type = "DEFAULT"[/tt] - Standardobjekt, welches frei platziert werden kann. Es snappt dabei an kein Objekt in der Nähe an. [*][tt]type = "TRACK"[/tt] - Objekt, welches an Gleisen einsnappt wie Wegpunkte und Signale. Können außerdem frei platziert werden (wie [tt]DEFAULT[/tt]). [/list]

    3.2 buildMode

    Dieser Parameter bestimmt, wie mehrere Objekte gebaut werden. Gültig sind die Werte: [list][*][tt]buildMode = "SINGLE"[/tt] - Platziert das Objekt 1x. Das ganze Menü wird beim Platzieren geschlossen. [*][tt]buildMode = "MULTI"[/tt]- Platziert das Objekt 1x beim Klicken der linken Maustaste. [*][tt]buildMode = "BRUSH"[/tt] - Platziert das Objekt so lange wie die linke Maustaste gedrückt wird und die Maus eine Strecke (in der Spielwelt, nicht auf dem Mauspad) von ca. 5-10m zurücklegt. [/list]

    3.3 catergory

    Zunächst nochmal der Verweiß auf: [url='https://www.train-fever.net/lexikon/index.php/Entry/139-Assets-Aufbau-der-Dateien/#Hinweis_zu_Kategorien']Hinweis zu Kategorien[/url]. Diese Eigenschaft ordnet das Asset der Kategorie zu, die hier übergeben wird. Gültig sind dabei alle Zeichenketten bestehend aus [tt]a-zA-Z0-9_-[/tt]. Es muss, sofern nicht die Standardkategorien [tt]misc[/tt], [tt]tree[/tt] und [tt]rock[/tt] von TF genutzt werden, eine entsprechend benanntes Kategorie-Icon unter [tt]res/textures/ui/assets[/tt] vorhanden sein. Dieses muss folgenden Namen tragen: [tt]asset_category_.tga[/tt]. Beispiel: [tt]catergory = "Debug"[/tt] -> Iconname muss lauten [tt]asset_category_Debug.tga[/tt] Die Community-Standard-Kategorien sind im Eintrag [url='https://www.train-fever.net/lexikon/index.php/Entry/140']Assets: Kategorien[/url] zu finden.

    3.4 availability

    Die Verfügbarkeit wird hier, wie in jedem Modell, angegeben. Der Eintrag besteht aus einer Tabelle mit Startjahr ([tt]yearFrom[/tt]) und Endjahr ([tt]yearTo[/tt]) der Verfügbarkeit. Einträge mit [tt]0[/tt] (Null) können dabei weggelassen werden. Es werden nur die hier angegebenen Verfügbarkeiten berücksichtigt. Verfügbarkeiten aus den Modellen werden ignoriert.[code]availability = { yearFrom = 1800, yearTo = 1802, }, [/code]

    3.5 description

    Die Beschreibung besteht ebenso aus einer Tabelle. [tt]name[/tt] ist dabei der Anzeigename des Assets. [tt]description[/tt] liefert die Beschreibung für das Asset. [tt]_(...)[/tt] dient dabei der Übersetzung der Assets. Namen und Beschreibungen aus den Modellen werden ignoriert.[code]description = { name = _("Assetname"), description = _("Eine ausführliche Beschreibung."), },[/code]

    3.6 models

    Hier wird das zu verwendene Modell angegeben sowie seine Position. Es können dabei mehrere Modelle angegeben werden. Es wird dann beim Platzieren eines davon zufällig ausgewählt. [tt]id[/tt] gibt die *.mdl an, in der das Modell an sich definiert ist (also LODs). Die [tt]id[/tt] ist relativ zum Ordner [tt]res/models/model[/tt]. [tt]transf[/tt] ist die normale [url='https://www.train-fever.net/lexikon/index.php/Entry/83-Transformationsmatrix/']Transformationsmatrix[/url].[code]models = { { id = "asset/ampel.mdl", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, }, { id = "example.mdl", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, }, },[/code]

    3.7 order

    Die Eigenschaft [tt]order[/tt] bestimmt die globale Anordnung der Assets in der Kategorienliste. Siehe [url='https://www.train-fever.net/lexikon/index.php/Entry/138-Assets-Vorgaben-zur-Sortierung/']Assets: Vorgaben zur Sortierung[/url] zur Bildung der [tt]order[/tt].

    3.8 skipCollision

    Hierrüber wird bestimmt, ob das Assete bei der Kollisionsprüfung berücksichtigt werden soll. Gültig sind dabei: [list][*][tt]skipCollision = true[/tt] - deaktiviert die Kollisionsprüfung für das Asset. Es können Objekte "durch" das Objekt gebaut werden und umgekehrt. (Beispielanwendung: Schilder, Bahnhofsdekoration) [*][tt]skipCollision = false[/tt] - aktiviert die Kollisionsprüfung für das Asset. Es können keine Objekte dort platziert werden, wo das Objekt ist. (Beispielanwendung: Gebäude wie Fernsehturm, Windkraftanlagen) [/list]

    4 Beispiel

    Im Folgenden ein Beispiel für ein Asset: [code='example.lua']function data() return { type = "DEFAULT", buildMode = "MULTI", category = "misc", availability = { yearFrom = 2015, yearTo = 2016 }, description = { name = _("Beispiel"), description = _("Dies ist ein Beispiel-Asset.") }, models = { { id = "asset/ampel.mdl", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, }, { id = "einBeispiel.mdl", transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, }, }, order = 183130103, skipCollision = false, } end[/code]

Teilen