Project TavernMaker

Dokumentationsversion 1.0d ,  2003-10-31


Wie TavernMaker funktioniert

Der folgende Text gibt einen guten Überblick über die Funktionsweise von TavernMaker. Es ist ein guter Startpunkt um das Programm besser zu verstehen.

Für detailierte Informationen können sie direkt zur Algorithmusbeschreibung übergehen.


Datenbanken vs. Reine Zufallsgeneratoren

TavernMaker "generiert" eigentlich keine Grafik und keinen Text. Statt dessen benützt es verschiedene Datenbanken und Grafik-Vorlagen (templates) und erstellt daraus nach den Angaben des Users seine Ausgabe. Der Nachteil: Damit das ganze sinnvoll ist, müssen die Datenbanken und Vorlagen ausreichend vielfältig sein. Der Vorteil: Alle Arbeit wird von kreativen Köpfen "händisch" erledigt und garantiert so für Qualität, die reine Zufallsgeneratoren nie erreichen können, da diese nur Adjektive & Nomen mehr oder wenig zufällig zusammen würfeln.

Anschauen - ein schematischer Überblick

Die folgende Grafik zeigt schematisch, wie die verschiedenen Programm von TavernMaker zusammenwirken. Keine Angst, wenn sie es nicht auf Anhieb verstehen. Es ist etwas kompliziert... Bild

Verschiedene System - das RPS

Um TavernMaker für verschiedene Sprachen, Rollenspielsystem & -welten offen zu halten, und um es auch als vollständig andersartigen Generator verwenden zu können, ist es notwendig, das Grundprogramm zu konfigurieren. Die Konfigurationsdateien, die das erledigen, heißen "Role-Playing-System"-Dateien oder kurz RPS. Jedes RPS hat seine eigenen Datenbanken, Grafikvorlagen, Icons, seine eigene Sprache und mehr. Das Original-RPS von TavernMaker ist "AD&D - English" bzw. sein deutscher Mitläufer "AD&D - Deutsch".

Ein erster Schritt - Entscheidungen

Neben der Wahl des RPS benützt WinTavern auch User-Eingaben. Allgemein gesprochen kann der User fogendes festlegen:
- einen Basistyp [1] (Tavernentyp )
- eine Einschränkung [2] (Preisklasse)
- eine Größe [3] (Anzahl der Tische)
- einen Füllunggrad [4] (Betrieb)
- eine Klassenwahrscheinlichkeit [5] (Gäste - Wahrscheinlichkeit)

Was genau durch diese Einstellungen geregelt wird, steht im RPS. (Die Angaben in den Klammen entsprechen der Bedeutung im Standard-Tavernen-Generator)

Grafik – Erzeugen der Karte

Im ersten Generierungs-Schritt wird aus dem Basistyp und der Größe bestimmt, welche Grafik-Vorlage verwendet werden soll. Diese Vorlage ist mehr oder weniger ein "leerer Raum" mit verschiedenen möglichen "Hintergründen" und sogenannten Hotspots. Zunächst wird einer der Hintergründe gewählt und anschließend werden die Hotspots mit Icons gefüllt (Tische, Türen, Bars, Fenster...) Die fertige Karte wird an das Programm zurück gegeben.

Text – Die Karte wird belebt

Der Kartengenerator liefert nicht nur die Karte, sondern auch eine Liste von "befüllten Hotspots" (gefüllt mit einem Icon). Einige dieser "gefüllten Hotspots" bekommen nun eine Textbeschreibung. Wieviele das sind, hängt von der User-Einstellung Füllunggrad ab. (Wieviele Gäste sind in der Taverne, d.h. wieviele der vorhandenen Tische sind besetzt.) Abhängig vom Hotspot-Typ (Tisch? Bar?..) und der Größe des verwendeten Icons (2 Sessel? 5 Sessel?) wird die Beschreibungsdatenbank nun gefiltert. Die geählte Einschränkung (zB.die Preisklasse der Taverne) schränkt die Datenbank weiters ein. Ebenso die Klassenwahrscheinlichkeit (Welche Rassen sind in der Taverne). Schlußendlich liefert auch die Karte selbst noch Beschränkungen, so können Beschreibungen von "Ecktischen" nur für Icons verwendet werden, die tatsächlich in der "Ecke" sind. Nachdem die Datenbank vollständig gefiltert wurde, wird für jeden "belebten" Hotspot eine Beschreibung zufällig ausgewählt.

Beschreibungen - für alle, oder nicht?

Jede "Beschreibung" besteht nun aus zwei Teilen, einem öffentlichen und einen geheimen. Der öffentliche Teil ("Die Beschreibung") kann den Spielern direkt vorgelesen werden ("An diesem Tisch sitzt..."). Der geheime Teil (die Gegenstandsliste) ist nur für den Spielleiter bestimmt ("Der Mann trägt einen magischen Ring...").

Menüs – Essen & Trinken gefällig ?

Dieser Teil von TavernMaker ist in der ersten Version noch nicht implementiert. Er wird jedoch ähnlich dem Beschreibungsteil ablaufen. Abhängig von der User-Einstellung werden verschiedene Getränke und Speisen aus einer Datenbank zufällig gewählt. Qualität und Preisangaben werden danach berechnet.

Formatierung – einfach hübscher

Die Textausgabe von TavernMaker ist nicht einfach nur ASCII Text. Statt dessen kann der User sogenannte Formatierungs-Vorlagen wählen/erstellen, die die Ausgabe in einem Rich-Text-Format (*.RTF) formatieren. Damit wird es einfach schöner und kann in den Spielen als Handout besser benutzt werden. Ausserdem erlauben diese Formatierungsvorlagen die Einbeziehung zusätzlicher Information, die in Addon-Skripten erzeugt wurde. (zB ein "Wetterbericht")

Skriptis – einfache Programmierung innerhalb des Programs

Alle Dinge bisher erzeugen bereits ein nettes Programm mit dem sich unzählige Dinge anstellen lassen. Wie auch immer, wir haben das Projekt von Anfang an einen Schritt weiter geplant, und zusätzliche Flexibilität eingebaut. Alle Beschreibungen in den Datenbanken erlauben eine einfache Skript-Programmierung. Gewisse Textteile können so "variabel" gestaltet werden. Zufallszahlen und Berechnungen sind möglich. Auch einfache Variablen und darauf basierende Berechnungen. Die Flexibilität wird noch maximiert, indem man zusätzliche "Gegenstand-Datenbanken" einfügen kann, die Unabhängig erweitert werden können!

Ein einfaches Beispiel: "Der Mann hier erzählt gegen etwas Geld das neueste Gerücht: Der König wurde ermordet!"
Diese Beschreibung ist schon ganz nett, aber viel interessanter wäre sie, würde das Gerücht jedesmal ein anderes sein! Mit einer zusätzlichen "Gerüchtedatenbank" ist dies leicht möglich und ohne viel Aufwand wurde ein "Gerüchtegenerator" in TavernMaker eingebaut... Wir hoffen, dass die User im Laufe der Zeit viele solche Zusätze entwicklen werden.