Gedanken zum "sicheren Modding" - Wünsche an die Crafty-Devs

#1
Dieser Thread soll sich primär an die Devs von Crafty richten, aber jeder, der hier gerne modden möchte ist natürlich eingeladen seine Ideen zu Papier zu bringen ^^
Hier sind einige der Dinge, die meiner Meinung nach unbedingt notwendig sind, um ein sauberes Modding zu ermöglichen

- Version muss anhand einer Resource ausserhalb des Spiels auslesbar sein
Grund: Kompatibilität des Mods zur aktuellen Version. Möglichkeit zum sicheren patchen/überschreiben der Dateien.
Erklärung: Ich überlege mir, so eine Art "Mod Changer" zu schreiben, bei dem der User sich einen Mod in ein Tool importiert und dann über einen Selektor den Mod aussucht, den er starten will. Dazu muss aber die Möglichkeit gegeben sein, dass zum Anwenden des Mods klar ist, welche Version aktuell installiert ist, ob die Mod damit kompatibel ist, ob nach Anwenden der Mod vielleicht ein Patch installiert wurde und man eventuell den Mod neu einspielen muss etc etc etc.
Nutzen für die Community: hoch!
Aufwand für Crafty: Bitch please :rolleyes: 2 Minuten und eure globalsettings.xml hat den Key

- Subklassen implementieren
Grund: Viele wünschen sich weitere Klassen im Spiel. Grundsätzlich ist das ja auch machbar, allerdings ist immer die Frage zu stellen, ob nicht spielintern Dinge geprüft werden, die auf den ersten Schein nicht von Belang sind (hier spiele ich auf eine verfügbare Mod an, welche die Klasse "Barbar" inkludiert hat).
Erklärung: Durch die Implementierung von Subklassen könnte man dies geschickt umgehen: Man hätte die Archetypen, die jetzt schon existieren und die ihr für eure Trigger, Events etc. verwendet. Gleichzeitig gibt es die Subklassen, die dann die Modder verwenden dürfen um eigene Klassen zu generieren
Beispiel: Der oftmals gewünschte Gaukler wäre eine Subklasse des Streuners!
Nutzen für die Community: sehr hoch!
Aufwand für Crafty: Hier müsst ihr sicherlich einige Stellen im Game anpassen, wenn es in Richtung Anzeige etc geht. Alle Trigger bleiben allerdings beim Alten, die sicherlich die Hauptarbeit beim Überarbeiten machen würden!

- Datenmodell vereinheitlichen
Grund: Sorry, aber es ist grausam zu sehen wie ihr einfach mal eben ein Attribut irgendwo hinzufügt, weil ihr euch vorher keine richtigen Gedanken zum Datenmodell gemacht habt. Ich weiß heute nicht, ob ein Feature morgen noch funktioniert, weil ihr eben schnell noch irgendwo was hinzufügt. Ist sicherlich der aktuellen Situation geschuldet, aber kein Entwickler hat Spaß am Erweitern von Funktionen, wenn er sich nicht sicher sien kann, dass sein Werk mit dem nächsten Patch noch funzt (zumal ja täglich patches kommen)
Nutzen für die Community: hoch
Aufwand für Crafty: Ihr kennt euer Datenmodell selbst am Besten: Ich finde das, was ich bisher gesehen habe, nicht wirklich prickelnd -.-

- Beschreibung des Datenmodells
Grund: Bei manchen Dingen in euren Dateien, die man bearbeiten kann, frage ich mich was sie bedeuten (oder was ihr in Österreich so raucht ^^ )
Ihr solltet eure Datenmodelle einmal beschreiben: Welche Sektionen gibt es in den Savefiles, was haben die Attribute zu bedeuten, wie ist ein Spell aufgebaut, was kann ich gefahrlos ändern/hinzufügen, wovon muss ich die Finger lassen weil sie eventuell Spielentscheidend sind...
Nutzen für die Community: GIGANTISCH
Aufwand für Crafty: Sowas habt ihr natürlich schon bei euch herumliegen, sonst fängt man mit dem Programmieren ja gar nicht erst an... :whistling:

- Artwork Modding
Grund: Möglichkeit, weitere Items der Spielwelt hinzuzufügen und diese auch mit Artwork zu versehen
Erklärung: Mit den Avatarbildern im eigenen Verzeichnis habt ihr was großartiges gemacht! Da sollte jetzt mehr kommen: Eigene Bilder für Items, die man erwerben oder kaufen kann!
Nutzen für die Community: hoch!
Aufwand für Crafty: Kommt darauf an wie ihr es implementiert habt ;-) Sollte aber keine Arbeit sein.......

Gruß, Garthako
Savegame- und Charaktereditor für die Schicksalsklinge: RoA Party Editor
Informationen dazu hier im Forum: Link

#3
Danke erstmal für deine Vorschläge! Ich nehme dazu mal kurz Stellung

