ich habe mich in letzter Zeit ein wenig mit Bahnhof-Mods beschäftigt und mir sind dabei ein paar grundsätzliche Probleme aufgefallen, die ich gerne lösen würde
- Kompatibilität zwischen Mods: Skript-Mods überschreiben entweder einzelne Funktionen oder ganze Dateien. Wenn zwei Mods die gleiche Funktion überschreiben, geht eine Änderung verloren, obwohl die beiden Mods prinzipiell kompatibel sein könnten.
Viele Modder lagern deswegen ihre Funktionalität in separate Objekte aus, was aber schade ist, weil es durchaus erwünscht sein kann, verschiedene Mods zu kombinieren (z.B. gebogene Bahnhöfe mit mehr Gleisen und Geschwindigkeitsbegrenzungen - 3 verschiedene Mods) - keine Standardmethoden: es gibt häufig wiederkehrende Aufgaben, die jeder Modder selbst lösen muss, z.B. Optionen im Baumenü hinzufügen/verändern. Eine erweiterte Modding-API würde Entwicklungsaufwand sparen, Kompatibilität zwischen Mods erhöhen und Standardaufgaben robust und sicher lösen.
- Ladereihenfolge: beim Laden von Mods gilt first come first serve, und das obwohl es im Spiel nicht mal eine einfache Möglichkeit gibt, die Ladereihenfolge von Mods zu verändern. Das Problem mit der Ladereihenfolge auf den einzelnen Anwender auszulagern halte ich nicht für sinnvoll.
- Lokale Funktionen: Etliche Funktionen in den Lua-Skripten von TpF sind als lokal deklariert. Das bedeutet, dass man für kleinste Änderungen oft hunderte Zeilen Code kopieren muss und damit das Kompatibilitätsproblem noch verschärft.
welche Anforderungen sollte eine erweiterte Modding API erfüllen?
- 100% Kompatibilität mit allen Mods, die nicht die erweiterte API benutzen wollen (sonst macht man nur den Code von Anderen kaputt und die sind dann berechtigterweise sauer)
- Standardmethoden, um alle bestehenden Funktionen (auch lokale Funktionen) beliebig oft zu erweitern (nicht einfach überschreiben)
- die Reihenfolge, in der Erweiterungen definiert werden, kann für jede Funktion neu bestimmt werden und wird im Code der Mod festgelegt (unabhängig von der Ladereihenfolge im Spiel)
- eine kleine Standardbibliothek, die robuste Lösungen für häufig verwendete Aufgaben anbietet
- umfassende und verständliche Dokumentation für Modder, mit Codebeispielen
über die Umsetzbarkeit habe ich mir schon einige Gedanken gemacht und ich glaube, dass es machbar wäre, eine Modding API zu bauen, die diesen Ansprüchen genügt.
Was mich aber jetzt interessieren würde: Was haltet ihr überhaupt von der Idee? Würdet ihr als Modder eine solche API nutzen? Welche Features vermisst ihr, welche möchtet ihr auf keinen Fall haben? Brauchen wir sowas überhaupt?