Konzept

Die Grundidee

Bei dem RPG Framework handelt es sich um die Idee, wiederverwertbare Komponenten bereitzustellen, mit der die Entwicklung von Software zur Unterstützung des Pen&Paper Rollenspiels beschleunigt werden kann. Das Framework selber ist dabei nicht an ein bestimmtes Rollenspiel-System gebunden, sondern bietet übergreifende Abstraktionen, die dann durch Plugins mit Leben gefüllt werden und somit Anwendungen, die auf dem RPG Framework basieren schnell neue Features zur Verfügung stellen.

Highlevel overview of the RPGFramework concept
Highlevel overview of the RPGFramework concept

Ziele des Frameworks sind:

  • Charakter-Verwaltung
    Erlaubt das Laden und Speichern von Charakteren, sowohl lokal, wie auch auf Online-Speichern
  • Druck-Ausgabe
    Charakterbögen, Spielleiter-Dokumente – die eigentliche Druckausgabe kommt von Plugins, das Framework sorgt aber für einen einheitlichen Zugriff darauf.
  • Verwalten von Spielrunden
    Führt Konzepte von Spielern (mit Kontaktdaten), Spielrunde, Abenteuern und Sitzungen ein.
  • Einbindung von Geräten
    Egal ob zweiter Monitor, Smart-TV, Tablet, Smartphone der Mitspieler – lokal oder entfernt.
  • Medien-Kontrolle
    Handouts verteilen, Musik abspielen oder gar das Licht steuern. Chat (für Online-Sitzungen oder als geheime Spielleiter-Spieler Kommunikation)
  • Offenheit für Erweiterungen die nur für bestimmte Systeme relevant sind
    Z.B. Proben würfeln, einen Kampf verwalten.

Dabei wird das RPG Framework unterteilt in eine Schnittstellenbeschreibung (API) und eine Implementierung davon. Über die API können sich Anwendungsentwickler wie auch Plugin-Entwickler auf Funktionen des Frameworks verlassen, ohne sich Gedanken um die reale Umsetzung machen zu müssen. So sollte es schnell möglich sein, z.B. einen Charaktergenerator für System X zu bauen und sich dabei darauf verlassen, daß das RPG Framework um die lokale und die online Speicherung kümmert.

Die Umsetzung

Um die Wartbarkeit der Software zu verbesseren, wird das RPGFramework unterteilt in eine Schnittstellenbeschreibung (API) und eine Implementierung (namens Babylon).  Denen von euch, die schon mal Software entwickelt haben, sollte das Konzept vertraut sein.

Wir verwenden Java als Programmiersprache. Das hat keinen besonderen Grund, außer dass es gut plattformübergreifend einsetzbar ist.

Quellcode und Dokumentation des RPGFramework API sind offengelegt. Nur so ist gewährleistet, dass möglichst viele Leute in die Lage versetzt werden Anwendungen basierend auf dem RPGFramework oder Plugins hierfür zu entwickeln.

Die RPGFramework Implementierung (Babylon) ist Closed Source. Dies hat primär den Grund, dass wir hier Funktionen einbauen wollen, die es ermöglichen Dinge wie eine Lizenzverwaltung unterzubringen. Auf diesem Weg soll zumindest die theoretische Möglichkeit geschaffen werden, Features oder Daten einzubauen, die nur mit einer bei einem Verlag erworbenen Lizenz nutzbar sind.

Anwendungen

Das RPGFramework ist – aus Softwareentwicklungssicht – lediglich eine Bibliothek. Es bedarf eines Frontends um sie auch zu nutzen. Das erste entwickelte Frontend ist ein Charaktergenerator namens Genesis. Dieser nutzt zwar nur ein kleinen Teil der Funktionalität des RPGFrameworks, ist aber vermutlich das Tool, welches ein Großteil der Spieler interessiert.

Für Spielleiter ist eine weitere Anwendung in der Entwicklung. Hier liegt der Fokus auf einer generellen Unterstützung beim Spielleiten, was die Arbeit mit Handouts, Musik, Licht (SmartHomes lassen grüssen) etc. angeht. Auch an die Einbindung entfernter Spieler über das Internet wird gedacht.

Erweiterungsmöglichkeiten

Von sich aus kann das RPGFramework nichts, was speziell auf ein Rollenspielsystem abgestimmt ist. Dies muss durch Plugins nachgerüstet werden. Plugins unterscheiden sich in den unterstützten Rollenspielsystemen und den zur Verfügung gestellten Funktionen. Diese können z.B. umfassen:

  • Kernfunktionen (Laden/Speichern von Charakteren, Grundsätzliche Daten wie Attribute, Rassen, Fertigkeiten, Zauber …
  • Erschaffung/Modifikation von Charakteren (mit GUI)
  • Druck von Charakteren
  • Probenwürfe, Kampfmanagement, etc. (Noch nicht definiert)

Die Unterteilung erlaubt, dass man später z.B. ein Druckplugin problemlos durch ein anderes ersetzen kann (wenn dies z.B. schönere Resultate erzielt) oder den Part der Charaktererzeugung austauscht. Lediglich das Kernplugin eines Systems ist im Prinzip nicht austauschbar.

Stand Mai 2015 ist das Rollenspiel Splittermond vollständig unterstützt (Auf Grund der Historie der Genesis-Anwendung). Als weiteres System ist Space 1889 in Arbeit.

Vergleichbare Anwendungen

RPGFramework lässt sich mit Fantasy Grounds vergleichen, aber mit einen deutlichen Unterschieden: a) es ist kostenlos, b) es läuft auf verschiedenen Betriebsystemem und c) man muss Java-Entwickler sein, um Erweiterungen zu schreiben.

Ein passenderer Vergleich sind die RPTools, die ebenfalls kostenlos (und sogar Open Source) sind, plattformübergreifend zur Verfügung stehen und in Java geschrieben sind. Hauptunterschied hier ist, dass RPTools über eine eigene Scriptsprache erweitert werden, während RPGFrameworks sich an Java Entwickler richtet.Beide genannten Tools sind mächtig und haben breite Unterstützung, während dies Projekt noch ganz am Anfang steht. Derzeit ist man wahrscheinlich besser beraten, eines der anderen Programme zu verwenden, aber das wird sich hoffentlich ändern.

3 thoughts on “Konzept”

    1. Hi Mario,

      Das ist .. kompliziert. 😉 Hier muss unterschieden werden zwischen a) der Framework API, b) der Framework Implementierung und c) den Plugins.

      Wenn Du nur in den Sourcecode der Framework API schnuppern möchtest, findest Du den hier: http://blog.rpgframework.de/?page_id=240.
      Das ist kein Open Source, sondern eher ein „free as in beer“. Man könnte aus den Komponenten aber leicht OpenSource machen – und langfristig wäre das auch sinnvoll.

      Bezüglich des Rests schreibe ich Dir noch eine Mail.

      Grüße,
      Stefan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.