Shadowrun XML Schema

  • Hallöchen,


    hat schonmal jemand daran gedacht, ein Schema für ein XML-Format zu schreiben, mit welchem man Charaktere, Qualities, Skills, etc. aus Shadowrun halbwegs gut beschreiben kann? So ein Schema wäre recht praktisch, dann hätte man ein einheitliches Format (und aus nem Schema kann man z.B. mit JAXB ganz simpel fertige Klassen generieren in die man ebenso simpel XML einlesen kann)...


    Nur so als Idee...

  • Bastle, sofern ich Zeit dafür habe, an einem SR4-Chargen. Man darf die Abhängigkeiten der Eigenschaften untereinander nicht unterschätzen - soviel zum Thema Klassen ableiten :D
    Halte die Idee aber für gut. So könnte man mittels XSL (XSLT bzw. XSL-FO) unterschiedliche Formate für die Ausgabe wählen. Wenn du magst helfe ich dir gerne bei der Erstellung des XML Schema. Netbeans hat da ein Plug-In für, dass zu gebrauchen ist (wenngleich es Null an xmlspy rankommt!).

  • Ich habe bis jetzt aber auch noch keine wirklich maschinelle Verarbeitung gesehen. Oder gibt es mittlerweile Charaktergeneratoren bzw. -Verwaltungen?


    Ein XML-Format wäre aber wirklich sinnvoll, vor allem, wenn es um den Char-Austausch bei Online-Runden geht. ;-)

  • Och, ich glaube, das ist eine Frage der Qualität des Schemas. :-) Man wird sicherlich nicht alle individuellen Ausprägungen und Geschmacksfragen treffen, aber einen Basissatz zum Austausch von Informationen sollte möglich sein. Interessante Frage und irgendwie ein gutes Projekt, um etwas über XML Schema zu lernen.

  • Wie gesagt, helfe hier gerne. Würde vorerst nur in beratender Funktion unterstützen und wenn der Chargen soweit ist zu exportieren (dazu soll erstmal ein Charakter als Ganzes erfasst werden können) sollte es ein kein Problem sein ein XML auszuspucken. Der Import ist eine ganz andere Geschichte. Bin auf das Wiki gespannt.

  • Also in Java läßt man sich einfach aus dem Schema die Klassen generieren und schon hat man die Basis für ein beliebiges Programm das mit 3-4 Zeilen Code XML importieren und exportieren kann, sehr praktisch.

  • Möglich ist Vieles, halte das aber nicht für einen gangbaren Weg weil dies keine interne Änderungen in den Klassen erlaubt ohne das XML zu verändern, was oftmals nicht gewollt ist - man bedenke die Abhängigkeiten von XSL.
    Bspw. unterscheide ich im Chargen intern nach Legalität (Legal, Eingeschränkt, Verboten), Verfügbarkeit (1, 2, 3, ...) und Verfügbarkeits-Arithemetik (Single, mit Stufe multiplizieren, usw). Dies im XML abzubilden würde dem Grundgedanken von XML widersprechen => einfach für Menschen lesbar.


    Viel angenehmer wäre die Information

    Code
    1. ## schön
    2. <equipment availability="4F" ...>
    3. ## Abbildung meiner Klasse
    4. <equipment availability="4" availArithm="SINGLE" legalty="FORBIDDEN" ...>


    Also wenn ich die Wahl hätte würde ich für das XML Version 1 bevorzugen. Vor allem da dies viel weniger Logik in den XSL benötigt.
    Das sind so Sachen auf die ich dann hinweisen würde ;)

  • Wenn "einfach für Menschen lesbar" bedeutet, dass ich dafür auf Informationen verzichten muß, würde ich sagen "Egal!" :-) Die Anzahl der Personen, die so ein .xml File wirklich lesen WOLLEN und WERDEN dürfte an einer Hand abzuzählen sein, die meisten (alle?) Leute werden wohl eher die Ausgabe in speziellen Programmen bekommen...


    Das/Mein Ziel wäre es eher, ein Schema zu finden, das alle Notwendigkeiten abdeckt und da gehört dann halt auch sowas dazu. Sonst muß jedes Tool wieder eigene Daten vorhalten, z.B. für die Legalität.

  • Hmmm, gut. Liegt der Fokus auf dem Datenaustausch zwischen diversen Tools hast du natürlich recht.
    Vielleicht wäre es kein Fehler zu Beginn festzulegen, wofür das XML später genau genutzt werden soll. Dies bestimmt den Grad der Details im Endprodukt.


    Möglichkeit 1: die darin liegenden Daten werden nur dazu genutzt einen Charakterbogen auszufüllen (in Form von HTML, PDF) um diesen dann austauschen zu können


    Möglichkeit 2: zusätzlich zu Möglichkeit 1 sollen diverse Tools die Daten sinnvoll weiterverarbeiten können.


    Möglichkeit 3: man setzt 2tens um und über XSL wird 1stens generiert. Nichts spricht dagegen XML in XML umzuwandeln.


    Jetzt stellt sich mir die Frage: müssen die Parser der Tools einfach etwas klüger sein oder bekommen diese atomare Informationen woraus diese dann die "echten Werte" ableiten können (vgl. meine XML Beispiele)


    Ich nehme mir das Recht heraus und taufe das Kind einfach "XML Schema for SR-Characters" bzw. "XSR".


    endlich habe ich einen Grund mir xmlspy privat zu kaufen *harhar*

  • Toller Name, leider zu kurz gegriffen, weil das Schema nicht nur für Charakterbeschreibungen gut sein soll. Das Schema das ich mir vorstelle, soll nicht nur Charaktere, sondern auch andere Sachen, z.B.


    Rassen
    Qualities
    Skills
    Equipment


    etc. beschreiben können. Dann kann man z.B. seine Hausregel-Rasse auch in dem XML-Format beschreiben und schon kann jeder sie einlesen. Wenn jemand z.B. alle Rassen neu berechnet (wird gerade im Dumpshock-Forum gemacht) könnte man sie einfach als .xml Datei zur Verfügung stellen und schon kann man sie einlesen.

  • Ups Mißverständnis. Aktuelle Qualities, Race usw. sind für mich Eigenschaften eines Charakters genauso wie die Hintergrundgeschichte, Augen- oder Haarfarbe.


    Code
    1. SR_Character+ race : Race+ qualities : List of Quality+ backgroundStory : String+ attributes : List of Attribute+ equipments : List of Equipment+ ...


    Code
    1. Attribute+ name : String+ baseLevel : int+ implantBonus : int+ ...


    Code
    1. Skill
    2. + name : String
    3. + boundAttribute : Attribute
    4. + ...


    Aber das ist natürlich Geschmackssache auf welcher Ebene man was darstellt.


    [EDIT]
    Ach jetzt verstehe ich das erst richtig. Du willst zusätzlich einen Pool (Datenbank?) der vorhandenen Rassen etc. vorrätig haben. Gut, das hat ja mit dem XML, dass einen Charakter beschreibt nichts direkt zu tun.

  • Korrekt. Die Quality wird beschrieben, aktuell habe ich das so...


    QualityDefinition
    - Name
    - Kosten
    - List von Modifiern (eigenes Element, das alle Modifikationen beschreiben kann)
    - Condition (eigenes Element, das Bedingungen kapselt, z.B. dass ein Magier nicht auch Technomancer nehmen darf)
    - Description


    Die Qualities die ein Charakter hat, sind dann bloß noch Strings. Wenn man einen perfekten Export will, kann man ja alle Qualities mit-exportieren, die ein Charakter hat, aber das sollte nur bei eigenen (Hausregel-) Qualities nötig sein.

  • Bei den Skills sollte etwas mehr dabei sein.


    So gibt es einen Wert für direkte Boni, dauerhafte Boni (Synthacardium z.B.) und auch eine Klasse (körperlich, Kampf, usw.). Ebenso gibts noch die Aufteilung in Aktivskills und Wissenskills (die wieder Kategorien haben...).


    Leider kenn ich mich mit XML Schema nicht ausreichend aus, um euch zu helfen. :( Vielleicht ja in ein paar Wochen.


    Grüße,
    Coldan

  • Ausrichtung und Detailgrad können wir ja dann im Wiki besser festhalten schätze ich (wobei ich nicht weiß ob die Diskussionsfunktion eines Wiki dafür geeignet ist). Irian wollte ja eines einrichten, mal abwarten :)

  • Ich denke, man wird bei so einer Anforderung nicht umhin können, mehrere Schemata zu erstellen, z.B. 1x für Charaktere, 1x für Ausrüstung, usw. Für den Anfang würd ich aber mit einem Grundsatz an Eigenschaften herangehen, mit dem z.B. man Charaktere modellieren kann und dann iterativ in neuen Versionen die gewünschten Eigenschaften nachziehen. Wenn der Anfang zu komplex wird, verrennt man sich schnell in die Details. Ich bin da eher für agile Entwicklung mit kleinen Zyklen, also schnell etwas brauchbares hinbekommen und dann schnell auf Änderungen/Erweiterungen reagieren. ;-)


    Natürlich müssen nach und nach alle Eigenschaften abgebildet werden, z.B. eine Enumeration für Rassen, für Augenfarben etc. Vielleicht klärt sich das aber auch alles von selbst, wenn man erstmal anfängt.


    [strike]Gibt es denn jetzt schon ein Wiki, an dem man sich beteiligen könnte? :-)[/strike] Eh ja. Hab's dann doch noch gelesen... ;-)


    Ich werd mir das ganze mal in Eclipse einrichten. Der XML-Editor des WTP bietet ja ganz gute Möglichkeiten, wenn's um Datentypen und Verknüpfungen geht.