Gedanken zur Kompatibilität von Mods

  • Vorrangig ein Thread für alle Modder!


    Angesichts dessen, daß immer mehr Mods entwickelt und veröffentlicht werden und der Tatsache, daß viele davon selbe Dateien verändern, sollten wir uns Gedanken darüber machen, wie wir das ganze kompatibel machen!


    Wie können wir "normalen" Spielern es ermöglichen, mehrere Mods gleichzeitig zu nutzen, ohne scripts anpassen zu müssen!


    Bitte alle Gedanken und Vorschläge dazu posten...



    MFG

  • Wie können wir "normalen" Spielern es ermöglichen, mehrere Mods gleichzeitig zu nutzen, ohne scripts anpassen zu müssen!


    Eigentlich nur durch einen Community-Mod. Anders kann ich es mir überhaupt nicht vorstellen. :S


    Einige basteln hier an Fahrzeugen, die die User dann in ihren Ordner unterbringen sollen. Hat der User aber schon z. B. die Kapazitäten geändert, fehlt im das wieder. Und so wird das immer sein. :(

  • Also zunächst einmal schließen sich nicht alle Mods gegenseitig aus. Bei den vielen Fahrzeugmods und da werden noch einige kommen, kommt es dann aber zu Problemen.


    Leider seh ich bei den Fahrzeugen da auch keine andere Möglichkeit, als eine Art von Community-Mod. Hier müsste man aber Kompromisse finden. Man könnte zum Beispiel so einen Mod in zwei, maximal drei Versionen anbieten. Eine für die Vanillaversion ohne Rohdatenänderung, einen Mod der auf Realismus ausgelegt ist und dann halt so ein Zwischending von Beiden. Damit dürfte eigentlich alles abgedeckt sein.


    Edit: Die Sprachdatein sind aber auch ein größeres Problem, den diese werden oft von verschiedenartigen Mods verwendet.

  • Darüber habe ich mir auch schon Gedanken gemacht. Zumindest um eigens erstellte/geklonte Gebäude im Editor verfügbar zu machen. Bisher muss man ja seine Einträge in der Datei metro/envsets/default-buildings.script hinzufügen.


    Da habe ich (vergebens) geschaut, ob nicht irgendwo zu dieser Datei referenziert wird. Dann nämlich könnte man noch Links zu den Dateien custom001.script, custom002.script, custom003.script, usw. hinzufügen. Das wäre dann eine veränderte "Master"-Datei und die Grundlage für andere Mods. Wenn dann jemand ein Set/Gebäude/Vehikel/... zum Download anbietet, kommt es mit einer .gs-Datei mit den benötigten Inhalten (sobald man mit dem GS-Viewer weniger umständlich neue gs-Dateien erstellen kann) und einer custom000.script Datei mit den Referenzen zu den zu ladenden Objekten. Diese würde der Nutzer dann umbenennen, so dass die Zahl am Ende einzigartig ist und keine Datei überschrieben wird.


    Da ich aber keine Hinweise zu der default-buildings.script Datei gefunden habe, wird es wohl nicht auf diese Art und Weise umzusetzen sein. Daher müsste vielleicht jemand ein Programm schreiben, welches den Nutzer auffordert .gs Dateien auszuwählen, diese auf Inhalt prüft, und dann automatisch Links zu den Dateien in die Dateien eines gewählten envsets-Ordners schreibt. Oder wir fragen Colossal Order ganz ganz lieb mit Dackelblick und 'ner Packung Kekse nach einer offiziellen Lösung dieses Problems.

  • Eine weitere Alternative könnte ein Mod-Manager sein, der Dateien patcht, nicht überschreibt. Dafür bräuchte man natürlich einen fähigen Programmierer, aber dass wäre in meinen Augen der komfortabelste Weg für den Nutzer.


    Eine weniger anspruchsvollere Version eines solchen Mod-Managers könnte sich auch erstmal darauf beschränken neue Mods auf bereits installierte und daraus eventuell resultierende Konflikte zu überprüfen, so dass man die Übersicht hat und sich dann im Falle eines Konflikts entscheiden kann, welche Mod man für eine Sitzung (de)aktiviert haben will.

  • Ein kleines Tool, das beispielsweise in die metro/envsets/default-buildings.script schaut und prüft, ob dort schon Einträge drin sind, die ich einfügen will und dann eben auch neue Einträge schafft ist nun wirklich keine programmiertechnische Herausforderung. Man müsste sich nur auf eine standardisierte Eingabe einigen. Also, welche Dateien soll das Tool entgegennehmen. Man könnte das mit einem ZIP füttern, in dem die Ordnerstruktur ab dem Installationsverzeichnis von CiM gleich ist. Dann ist es kein Problem mehr, alles zu prüfen und ggf. nachzufragen, ob Sachen überschrieben werden sollen etc.


    Auto-IT böte sich dafür an. Man könnte auch den Quelltext offenlegen, damit jemand anderes weiterprogrammieren kann.
    Ich bevorzuge eher Python, weils flexibler ist. Allerdings ist da die GUI-Programmierung umständlich (Aber in Auto-IT auch, zumindest wenns darum geht, was nachträglich zu ändern).


    Also, wer Ideen hat, her damit. Ich könnte was bauen.

  • Hallo,


    ein Tool das nur die Änderungen die ein Mod vornimmt in die Spiel-Dateien überträgt wäre schön, allerding ist das zu lösende Problem komplex. Spontan fällt mir dazu ein, das Du dann z.B. auch überprüfen mußt, ob Variablennamen bereits von einem anderen Mod genutzt werden, sprich bereits vergeben sind. Alleine das wird nicht einfach zu lösen, da es schwierig wird zwischen neuen Variablen und Core-Variablen zu unterscheiden.


    Eine andere Möglichkeit wäre ein Core-Mod der es erlaubt alle Dateien via Addon zu modden. Dazu benötigt es lediglich entsprechende Einsprungpunkte in allen Dateien und Funktionen. Damit wäre es dann nicht mehr nötig irgendwelche Core-Dateien zu überschreiben. In einigen Scrtipt-Dateien hat CO das auch bereits vorgesehen wie z.B. im Environment Script, jedoch fehlen Einsprungpunkte in den meisten anderen Scripten sowie allen Funktionen. Natürlich gibt es dabei noch einiges zu Bedenken, aber ich glaube das dieses Konzept gut umsetzbar ist. Ist allerdings mehr oder weniger eine reine Fleissarbeit und nicht gerade Anspruchsvoll. Wenn wir uns die Arbeit aufteilen und genug finden die daran mitarbeiten, ist das aber leicht zu bewältigen.


    Ich würde mich auch gerne bereit erklären das zu koordinieren und den entsprechenden Installer dafür zu entwickeln.


    Grüße

  • metro/envsets/default-buildings.script ist aber ein sehr schlechtes Beispiel für neue Einträge. Das kann man per addons/addonname/environment.script viel besser lösen, der relative Path ist dann addons/addonname/verzeichniss/.object
    Der Benutzer brauch dann nur noch ein neues addon in CIM/addons/ platzieren und fertig.


    Für Änderung an anderen Dateien, diff und patch. Entpacken von *.gs in ein Verzeichnis, dann per patch alle gewählten (Addon-)(Patches einpflegen und dann damit ins CIM Verzeichnis als metro.
    Sollte etwas nicht gehen, wird patch die richtige stelle wissen und einen Fehler produzieren. Dann geht zumindest nix kaputt.


    Hmm, man könnte vielleicht aber das Objekt auch anders bearbeiten... werde das mal später ausprobieren.

  • Mir wäre ein Addon wie die Reality-Mod auch am liebsten. Vielleicht lassen sich die Jungs&Mädels von CO mal erweichen und geben eine Doku raus, wie man Mods Benutzerfreundlich erstellt. So packt dann einfach jeder seine mod.gs rein und fertig.
    Noch bin ich da nicht so tief drin. Mit den Einstiegspunkten bin ich auch noch nicht vertraut. Die Scriptsprache von CiM zu verstehen ist nicht das Problem, sondern die Zusammenwirkung der Objekte und Scripts generell.
    Die Bonusfahrzeuge sind ja eigentlich so eine Mod. Vielleicht kann man da ansetzen. Für neue Fahrzeuge oder Gebäude wäre das ja mal eine Erleichterung.


    Na mal schauen. Wird schon werden. Vielleicht kann man sich ja in internationalen Foren für CiM umschauen, obs schon Ansätze für sowas gibt. Erste Grundlage in der Programmierung: Das Rad nie zweimal erfinden :D

  • Wieso so kompliziert?


    Einen ModManager zu programmieren dürfte nicht schwer sein (habe ja schonmal den für CXL erwähnt). Hier wird schlichtweg die Funktion eingebaut, dass der MM überprüft ob aktuelle Mods die gleichen Dateien benutzen wie jene die man installieren möchte. Sollte das der Fall sein springt ein Ampelchen auf rot und jeder weiß, dass der Mod inkompatibel ist.
    Das Problem Inkompatiblität lässt sich IMO nicht lösen, man kann nur darauf aufmerksam machen.

  • Wieso so kompliziert?


    Einen ModManager zu programmieren dürfte nicht schwer sein (habe ja schonmal den für CXL erwähnt). Hier wird schlichtweg die Funktion eingebaut, dass der MM überprüft ob aktuelle Mods die gleichen Dateien benutzen wie jene die man installieren möchte. Sollte das der Fall sein springt ein Ampelchen auf rot und jeder weiß, dass der Mod inkompatibel ist.
    Das Problem Inkompatiblität lässt sich IMO nicht lösen, man kann nur darauf aufmerksam machen.


    Offensichtlich hast du die Beiträge hier nicht gelesen. Denn zum einen hab ich das bereits genauso vorgeschlagen, zum anderen wurde bereits von anderen Ideen entwickelt wie man das Problem der Inkompabilität eben doch lösen kann (durch patchen und vergleichen). Irgendwie wäre es doch blöd wenn es 20 coole Fahrzeug-Mods gibt, man aber nur eine einzige davon mit dem Mod-Manager verwenden kann, weil dieser nur Dateien überschreibt und alle Fahrzeug-Mods die selbe Index-Datei nutzen.


    Ich selbst kann leider nur auf sehr niedrigem Niveau in Python scripten und wäre darum kaum eine Hilfe, aber ich hoffe ihr findet eine Lösung - die GUI ist da doch erstmal das unwichtigste, notfalls wird das Ding halt mit ner CLI ausgeliefert :D Hauptsache denk ich erstmal steht der Code zum injezieren und comparen.

  • Wie gesagt, neue Fahrzeuge / Objekte können per Addons ohne Mod Manager oder ähnliches installiert werden. Neue Fahrzeuge könnten sich zum Beispiel per Ingame-Script auch ändern, nachdem Sie auf ein "Realtity- Mod" Flag zugreifen und sich somit selbst anpassen. (Kapazitäten und ähnliches), da wäre abzuklären wie man eine bestimmte Script-Reihenfolge lädt. Änderungen an Wirtschaft und co sind da etwas problematischer. Wenn die Addon/Script Autoren anfangen das Addon System zu nutzen und vielleicht mit ein paar kniffen vermeiden zu viel in den Original-Dateien zu ändern, dann geht das auch ohne Addon-Manager. Ne ganz andere Möglichkeit ist, ein Universal-Wirtschaftsmod, es baut eine Menge sogenannte Hooks in die Original -Scripte ein, die dann per Addons angesprochen werden. D.h. Mods und Addons brauchen erst gar nicht in den Original-Daten rumzufrickeln.


    Und bestimmte Sachen werden einfach nie zusammen laufen, da kann ich auf mein Erfahrungsschatz von TTDPatch zurückgreifen, egal was man macht, Inkompatibilitäten gibt es immer :)


    Ich Interessiere mich eher um die 3D Daten um neue Objekte zu erstellen. (Und dann ein Binary-Diff um aus alten Objekte neue zu machen), das reicht für mich als Neben-Projekt schon aus. Ideen Ja, Code-Monkeys dürfen andere seien... :D

  • Darüber habe ich mir auch schon Gedanken gemacht. Zumindest um eigens erstellte/geklonte Gebäude im Editor verfügbar zu machen. Bisher muss man ja seine Einträge in der Datei metro/envsets/default-buildings.script hinzufügen.

    Lese ich richtig, dass hier bereits ein Versuch mit gekonten Häusern stattfindet. Da bin ich nämlich auch bereits erfolgreich dran. Allerding wie hier beschrieben, würde ich sie gerne über eine Funktion einfügen, nicht über die spieleinterne Script-Datei. Natürlich ist es stets besser, über eine oder wenige Zentral-Dateien die Vielzahl an zu erwartenden Mods zu integrieren, allerdings ist eine stetige Pflege seitens des Modder-Team dieser Zentral-Dateien nötig. So war es ja auch bei SC4 nur möglich, den NAM so populär zu halten.

  • Lese ich richtig, dass hier bereits ein Versuch mit gekonten Häusern stattfindet. Da bin ich nämlich auch bereits erfolgreich dran. Allerding wie hier beschrieben, würde ich sie gerne über eine Funktion einfügen, nicht über die spieleinterne Script-Datei. Natürlich ist es stets besser, über eine oder wenige Zentral-Dateien die Vielzahl an zu erwartenden Mods zu integrieren, allerdings ist eine stetige Pflege seitens des Modder-Team dieser Zentral-Dateien nötig. So war es ja auch bei SC4 nur möglich, den NAM so populär zu halten.


    Es müsste auch eine addon/editor.script geladen werden für den Editor. Also Änderungen sollten damit wohl auch möglich sein. Wie gesagt meine Meinung ist, wenn nötig lieber einen separates Hook Addon wenn es nicht geht das als Basis für alle Mods laden als das jedes Mod in metro rumbastelt... (Das ist dann bei CIM Updates auch einfacher...)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!