Anleitungen¶
Diese Anleitungen erklären, wie Mods für Transport Fever 3 aufgebaut sind. Grundlage sind die Dateien, die mit dem Spiel ausgeliefert werden (die Teal-Typdefinitionen der Engine-API, die Skripte und Inhalte des Basisspiels, die offizielle VS-Code-Vorlage, die Kampagnen-Mods und die DLC-Pakete), und das offizielle Modding-Wiki. Wo Wiki und Spieldateien sich widersprechen, nennt die Anleitung beide Angaben und ihre Quelle. Wo keine der beiden eine Frage beantwortet, sagt sie das, statt zu raten.
Die API-Referenz wird aus denselben Definitionsdateien erzeugt. Sobald ein Typ oder eine Funktion vorkommt, verlinken die Anleitungen dorthin.
Aufbau der Seite¶
| Bereich | Inhalt |
|---|---|
| Anleitungen (dieser Bereich) | Von Hand geschriebene Erklärungen mit Auszügen aus den Spieldateien |
| Referenz: Engine-API | api.engine, api.cmd, api.gui, api.res, api.type, api.util, api.modhub, app und die globalen Namen aus main.d.tl |
| Referenz: Skripte des Basisspiels | Definitionen der Lua- und Teal-Bibliotheken des Basisspiels (Hilfsfunktionen für Konstruktionen, React-GUI-Framework, Missions-Framework usw.) |
| Globale Namen A–Z | Alle globalen Namen in einer Liste |
Die Anleitungen in Lesereihenfolge:
- Erste Schritte: Editor mit der offiziellen VS-Code-Vorlage einrichten, wo Mods liegen, ein minimaler Mod, Testen und Veröffentlichen.
- Aufbau eines Mods:
mod.json,_metadata/modinfo.json, Abhängigkeiten, die Mod-Skript-Hooks, Dateipfade und generische Ressourcen. - Scripting: GUI- und Engine-Zustand, Entitäten und Komponenten auslesen, Befehle, Game-Scripts, die Basiskonfiguration, Ressourcen-Modifier und Dateifilter.
- Konstruktionen:
.con-Dateien, das Ergebnis vonupdateFn, Konstruktionstypen, das Baumenü und Bodentexturen. Modulare Konstruktionen behandelt Slots, Module, Vorlagen und eine minimale modulare Konstruktion. - Modelle und Assets:
.mdl,.msh,.mtl, Modell-Metadaten und Texturen. Die Seite zum Model Editor beschreibt das Werkzeug im Spiel. - Fahrzeuge: Fahrzeug-Metadaten, die Fahrzeugtypen und Repaints. Fahrzeuge: fortgeschrittene Themen behandelt Transformatoren, Zweirichtungszüge, Gruppen im Fahrzeugladen und Fake-Drehgestelle.
- Infrastruktur: Gleise, Straßen, Kantenzusätze, Brücken, Tunnel, Signale, Bahnübergänge und Ampeln.
- Umgebung: Klimas, Geländegeneratoren, Geländematerialien, Landschafts-Assets und Tiere.
- Güter, Namen, Personen und Sounds: Güterarten, Übersetzungen, Namenslisten, Figuren, Playlists und Soundsets.
- GUI: das React-artige Framework, mit dem die GUI des Basisspiels gebaut ist, Plugins und das Ersetzen von Recipes.
- Spielmechaniken: die Skripte des Basisspiels, Benachrichtigungen, Subventionen, Unternehmensboni und Wirtschaft.
- Missionen: das Missions-Framework und ein Durchgang durch Kampagnenmission 01.
Woraus ein TF3-Mod besteht¶
Ein Mod ist ein Ordner mit einer mod.json, einer _metadata/modinfo.json mit den Texten und Bildern für den Mod-Browser und einem content/-Ordner. Modelle, Fahrzeuge, Konstruktionen, Skripte und die Fenster im Spiel lädt das Spiel aus Dateien in content/. Das Basisspiel ist genauso aufgebaut: base/mod.json führt die Spieleinstellungen (Kartengröße, Stadtdichte, Kosten usw.) als Mod-Parameter auf und verweist für den Einrichtungscode auf ::/base/mod.script.
Die meisten Inhaltsdateien sind Lua-Skripte, deren Funktion data() eine Tabelle zurückgibt. Nach diesem Muster arbeiten eine Konstruktion (.con.lua), ein Modell (.mdl), ein Material (.mtl), ein Game-Script (.gs.lua) und eine generische Ressource (.res.lua). Das Verhalten steckt in .script.lua- oder .script.tl-Dateien. Inhaltsdateien verweisen mit Angaben wie "small_stops.script@updateFn" auf Funktionen darin.
Skripte schreibst du in Lua oder in Teal, einem typisierten Dialekt von Lua. Das Basisspiel nutzt beides: Seine Inhalte umfassen 813 Teal-Dateien (.tl), davon 151 .script.tl, neben 3.611 reinen Lua-Dateien und 316 Definitionsdateien (.d.tl). Das Spiel bringt den Teal-Compiler mit (base/content/base/base/tl.lua), und die Kampagnen-Mods liefern .tl-Quellen direkt aus. Teal-Dateien werden also ohne eigenen Build-Schritt geladen. Die .d.tl-Dateien enthalten nur Typdefinitionen. Auf ihnen bauen die VS-Code-Vorlage und die Referenz dieser Seite auf.
Die Skript-Zustände¶
Skripte laufen in getrennten Skript-Zuständen: Der Engine-Zustand führt die Simulation aus, der GUI-Zustand die Benutzeroberfläche, und beide können über api.engine die ganze Engine lesen. Änderungen laufen immer über Befehle. Die Seite Scripting erklärt die Zustände und welcher Code wo läuft.
Weiterlesen¶
Das offizielle Modding-Wiki von Urban Games behandelt dieselben Themen, und jede Anleitung endet mit Links auf die passenden Wiki-Seiten. Einige Wiki-Seiten (Basiskonfiguration, Ressourcen-Modifier und Dateifilter) beschreiben noch Transport Fever 2. Die Anleitungen weisen darauf hin, wo die Dateien von TF3 abweichen.
Zu den Quellpfaden
Auszüge tragen ihren Pfad innerhalb der entpackten Spieldateien. api/tealdef/... und base/tealdef/... sind die Definitionsordner der Spielinstallation. base/content/..., mods/release/<mod>/... und dlcs/<dlc>/... sind Inhaltsordner. Das Spiel liefert die meisten Inhalte in Zip-Archiven aus. In den entpackten Dateien wurde jedes Archiv zu einem gleichnamigen Ordner, deshalb wiederholt sich in Pfaden wie base/content/scripts/scripts/gamescript.d.tl ein Ordnername. Die Seite Aufbau eines Mods erklärt die Zuordnung.