1w6 - Ein Würfel System - Einfach saubere, freie Rollenspiel-Regeln
Das TextRPG Modul bietet eine Skriptumgebung für textbasierte Computerrollenspiele und interaktive Geschichten.
Es wurde so entworfen, dass die als Code geschriebenen Geschichten ähnlich aussehen wie Drehbücher oder Theaterskripte.
Im deutschen Python Forum habe ich dazu ein schnelles Beispielskript geschrieben, das zeigt wie eine schon recht komplexe Geschichte umgesetzt wird. Ein Beispiel für nichtlineare Geschichten gibt es im Quellcode.
Dazu gibt es ein interaktives Tutorial (als TextRPG Skript geschrieben), das beim Download mitgeliefert wird (tutorial_de.py). Einfaches (doppelt) anklicken sollte es starten (zumindest auf GNU/LInux und MacOSX - wenn es nicht klappt, schreib mir bitte!).
Zur Umsetzung von Geschichten bietet das TextRPG Modul dabei einige einfache Funktionen:
story()
gibt den Text aus, der ihr übergeben wird.
answer = ask()
Stellt die Frage in den Klammern und weist answer den Textwert der Antwort des Nutzers zu.
save(chars=[])
Speichert eine Liste von Charakteren. Beim nächsten laden der Charaktere werden sie die neuen Werte haben.
give_exp(char, amount=0)
Einem Char Erfahrungspunkte geben, die automatisch verteilt werden. Das Ergebnis wird als Textdialog angezeigt.
get_experience(chars=[], amount=0)
Einer Gruppe von Charakteren die gleiche Erfahrung geben. Das Ergebnis wird als gemeinsamer Textdialog angezeigt.
exit()
die Geschichte beenden (eine Standard-Python Funktion).
Zusätzlich definiert es die Klasse Char() über die Charaktere erzeugt werden können, die wiederum einige Praktische Möglichkeiten liefern.
Einige der Hauptmöglichkeiten sind:
char = Char(source="tag:1w6.org,2008:Name")
einen Charakter erzeugen. "source" ist im tag-Format: "tag:" + (url oder email-adresse) + "," + Jahr (yyyy) + ":" + Name des Chars).
char.say()
den Charakter sprechen lassen (wie story(), nur mit Charakternamen vor der Ausgabe und dem Vorteil, dass bei einer Umsetzung in eine GUI Umgebung genutzt werden kann, dass der Char spricht).
char.ask()
den Charakter fragen lassen (wie ask(), s.o.).
char.check_skill(skill_name, MW=9, related_skills=[name, name, ...], related_attributes=[name, name, ...], mods=[])
prüft, ob der Char eine bestimmte Fertigkeitsprobe schafft. Wundmali u.ä. sind direkt drin. Mods ist eine Liste von Zahlen: pos. und neg. Modifikatoren auf die Probe.
char.compete_skill(other, skill_name, self_mods=[], other_mods=[])
Lässt den Char in der gewählten Fertigkeit (skill) gegen den anderen Char antreten. Wundmali u.ä. sind direkt drin.
char.battle(other)
startet einen Interaktiven Kampf gegen einen anderen Charakter.
char.fight_one_roll_battle(other)
startet einen kurzen nicht-interaktiven Kampf mit dem Ein Wurf System. Einer der Charaktere ist danach kampfunfähig.
char.active
enthält die Information, ob der char aktiv ist (also fähig zu handeln).
char.alive
enthält die Information, ob der char lebt.
char.die()
tötet den char.
Weiterhin können jegliche anderen Python Befehle und Module genutzt werden, da die Skriptdateien einfache Python Dateien sind.
Zusätzlich zu seiner einfachen Syntax ist es so entworfen, dass eine Umsetzung eines eigentlich für eine Textausgabe geschriebenen Skriptes in eine GUI-Umgebung extrem einfach sein sollte (nur eine Zeile zu ändern). Was gehen sollte, sobald es ein Backend für eine GUI-Umgebung gibt.
Viel Spaß beim Skripten! - Drak
Kommentar hinzufügen