Common API
Geschätzte Transport Fever Spieler und Entwickler.
Hiermit präsentiere ich euch mein Mod API Schnittstelle nun auch offiziell in einem eigenen Thema.
Die Mod bietet die Grundlage übergreifende Nutzung von Spielelemente wie Gleise, Brücken, Strassen in anderen Mods zu nutzen.
Es ist zwar über sogenannte „modifer“ möglich das Laden von Gleisen, Strassen und Brücken zu beobachten, dies hat aber den Nachteil das jedes Mod seine eigenen Funktionen dafür mitbringen musste. Des weiteren musste öfters eine Reihenfolge eingehalten werden oder eine Konfigurationsdatei geändert werden. Gerade bei mehrere Spielstände gibt es dann vielleicht Probleme. UG hat leider versäumt dafür geeignete Schnittstellen anzubieten.
Was macht also Common API?
Für Spieler:
Sobald Ihr die Common API lädt, können Mod Autoren euch eine Auswahlliste mit allen Mod Gleisen, Brücken, Straßen anbieten.
Des weiteren gibt es eine Liste mit allen Mods und deren Namen in der stdout.txt. Sinnvoll bei Steam Workshop Mods, die sonst nur als eine Nummer angezeigt werden.
Beispiel: Ihr fügt einen Spielstand ein neues Schmalspurgleis hinzu. Habt Ihr einen Bahnhof der CommonAPI nutzt, könnt Ihr diesen neuen Gleistyp einfach nutzen.
Hierfür müssen Gleise, Brücken und Straßen nicht angepasst werden, auch keine Änderungen an Konfigurationsdateien sind nötig.
Technisch gesehen:
Während des Laden eines Spielstandes werden intern die genutzten Moddateien ermittelt, diese werden vorgeladen und die Mod Autoren können dann Ihre Konstruktionen (Depots, Bahnhöfe) anpassen.
Für Entwickler von Mods:
Common API bietet Schnittstellen um herauszufinden welche anderen Gleistypen, Straßen, Brücken oder Tunnel noch geladen wurden. Dazu gibt es noch Funktionen um zum Beispiel die Daten per Name abzufragen, bzw. einer Liste. Warum also nicht selber einen Modifer benutzen?
Jedes Mod hat dann eine andere Auswahlliste. Sollte eure Konstruktion vor einem anderen Mod geladen sein, hab Ihr keine Möglichkeit dessen Anzeigenamen herauszufinden, oder die Anzahl der Typen. Mit der Common API bleiben auch die ID Zuordnungen generell stabil. Darüber hinaus kümmert es sich bei der UI Erstellung auch darum, das die Modgleis Namen richtig übersetzt werden.
Brücken, Straßen, Gleise:
Bitte vergibt für eure Gleise, Strassen, Brücken eindeutige Namen, es ist sehr unschön wenn zig Gleise den gleichen Namen beinhalten – Standard Gleis - , außerdem ist X mal Stahlbrücke auch kein Vergnügen.
Möchtet Ihr lieber einen sehr langen Namen nutzen ist dies auch kein Problem,
Ihr könnt zusätzlich für die CommonAPI einen „shortUIName“ definieren,
dieser wird dann in der Common API UI genutzt.
Konstruktionen:
Die API Beschreibung findet Ihr in doc Ordner der CommonAPI
Ob die API verfügbar ist, könnt Ihr einfach herausfinden,
CommonAPI darf nicht per require geladen werden, sobald der Nutzer es lädt ist commonapi global definiert.
if (commonapi ~= nil) then
end
Auch weiteren Module kann man einfach abfragen:
if (commonapi ~= nil and commonapi.uiparameter ~= nil) then
end
Wenn ein Modul nicht geladen werden kann, gibt es nil zurück.
Ihr könnt die Präsenz der CommonAPI zwar in der runfn der mods.lua testen, aber Funktionen bezüglich der Daten zu den Mods oder UI Funktionen stehen euch dort noch nicht zur Verfügung! Diese sind erst während des Ladens einer Konstruktion nutzbar.
Steam
Eine Steam Veröffentlichung ist natürlich auch geplant sobald die API stabilisiert ist.
VorabVersion
In der Webdisk: Common API
Wenn Ihr weitere Fragen zur Entwicklung, Nutzung habt, so könnt Ihr diese hier gerne hier zum besten geben
Links:
Webdisk: Common API
Zur Geschichte der Common API: Mod API Diskussion (weiterführung aus dem Beta News Beitrag)
Neuste Informationen:
MacOS
Ich suche Nutzer mit MacOS, bitte meldet euch! MacOS ist nicht getestet.
Fahrplan nächste Version:
Zeitabhängige Anzeige von Typen (yearFrom, yearTo): Fertig.
Einfache Erstellung von UI Parametern. Einfach die vorhandenen Parameter durch replaceParams für die Common API fit machen: In Entwicklung