Aeolitus / Sephrasto

Ein Charaktergenerator für das DSA-Hausregelsystem Ilaris. Starte einfach die Sephrasto.py und leg los!
MIT License
23 stars 13 forks source link

Inkonsistenz in Datenstruktur #78

Closed lukruh closed 1 year ago

lukruh commented 2 years ago

Beim Überfliegen eines gespeicherten Charakters fällt auf, dass einige Daten als Attribute andere als Text gegeben sind (nicht nur #66 ). Die Benennungen der Tags(?) sind ausserdem inkonsistent: Groß-/Kleinschreibung, Bindestriche, Umlaute, Abkürzungen, Sprache usw.. Hier ein paar Beispiele:

<eigenheiten>
      <Eigenheit>...</Eigenheit>
</eigenheiten>
<AllgemeineInfosExt>
  <groesse></groesse>
</AllgemeineInfos>

<Attribute>
  <KO>4</KO>
</Attribute>
<Energien>
    <AsP wert="0"/>
</Energien>

<Fertigkeiten>
  <Freie-Fertigkeit name="Sprache:  Tulamidya" wert="3"/>
</Fertigkeiten>

Sich auf konsistente Standards zu einigen würde es unter Anderem vereinfachen die XMLs automatisch zu konvertieren allerdings auch nicht wirklich abwärtskompatibel bleiben. Falls es da irgendwann eine Komplettüberarbeitung geben sollte, dann warscheinlich mit einer neuen Versions (edit: alte dateien können durch migrations automatisch upgedated werden). Die Daten sollen im xml-Format bleiben (nehme ich an) oder wäre ggf. JSON oder ähnliches auch eine Option?

brzGatsu commented 2 years ago

Aus 66 kopiert: Der Konsistenz wegen sollte der Inhalt von Freien Fertigkeiten in der Datenbank in einem Attribut "name" stehen.

brzGatsu commented 2 years ago

Charakterdateien würde ich definitiv nicht inkompatibel mit neuen Versionen machen. Das lässt sich aber auch ohne major version upgrade mit einer einfachen migration lösen (siehe Charakter.py::charakterMigrieren).

Ingesamt handelt es sich aber um ein non-functional, daher zumindest bei mir ziemlich weit unten auf der Prio. Falls sich jemand anderes drum kümmern möchte gerne, aber wie gesagt nur mit ausgiebig getestetem migration code.

JSON finde ich grundsätzlich angenehmer als XML, aber dafür möchte ich keine migration schreiben und die Datenbank ist ja auch in XML - zu wenig Mehrwert imho.

Für die Anbindung von externen Tools lautet meine Empfehlung nach wie vor das über ein Plugin zu machen, ich sehe die Datenbank und Charakterdateien als implementation details an, auf die man sich nicht verlassen sollte. Man könnte hier evtl. noch ein commandline interface anbinden um solchen export-plugin code auf diese Art triggern zu können.

lukruh commented 2 years ago

Charakter.py: übernatürlicheFertigkeiten vs EP_Uebernatuerlich_Talente suellte alles mit ue und selbe schreibweise zB: charakter.uebernatuerliche_fertigkeiten und charakter.ep_uebernatuerliche_talente (beides für fert+talente) als beispiel, es gibt noch viele mehr ;)

brzGatsu commented 1 year ago

fixed in https://github.com/Aeolitus/Sephrasto/commit/00969a8fef5792c0859324fc0dcf8fa4d1a4878d