Implementierungsvorschlag: Eigene Zauber
Verfasst: 10. Jun 2017, 14:24
Es wurde schon mehrfach von den Entwicklern gesagt, dass sie Probleme hatten eigene Zauber und Formeln so zu unterstützen, dass es damit keine Probleme beim Hochladen/Austauschen von Helden-XML-Dateien gibt. Daher würde ich hier gerne einen Vorschlag machen, wie dieses zu bewerkstelligen sein könnte. Ich bitte um Rückmeldung falls das nicht allzu viel Aufwand bedeutet.
Wie ich das sehe liegt das Hauptproblem hier:
• Wie unterscheidet die Software zwischen Original-(Regel-)Formel und eigener Erweiterung.
• Wie gibt man einen Helden weiter, der über eigene Formeln verfügt, sodass jeder diesen Helden nutzen kann.
• Wie geht man damit um, wenn zwei Spieler die gleiche Erweiterung (Zauberformel, Talent o.ä.) unterschiedlich hinzugefügt haben.
Mein Vorschlag um das zu lösen wäre es, jedem Vor- und Nachteil, jeder Sonderfertigkeit, jedem Talent und jedem Zauber eine einmalige ID zuzuweisen. Diese ID könnte bei Ulisses-Regel-basierten Dingen einfach folgendes Format haben:Dabei wäre XXX der Typ (Zauber, Sonderfertigkeit, ...) und YYY der Name des Zaubers etc..
Bei eigenen Erweiterungen würde das so aussehen:Dabei wäre XXX wieder der Typ und ZZZ eine UUID oder GUID (und somit für jede erstellte Erweiterung einmalig).
Die Definitionen aller bei einem Helden verwendeten nicht-ULISSES-Regeln/Formeln/etc. würden dann in exportierten Helden-XMLs enthalten sein. Da die GUID/UUIDs einmalig sind ergeben sich keine Konflikte mit den importierten Regeln/Formeln/Sonderfertigkeiten von extern – solange die Helden-SW all diese Dinge nicht mehr mit ihrem Namen, sondern nur noch mit ihrer ID handhabt.
Beim Import einer SF/Vorteil/Nachteil/Regel/etc. würde dann deren ID mit der ID in der Helden-SW abgeglichen. Ist die ID identisch würde die Definition davon weggeworfen und die interne Definition verwendet (und beim Import mit einer Ja/Nein-Message darauf hingewiesen). So ergeben sich nie Konflikte. Alternativ kann die Helden-SW auch nachfragen, ob der Held importiert werden soll und die ID(s) seiner Erweiterungen zusammengeführt werden sollen.
Um weiterhin das externe editieren der XML zu ermöglichen sollten entdeckten Erweiterungen ohne GUID/UUID eine solche bei Programmstart zugewiesen werden. Dann kann man einen Erweiterungseintrag extern editieren und dabei einfach sein UUID/GUID-Feld löschen ohne dass das zu Problemen führt.
Beim Editieren einer existierenden Erweiterungs-SF/Vorteil/Zauber/etc. bekäme diese eine NEUE ID und die Helden-SW würde danach fragen ob existierende Helden mit dieser Erweiterung umgestellt werden sollen (verhindert Konflikte mit bereits exportierten Helden).
Eine Erweiterung könnte nur dann gelöscht werden, wenn sie nicht mehr genutzt wird. Eine Liste der Helden, die eine gewisse Erweiterung gerade nutzen wäre sinnvoll, aber nicht zwangsweise notwendig.
Da ich (aus guten Gründen) nicht in den Quellcode der Helden-SW hineinsehen kann kann ich hier natürlich nur eine mögliche Lösung für das Problem, wie ich es sehe postulieren. Es wäre nett, wenn einer der Entwickler trotzdem mal drüber schauen und Rückmeldung geben könnte.
Mit freundlichen Grüßen,
Noiona
Wie ich das sehe liegt das Hauptproblem hier:
• Wie unterscheidet die Software zwischen Original-(Regel-)Formel und eigener Erweiterung.
• Wie gibt man einen Helden weiter, der über eigene Formeln verfügt, sodass jeder diesen Helden nutzen kann.
• Wie geht man damit um, wenn zwei Spieler die gleiche Erweiterung (Zauberformel, Talent o.ä.) unterschiedlich hinzugefügt haben.
Mein Vorschlag um das zu lösen wäre es, jedem Vor- und Nachteil, jeder Sonderfertigkeit, jedem Talent und jedem Zauber eine einmalige ID zuzuweisen. Diese ID könnte bei Ulisses-Regel-basierten Dingen einfach folgendes Format haben:
Code: Alles auswählen
ULISSES-XXX-YYY
Bei eigenen Erweiterungen würde das so aussehen:
Code: Alles auswählen
ERWEITERUNG-XXX-ZZZ
Die Definitionen aller bei einem Helden verwendeten nicht-ULISSES-Regeln/Formeln/etc. würden dann in exportierten Helden-XMLs enthalten sein. Da die GUID/UUIDs einmalig sind ergeben sich keine Konflikte mit den importierten Regeln/Formeln/Sonderfertigkeiten von extern – solange die Helden-SW all diese Dinge nicht mehr mit ihrem Namen, sondern nur noch mit ihrer ID handhabt.
Beim Import einer SF/Vorteil/Nachteil/Regel/etc. würde dann deren ID mit der ID in der Helden-SW abgeglichen. Ist die ID identisch würde die Definition davon weggeworfen und die interne Definition verwendet (und beim Import mit einer Ja/Nein-Message darauf hingewiesen). So ergeben sich nie Konflikte. Alternativ kann die Helden-SW auch nachfragen, ob der Held importiert werden soll und die ID(s) seiner Erweiterungen zusammengeführt werden sollen.
Um weiterhin das externe editieren der XML zu ermöglichen sollten entdeckten Erweiterungen ohne GUID/UUID eine solche bei Programmstart zugewiesen werden. Dann kann man einen Erweiterungseintrag extern editieren und dabei einfach sein UUID/GUID-Feld löschen ohne dass das zu Problemen führt.
Beim Editieren einer existierenden Erweiterungs-SF/Vorteil/Zauber/etc. bekäme diese eine NEUE ID und die Helden-SW würde danach fragen ob existierende Helden mit dieser Erweiterung umgestellt werden sollen (verhindert Konflikte mit bereits exportierten Helden).
Eine Erweiterung könnte nur dann gelöscht werden, wenn sie nicht mehr genutzt wird. Eine Liste der Helden, die eine gewisse Erweiterung gerade nutzen wäre sinnvoll, aber nicht zwangsweise notwendig.
Da ich (aus guten Gründen) nicht in den Quellcode der Helden-SW hineinsehen kann kann ich hier natürlich nur eine mögliche Lösung für das Problem, wie ich es sehe postulieren. Es wäre nett, wenn einer der Entwickler trotzdem mal drüber schauen und Rückmeldung geben könnte.
Mit freundlichen Grüßen,
Noiona