Hm, ich habe "Programme & technische Fragen aller Art" übersehen. Müsste der Thread nicht dorthin eigentlich?
-------------------------------------------------------------------------
Hallo! Es ist echt eine Weile her, dass ich etwas geschrieben habe in dem Forum. Gestern oder vorgestern habe ich den Thread zum Blumengenerator gesehen und ich war echt fasziniert von der Genialität dieser Idee!
Kurz auf die Vorstellung des manuellen Generators folgte dann die Idee eines Programms, der das Würfeln übernehmen würde. Leider gibt es zurzeit keine funktionierende Version. Da ich ja ein Informatiker vom Studium bin, habe ich dann gedacht "Wie wäre es eigentlich, wenn man die Generatoreinstellungen selbst bestimmen kann? Dann muss ich nur eine zusätzliche Datei laden, wenn ich etwas anderes brauche als genau solche Pflanzen und ich muss am Quellcode nichts ändern."
Kurz darauf ist mir auch noch aufgefallen: So ein Generator wäre nicht nur für Pflanzen zu gebrauchen! Wenn das Format, in dem die Generierung spezifiziert wird, leicht verständlich und leicht zu schreiben ist, kann man doch sich selbst einen Generator sehr schnell basteln.
Das Ergebnis dieser Gedanken?
GePGen
Also was ist denn jetzt genau GePGen?
Es ist ein Programm, der eine XML-Datei lädt und auf dieser Basis würfelt, um etwas zufällig zu generieren. Ich schreibe momentan den Blumengenerator um, um mir klar zu werden, was ich genau brauche - das kommt garantiert mit dem Programm als ein Beispielgenerator, weil auch Viele genau daran interessiert sind.
Und wieso dieser Thread, wenn das Programm noch nicht geschrieben ist?
Leute, die das Programm nutzen werden, sind viel schlauer als ich und haben mehr Ideen, die in die Software reinfließen können - sie haben schließlich den Vorteil, dass sie mehr als nur eine Person sind. Genau deswegen ist der Thread da: schreibt, was ihr gerne sehen wollt, wie ihr die Idee findet, was eure Erwartungen sind. Wenn ihr eure Generatoren schreiben wollt, postet hier rein, in diesem Post wird eine kurze Spezifizierung des Formats sein. Wenn ihr helfen wollt - immer gern, meldet euch einfach!
Für die Programmierer unter den Weltenbastlern:
GePGen wird in C++ geschrieben und benutzt zurzeit PugiXML, um die XML-Dateien zu lesen. Die Repo ist auf GitHub zu sehen unter https://github.com/Loghaire/GePGen
Und für diejenigen, die ihre Generatoren sofort schreiben wollen ein kurzes Beispiel - eine genauere Spezifizierung kommt noch:
Das Format folgt XML, d. h. eine Generator-Datei würde wie folgt aussehen:
<?xml version="1.0 encoding="UTF-8"?><generator name="Blumenpflanze"><characteristic id="optionalID" branch="optionalBranchID"><text>Die Pflanze</text><option>wird wenige cm groß</option><option weight=2>wird mittelgroß</option><option branch="branchingToElsewhere">ist keine Pflanze</option><text>und sie ist toll!</text></characteristic></generator>
Die Formatierung ist echt blöd in dem Code-Fensterchen, aber egal erstmal, das muss für jetzt reichen!
Dieser Generator würde folgende Ausgabe haben:
Die Pflanze (w4)
1. wird wenige cm groß
2. wird mittelgroß
3. wird mittelgroß
4. ist keine Pflanze (gehe zu "BranchingToElsewhere", um näheres zu würfeln)
und sie ist toll!
Ein möglicher Output ist dann also "Die Pflanze wird wenige cm groß und sie ist toll!"
Dieses Beispiel ist natürlich nicht komplett, weil eben noch nicht genau klar, welche anderen Eigenschaften in den XML-Dateien möglich sein sollen.
So, ich bin in den nächsten Tagen weg höchstwahscheinlich weg vom internet, ich werde mich also dann nach dem Wochenende melden. Ich bin echt gespannt, was ihr zu dem Projekt sagt!
An dieser Stelle sage ich vielleicht auch noch eine wichtige Sache zur Entwicklung: Anfangs wird GePGen ein Konsollenprogramm. An sich ist er als eine Schnittstelle, ein Unterbau für GUIs gedacht, die sich auch spezialisieren können. Ich werde natürlich eine GUI bereitstellen - diese ist dann aber sehr einfach gehalten. Features, die direkt auf die Pflanze oder etwas anderes eingehen, wie Bildanzeige, wird eine separate GUI übernehmen müssen - ihr seid sehr gerne eingeladen, soetwas zu schreiben sobald die Schnittstelle feststeht, denn bevor ich dazu komme, muss ich noch viel erledigen.
...und bevor jemand fragt: Es steht für "General Purpose Generator", vielleicht ändert sich der Name ja noch. ^^