So, wie ihr es vermutlich bereits bemerkt habt, gab es in letzter Zeit bezüglich dieses Projekts wenig bis gar keinen Fortschritt, vom Einrichten des Web-Auftritts mal halbwegs abgesehen.
Die Gründe dafür sind vielfältig - neben meiner regulären Arbeit ist jedoch vermutlich die selbstaufgehalste Spezifikationsarbeit der Hauptgrund für diesen bedauerlichen Zustand. Um nun endlich mal voran zu kommen, wollte ich euch gerne einige Dinge mitteilen, die in den letzten Wochen und Monaten in Entscheidungsform in mir herangereift sind.
First things first - der Name.
JCupGames als Name für das Projekt war das Ergebnis guten Willens, der es allen recht machen sollte. Wie allzu oft ist diese Bemühung - so zumindest meine Sicht - an eben jenem Ziel gescheitert. Der Java-Bezug ist mit J und Cup gleich doppelt vertreten, der Name weckt zweifelhafte Analogien (ein J-Cup?) und präsentiert sich wenig griffig. Der Implementierungsname RPGenesis besitzt aus meiner Sicht keinen dieser Nachteile, weswegen JCupGames ersatzlos gegen RPGenesis ausgetauscht werden sollte.
Der Spezifikations-Albtraum.
Jaja, die Spezifikation. Ich muss gestehen, an diesem Punkt vermutlich selbst Schuld zu sein. Jedenfalls hat es sich in letzter Zeit herauskristallisiert, dass ich zum Abfassen einer vollständigen Spezifikation von RPGenesis schlicht und einfach nicht in der Lage bin. Problematisch ist daran vor allem der technische Aspekt: um RPGenesis gemäß meiner Vorstellung spezifizieren zu können, müsste ich das gesamte System bereits geplant und entworfen haben - was aber nicht der Fall ist, primär aufgrund der bereits selbstattestierten Unfähigkeit. Ein weiteres Problem, welches ich zu Beginn vollkommen unterschätzt habe: die Spezifikation tötet den Geist des Projekts. Anstatt gemeinsam ein System zu entwerfen und zu implementieren sollen die Entwickler nur als Arbeitspferde oder verlängerte Arme des Spezifikators dienen und die Spezifikation Stück für Stück anspruchslos umsetzen. Mit dem Geist eines Open-Source-Projekts ist dieser Gedanke meiner Meinung nach nur schwer zu vereinbaren, so denn überhaupt. Statt also RPGenesis komplett im Alleingang zu designen, gedenke ich das Entwicklungsmodell umzukrempeln. Irgendwann in näherer Zukunft sollte es ein (virtuelles) Treffen aller Interessierter geben, in welchem wir gemeinsam den grundlegenden Rahmen und das benötigte Minimum an Features für RPGenesis und den dazugehörigen Editor festlegen werden. Die Entwicklung der dabei festgelegten sowie eigener Features soll dann durch die individuellen Entwickler unter Absprache mit dem Maintainer des Projekts oder eines noch zu bildenden Gremiums erfolgen, welcher/welches die Gesamtentwicklung von RPGenesis überwacht.
Der Wahnsinn mit der Implementations-Neutralität.
Eigentlich auch ein Unterpunkt der Spezifikation. Meine ursprüngliche Absicht war es, mit der Spezifikation eine implementierungsneutrale Beschreibung von RPGenesis zu schaffen, welche von jedem in seiner Lieblingsprogrammiersprache implementiert werden können sollte. Dieser Plan ist letztendlich ebenso grandios gescheitert wie die Dokumentation. Obwohl in hehrer Absicht getroffen, so ist die Entscheidung für die Implementationsneutralität am Ende nur ein weiterer Sargnagel für die Spezifikation gewesen. RPGenesis ist ein Java-Projekt und dazu sollten wir stehen. Zudem vereinfacht dieser Ansatz die spätere Implementierung, da man nicht auf die Verwendung von Drittsystemen achten muss, die auch unter Nicht-
JVM-Sprachen ansprechbar sind (Datenbank!). Notfalls bzw. bei entsprechendem Interesse ließe sich eine sprachneutrale Beschreibung des dann aktuellen Standes von RPGenesis immer noch erstellen.
Goodbye SourceForge.
SourceForge ist eine großartige Sache. Mittlerweile steht uns jedoch ein eigener Server zur Verfügung, welchen wir entsprechend nutzen sollten. Das Grundgerüst der Webseite steht - Forum, Bugtracker und ein eigenes
SVN-Repository sollen demnächst folgen. Überlegenswert wäre auch die Verwendung einer
SVN-Alternative, z. B. Mercurial. Die SourceForge-Projektseite soll jedoch definitiv nicht mehr weitergenutzt werden, inklusive des dortigen
SVN-Repositorys. Die Diskussionen rund um RPGenesis sollen dann im weiteren Verlauf Stück für Stück in das eigene Forum verlegt werden.
Das Problem mit dem Bestandscode...
Steev war ja so freundlich, uns den Code seiner Easy Game Engine (EGE) als Grundlage der Implementierung von RPGenesis bereitzustellen. So sehr ich Steev und seine Arbeit schätze, so sollten wir diese Codebasis nicht verwenden. Ich respektire Steevs Arbeit an EGE und bin sicher, dass wir von ihm und seinem Werk fiel lernen können. Jedoch erscheint es mit falsch, RPGenesis auf der Grundlage von EGE aufzubauen - letztendlich würde RPGenesis damit zu einem bloßen Aufbau von EGE werden, ein Wrapper quasi. Da ich persönlich mit diesem Projekt auch das Ziel verbinde, etwas über den grundlegenden Aufbau einer Spiele-Engine zu lernen und selbst aktiv daran teilzuhaben, sehe ich die Verwendung von EGE als kontraproduktiv an. Letztendlich würden wir nur lernen, auf Basis von EGE ein
RPG-Framework zu basteln, nicht mehr und nicht weniger. Zudem lässt sich RPGenesis durch diesen Schritt einfacher an unsere Wünsche und Bedürfnisse anpassen und es entfällt der Aufwand, die Sourcen von EGE bzw. die dortigen Kommentare ins Englische zu übersetzen. Ich hoffe, Steev nimmt mir diesen Schritt nicht übel und wird uns weiterhin mit Rat und Tat beistehen. Die Emanzipation von EGE sehe ich jedenfalls neben der Umstellung des Entwicklungsprozesses als zentrales Erforderniss für den erfolgreichen Verlauf des Projekts an.
Ich hoffe, ich überrumple damit nun niemanden bzw. trete niemandem damit auf den Schlips. Die derzeitige Situation des RPGenesis-Projekts ist jedenfalls untragbar, weshalb ich die oben vorgetragenen Änderungen als (teil mehr, teils weniger) dringend notwendig ansehe. Solltet ihr weitere Vorschläge oder Kommentare zu diesen Entscheidungen haben, freue ich mich auf eure Kommentare.