Shadowrun XML Schema

  • Mir persönlich gehts ehrlich gesagt um reine Werte. Augenfarbe, etc. kann man gerne in ne Description packen, aber dafür XML-Elemente zu definieren halte ich für klaren Overkill.


    EIN Schema fände ich persönlich ansprechender, das würde die Verbreitung erleichtern. Alle "Gruppen" des Schemas müssen natürlich optional sein, d.h. man KANN damit neue Qualities, etc. speichern, aber man muß keine Quality-Definition speichern, wenn man nicht will.

  • Ahja, ok. Persönlich finde ich harte Werte auch passender. Alle Beschreibungen kann man ja in ein optionales Description-Element packen.


    Mir ist gerade nicht so ganz klar, wie der Modifier im XML angewandt werden soll. Bekommen alle Elemente, die modifiziert werden können, so einen (optionalen) Modifier verpasst? Welchen ModifierType braucht man und braucht man wirklich mehrere oder nur einen Modifier, der einfach auf verschiedene Element angewandt werden kann? Sowas wie:


    Code
    1. <weapon> <name>Waffe #1</name> <stats> <maxschaden>25</maxschaden> <minschaden>5</minschaden> </stats> <modifier value="1.25" description="beschreibung des modifiers" /></weapon>


    Oder:


    Code
    1. <weapon>
    2. <name>Waffe #1</name>
    3. <stats>
    4. <maxschaden>
    5. <value>25</value>
    6. <modifier value="1.25" description="beschreibung des modifiers" />
    7. </maxschaden>
    8. <minschaden>5</minschaden>
    9. </stats>
    10. </weapon>


    Dann könnte man alle Zahlenwerte als ein Typ definieren und ein Kindelement Modifier einführen... oder so ähnlich. ;-)

  • Ein Modifier ist etwas, dass einen CHARAKTER modifiziert. Zum Beispiel ein Reflexrecorder...


    Code
    1. <Bioware name="Reflexrecorder Pistolen" price="10000" availability="10" essence="0.1" cultured="true">
    2. <Modifier type="SkillBonus" target="Pistolen" value="1"/>
    3. </Bioware>


    Damit kann dann ein Tool am Ende alle Qualities, Equipment, etc. durchgehen und die finalen Boni berechnen.

  • Persönlich gefällt mir der Ansatz der Modifier, indirekt auf etwas einzuwirken, nicht so recht. Aus dem Beispiel mit den Pistolen kann man ableiten, dass man für jede Fertigkeit einen eigenen Reflexrecorder haben muss.


    Vielleicht wäre es sinnvoller sich da an den SQL-Ansatz für constrains heranzuwagen. Oben definiert man die Fertigkeit und den Recorder. Der Recorder hat den Hinweis auf einen Modifier und erst später kommt eine Sammlung von Modifiern die deren Auswirkungen (wie auf was) aufzeigen.


    Das hat den Vorteil, dass man nicht jedes Implantat oder jeden Ausrüstungsgegenstand durchsuchen muss um Modifier zu finden, da diese sich alle an einer Stelle tummeln.


    [EDIT]

    Code
    1. <implant modifier="gib mir einen namen" ..>
    2. <skill name="Pistolen" ..>
    3. <modifiers>
    4. <modifier id="gib mir einen namen" type="skillBonus" target="Pistolen" ...>
    5. ...
    6. </modifiers>


    [EDIT2]
    ... einen eigenen Reflexrecorder haben muss im XML (Datenbank?) ...

  • [strike]Dazu müsste man dann IDs für jedes Element einführen, damit eine Referenzierung möglich ist, oder nicht?[/strike]
    Ahja, also Referenzierung über IDs. Damit könnten die Elemente natürlich verknüpft werden, aber ich sehe noch nicht ganz den Vorteil. Wo die Modifier definiert sind, ist ja eigentlich Nebensache. Und mit XPath könnte man sie eigentlich von jeder Stelle herausfischen.


    Vielleicht sollte man als erstes ein Beispiel-XML erstellen, bevor das Schema erstellt wird? Quasi als Anschauungsobjekt, um alle Möglichkeiten durchzuprobieren.

  • Das XML wird riesig und die meisten Parser verschlucken sich dann, das in DOM abzubilden (was nötig ist für XPath). War zumindest vor zwei Jahren noch so :)
    Aber eine Beispiel XML um daraus das XML Schema abzuleiten finde ich eine gute Idee.

  • Gut, die Größe könnte man ja im Auge behalten. Ich gehe erstmal davon aus, dass aktuelle Rechner ein XML beliebiger Größe im Speicher halten können. Die DOM-Parser sind in den letzten 2 Jahren auch nicht stehen geblieben, so dass eigentlich nix mehr gegen XPath spricht. Aber das bleibt abzuwarten.


    Ich denke, Irian sollte im Wiki dann mal ein XML anlegen, in dem seine Vorstellung bis jetzt drin sind. Anscheinend ist da schon einiges an Gedankenarbeit reingeflossen. :-)

  • Hui, also die Definition der Klassen direkt im XML ablegen, ok. Ich hätte diese evtl in ein eigenes XML ausgelagert, quasi als eigene Datentypen. Dann könnte man einfach in dieser Art machen:


    Code
    1. <character>
    2. <race>
    3. <human />
    4. </race>
    5. <name>Charakter #1</name>
    6. </character>


    Dazu müsste man dann natürlich die Rassendefinition aus einer eigenen XML laden. Wenn man's natürlich so individualisierbar halten möchte, dann wird das XML ja wirklich schnell größer. Ich bin eher Fan von festen Basistypen mit evtl einigen Modifizierungen, aber dafür könnte man sich aus den bestehenden Rassen-XMLs ja eigene erstellen... 8)


    Bin gespannt, wie's weiter geht!

  • Hm, hm. Wahrscheinlich steh ich eher auf dem Schlauch.


    Wenn man einen Charakter der Rasse Mensch abbilden möchte, so hat dieser doch bestimmte Grundwerte, oder nicht? Bei der aktuellen XML-Definition müsste man diese Grundwerte in jedem Charakter-XML wieder aufnehmen. Daher wäre mein Verständnis, dass man die Definition der Rassen als Datentyp vornimmt und im eigenen Charakter-XML nur bestimmte Modifier auf Werte wie z.B. Intelligenz anwendet.

  • Nö, die Grundwerte muß man nicht aufnehmen, man speichere einfach "Stärke (+)2" und schon kann jedes Tool das automatisch aus "Mensch" und "Stärke +2" errechnen: 3.


    Dass natürlich jede Anwendung die entsprechenden Gurndlagen vorhalten muß, also eben z.B. die Modifiers für Menschen, ist klar. Man könnte natürlich auch die fertigen Werte speichern und die Modifikatoren quasi rückwärts rausrechnen...

  • Falls wir uns mal zufällig im ICQ sehen sende ich dir meinen aktuellen Stand des Chargens zu. Womöglich hilft dir das bei manchen Sachen (aber Achtung: Der Quelltext ist quasi null kommentiert und das ganze ist nur hysterisch gewachsen *g*)


    Vorausgesetzt du hast daran Interesse

  • Nach ganz grober Durchsicht kommen mir zwei Fragen:


    Wo speichert das Schema die Kategorie einer Fertigkeit (Kampf-, phsysisch, sozial, Resonanz-, etc.) ? Das ist u.a. ja für ein paar Dinge erforderlich, z.B. um die Kosten von Reflexrekordern zu bestimmen (und ob sie überhaupt erlaubt sind), ob Skills von Hochleistungsgelenken Bonuswürfel bekommen, etc. . Ist natürlich auch nix festes, so werden magische Fertigkeiten ja z.B. zu Wissensfertigkeiten, wenn ein Magier ausbrennt.
    Zweitens: Ist das Schema nur für die Erstellung gedacht, oder soll damit auch Charakterverwaltung im Laufe der Runde bewerkstelligt werden?

    Überlegt Euch mal bis dahin,wie die Signaturlandschaft aussehen würde,wenn alle ,die von SR4 überzeugt wären,allen SR3 Spielern in ihren Signaturen sagen würden "Ihr habt doofe Ohren "
    -Medizinmann