TextRPG

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.

-> Info- und Downloadseite

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).

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. Mods ist eine Liste von Zahlen: pos. und neg. Modifikatoren auf die Probe. Wundmali u.ä. sind direkt drin.
  • 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, ob der char aktiv ist (also fähig zu handeln).
  • char.alive - enthält, 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

Kommentare

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
To combat spam, please enter the code in the image.