@Version auslesbar: Ist jetzt schon bei der CE-Version der Fall. Für Steam war das bisher nicht notwendig, und ich sehe auch keinen wirklichen Nutzen für Modder darin, weil das potentiell Mods produziert, die nur für "alte" Versionen funktionieren, und dann User vor die Wahl stellt "neueste Version ohne Mod oder alte Version mit Mod". Unser Ziel ist es, dass Mods mit jeder Version zusammen funktionieren, und wenn man uns genug Zeit lässt, können wir das auch umsetzen.

@Subklassen: Warum Subklassen umsetzen, wenn man völlig neue Klassen hinzufügen kann? Natürlich ist das Ausmaß der Modifkationen, vor allem für die Itemnutzung, dann natürlich größer. Die Abfragen machen wir ja auf die internen IDs der Klassen (zB witch, wizard, hunter, thief), dafür sind sie da.

@Datenmodell vereinheitlichen: Ich habe keine Ahnung, was es da zu vereinheitlichen gäbe. Die Daten sind im Falle von Savegames und PlayerCharacter-Daten serialisiert, passen also genau auf die interne Datenstruktur. Alle anderen Daten werden mit einem entsprechenden Reader eingelesen und interpretiert, wenn die Serialisierung einfach nicht sinnvoll war. Sie sind aus meiner Sicht immer logisch aufgebaut, dass aber ein Item nunmal anders aussieht und anders aufgebaut ist als ein routeevent oder ein Dialog auch auch ein de.xml, ist zum Einen der Bearbeitbarkeit in Excel, zum Anderen der effizienten und schnellen Entwicklung geschuldet.

Beschreibung des Datenmodells: Allein schon aufgrund der Struktur und der Bezeichnungen ist das Datenmodell nahezu selbsterklärend, sonst wäre wohl auch dein Savegame-Editor nicht innerhalb weniger Tage nach Release verfügbar gewesen. In Kombination mit unserem "DSATool" ist die XML-Struktur sogar völlig unerheblich, weil es die Bearbeitung der XML-Daten für bestimmte Bereiche wie Monster oder Items komplett übernimmt. Gerne setze ich mich nach Erledigung unserer Hausaufgaben an eine entsprechende Dokumentation, allerdings hätten das Gros unserer User aktuell vermutlich wenig Verständnis dafür, wenn ich anstatt Bugs zu fixen drei Tage lang an einer vollständigen Doku unserer Datenstrukturen sitze.

Artwork Modding: Wie ich schon vielfach gesagt habe, ist Modding-Fähigkeit unsere Zielsetzung, aber zuerst sind nunmal unsere Hausaufgaben dran. Deine Wunschliste ist verständlich und begründet, aber sie reiht sich in der Priorität bei all den anderen Wünschen an uns und unser Spiel ein. Von daher:
1) Wir werden uns definitiv darum kümmern, auch einen offiziellen Modding-Guide zu erstellen, wenn die Zeit dafür reif ist.
2) Die Zeit ist noch nicht reif dafür

@sicheres Modding allgemein: Das "Sicherste" Modding wäre eines, in dem es einzelne Mod-Verzeichnisse gibt, wo sämtliche Daten eines Mods zusammengefasst werden. Diese sind genauso aufgebaut wie die Hauptdateien, nur beinhalten sie ausschließlich geänderte Werte. Das Spiel liest dann zuerst die Hauptdateien ein, und überschreibt dann in eingestellter Reihenfolge je aktivem Mod mit den entsprechenden Änderungen, bzw. erweitert die Datenstrukturen der Hauptdaten entsprechend (zB durch neue Klassen, mehr und/oder geänderte Items usw.). Auf diese Art können auch mehrere Mods gleichzeitig aktiv sein, und etwaiges Delta-Patching macht keine Probleme, weil an den Vanilla-Daten keine Änderungen nötig sind. Diese Strukturen müssen allerdings von uns implementiert werden und können nicht "von außen aufgestülpt" werden. Und genau so werden sie das auch werden. Sobald die Zeit dafür gekommen ist, wovon ich in etwa 6-8 Wochen ausgehe. Davor ist Modding auf eigene Gefahr problemlos möglich, allerdings übernehmen wir dann auch keinerlei Funktionsverantwortung für die gemachten Änderungen.
Firefox ist immer schuld :)

#6
Eine Frage aus dem Bauch heraus von jemandem, der von logischen Strukturen zwar eine Ahnung hat, aber selbst keinerlei Entwicklungswissen besitzt:

Wäre es nicht sinnvoller, wenn man schon alle Mods in ein Verzeichnis einpflegt und die Dateien dort ablegt, durch einen (zur Verfügung gestellten) Autoinstaller des Mods und standardisierte Namensgebung der Dateien einfach nur "if...else" Bausteine in die jeweiligen Dateien einzubauen, die dann, anstatt die Originaldateien komplett umzuschreiben oder zu ergänzen, diese unangetastet lassen und über diese "Weiterleitung" auf die Moddateien zugreifen?

#7
[quote='craftyfirefox','index.php?page=Thread&postID=39183#post39183']Danke erstmal für deine Vorschläge! Ich nehme dazu mal kurz Stellung
@Version auslesbar: Ist jetzt schon bei der CE-Version der Fall. Für Steam war das bisher nicht notwendig, und ich sehe auch keinen wirklichen Nutzen für Modder darin, weil das potentiell Mods produziert, die nur für "alte" Versionen funktionieren, und dann User vor die Wahl stellt "neueste Version ohne Mod oder alte Version mit Mod". Unser Ziel ist es, dass Mods mit jeder Version zusammen funktionieren, und wenn man uns genug Zeit lässt, können wir das auch umsetzen.[/quote]
Ja, auf lange Sicht sollte es ja auch so sein, erstrebenswertes Ziel. Nur: Momentan klappt das einfach nicht, weil ja z.T. täglich Patches kommen, die dann die gemoddeten XMLs überschreiben. Hier möchte ich ansetzen, indem ich kontrollieren kann ob seit Zeitpunkt des Einspielens der Mod sich etwas am Patch getan hat. Dann muss ich den User darauf hinweisen dass dies zu Problemen kommen kann, die Mods mergen ja nicht, sie überschreiben!

[quote='craftyfirefox','index.php?page=Thread&postID=39183#post39183']
@Subklassen: Warum Subklassen umsetzen, wenn man völlig neue Klassen hinzufügen kann? Natürlich ist das Ausmaß der Modifkationen, vor allem für die Itemnutzung, dann natürlich größer. Die Abfragen machen wir ja auf die internen IDs der Klassen (zB witch, wizard, hunter, thief), dafür sind sie da.[/quote]
Ja, und genau das ist das Problem z.B. mit Turtles Mod: Er hat einfach eine ID "barbarian" eingeführt. Wie sich das auf das Game auswirkt kann ich nicht absehen, eine gute Idee ist es imho nicht!
Deshalb Subklassen, die als ID einfach weiterhin eure Klassen haben und sich dann im Detail abheben. Die Leute wollen ja nicht einen Barbaren statt des Kriegers, sondern einen Krieger und einen Barbar!
Deshalb komme ich direkt auf den Punkt
[quote='craftyfirefox','index.php?page=Thread&postID=39183#post39183']
Beschreibung des Datenmodells: Allein schon aufgrund der Struktur und der Bezeichnungen ist das Datenmodell nahezu selbsterklärend, sonst wäre wohl auch dein Savegame-Editor nicht innerhalb weniger Tage nach Release verfügbar gewesen. In Kombination mit unserem "DSATool" ist die XML-Struktur sogar völlig unerheblich, weil es die Bearbeitung der XML-Daten für bestimmte Bereiche wie Monster oder Items komplett übernimmt. Gerne setze ich mich nach Erledigung unserer Hausaufgaben an eine entsprechende Dokumentation, allerdings hätten das Gros unserer User aktuell vermutlich wenig Verständnis dafür, wenn ich anstatt Bugs zu fixen drei Tage lang an einer vollständigen Doku unserer Datenstrukturen sitze.[/quote]
Wenn ein Modder weiß, dass er die Finger von der ID zu lassen hat, dann fasst er die auch nicht an. Das meine ich auch, wenn ich "Beschreibung des Datenmodells" fordere: Finger weg von Attribut X, das verwenden wir intern! Es ist richtig, dass ich einiges im Editor ohne Doku erstellen konnte. Ich arbeite aber auch seit 7 Jahren mit XML Dateien. Trotzdem sind mir einige Attribute noch völlig schleierhaft: was ist fowData, wie wird es korrekt geparsed? Was ist auf einmal das Attribut varusestype in den Items? Es ist immer null. Vielleicht finde ich irgendwann ein Item mit einem gesetzten varusestype Wert und kann dann reversen was es zu bedeuten hat...

[quote='craftyfirefox','index.php?page=Thread&postID=39183#post39183']
Artwork Modding: Wie ich schon vielfach gesagt habe, ist Modding-Fähigkeit unsere Zielsetzung, aber zuerst sind nunmal unsere Hausaufgaben dran. Deine Wunschliste ist verständlich und begründet, aber sie reiht sich in der Priorität bei all den anderen Wünschen an uns und unser Spiel ein. Von daher:
1) Wir werden uns definitiv darum kümmern, auch einen offiziellen Modding-Guide zu erstellen, wenn die Zeit dafür reif ist.
2) Die Zeit ist noch nicht reif dafür[/quote]
Es sind ja auch Anregungen und kein lautes Rufen nach sofortiger Umsetzung! Ihr seid auf einem guten Weg, und ich glaube, dass ihr viele hilfreiche Tipps aus der Community ziehen könnt wenn sich hier Leute versammeln, die schon einmal gemoddet haben und einfach erzählen, was sie gerne hätten!

LG, Garthako
Savegame- und Charaktereditor für die Schicksalsklinge: RoA Party Editor
Informationen dazu hier im Forum: Link
Antworten

Zurück zu „Modding“

cron