Hinweise für Questschreiber

Aus AntamarWiki
Wechseln zu: Navigation, Suche

Checkliste für die Erstellung von Questen

Ziel und Handlungsstrang im Auge behalten

Es hilft sehr, wenn man beim Erstellen eines Quests ein Ziel im Auge hat und einen Haupt-Handlungsstrang festlegt. Nach verpatzten Proben sollte der Held, wenn er nicht ganz ausscheidet, möglichst bald wieder auf den Haupt-Handlungsstrang zurückgeführt werden. Hält man sich nicht an diese Regel, schafft man ein unwartbares Monsterquest, das aber für jeden einzelnen Helden recht klein erscheint, weil es sich in Varianten verzettelt.

Beispiel: Wenn der Held bei einer heimlichen Verfolgung eine Schleichen- oder Verstecken-Probe verpatzt, könnte er versuchen, sich heraus zu reden (Überreden-Probe). Kämpfe sollte der Spieler umgehen können, z.B. durch Vorbeischleichen.

Andererseits: Wenn gewisse fehlende Talente, z.B. Sprachen, das Quest sehr komplex machen würden, dann ist eben das ganze Quest nichts für den Helden. Wer kein Nordahejmisch kann, der wird eben in Nordahejmischen Ländern Probleme haben, sich mit Einheimischen zu unterhalten. So ist das eben.

Geschlecht des Helden beachten

Bitte daran denken, dass es sich um einen Helden aber auch um eine Heldin(!) handeln kann. Hier mal ein Beispiel wie man mittels Variablen die Anreden unterscheiden kann und dann in der Beschreibung nutzt:

<switch attribute="gender">
  <case value="male">
    <store name="Anrede">werter Herr</store>
    <store name="Abenteurer">wackerer Abenteurer</store>
    <store name="der">der</store>
    <store name="ein">ein</store>
  </case>
  <else>
    <store name="Anrede">werte Dame</store>
    <store name="Abenteurer">wackere Abenteurerin</store>
    <store name="der">die</store>
    <store name="ein">eine</store>
  </else>
</switch>


<p><q>Die Götter mit Euch, <fetch name="Anrede"/>!</q> Hörst du...
<p>Hörst du, wie sie über sich sprechen: <q><fetch name="der" initcaps="true"/> <fetch name="Abenteuerer"/> da hinten ...</q>

Mit initcaps="true" wird der Anfangsbuchstabe des Variablen-Inhalts groß geschrieben.

Nur der Spieler kreiert den Helden

Möglichst dem Helden keine Handlungen unterschieben, die nicht zu seiner Rolle passen. Ggf. Gesinnung etc. prüfen - oder den Spieler entscheiden lassen.

Zweite Chance geben

Wenn möglich sollten mehrere Wege zum Ziel führen - oder zumindest an die Hauptaufgabe des Quests heran. Nicht jeder Held ist Kämpfer. Und noch wichtiger: Der Held sollte i.d.R. nicht aufgrund einer einzigen verpatzten Probe alles verlieren.

Negativen Ruhm beachten

Es kommt oft vor, dass man beim schreiben einer Quest nur an die Helden oder aber ausschließlich an die Schurken denkt. Ist eine Quest vom Inhalt her für beide Zweige interessant (Räuberbanden ausräuchern kann man auch im Hinblick auf die Beute...) sollte zum Ende die Möglichkeit bestehen leise und klammheimlich (evtl. mit falschem Namen) zu verschwinden. Es sollte dann zwar EP und Beute geben aber keinen positiven Ruhm, bzw. andersherum.

Besser wäre natürlich beide Spielarten direkt zu bedenken, dass kann aber zu sehr aufgeblähten Questen führen, eine rechtzeitige Abbruchsmöglichkeit ist hier auch sinnvoll.

Sinnvolle EP Vergabe

Es macht wenig Sinn, einem Helden der gerade und ohne Probleme durch ein Quest rennt, der also schon sehr hochstufig ist, die höchste EP-Anzahl zu geben. Eine Alternative wäre, dem Helden, der die meisten Szenen durchläuft, die meisten EP zu geben. Die durchlaufenen Szenen kann man auch mitzählen:

<!-- Den Zähler in der start-Szene initialisieren: -->
<store name="gesammelteEP">1</store>

<!-- Den Zähler am Anfang jeder anderen Szene (ohne Anzeige) hochzählen: -->
<set name="gesammelteEP" inc="1" show="none"/>

<!-- In der Endszene dann diesen Code, um die gesammelten EP zuzuweisen: -->
<set attribute="EP" inc="${gesammelteEP}"/>

Bei größeren, herausfordernden Szenen, kann man auch mehr EP vergeben - ich würde die Höhe aber eher von der Herausforderung als vom Ergebnis abhängig machen.

Wenn Szenen mehrfach durchlaufen werden können, will man evtl. nur einmal pro Szene, statt pro Durchlauf EP vergeben. Dann muss man sich merken, ob der Held schon in der Szene war, was leider noch etwas komplexer ist:

<!-- start.xml -->
<scene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://spiel.antamar.org/Antamar/xml/aoqml/aoqml.xsd">

<switch name="scene-start">
  <null>
    <store name="scene-start">1</store>
    <set name="gesammelteEP" inc="1" show="none"/>
  </null>
  <case></case>
</switch>

<choice target="andere"/>

</scene>

<!-- andere.xml -->
<scene>

<switch name="scene-andere">
  <null>
    <store name="scene-andere">1</store>
    <set name="gesammelteEP" inc="1" show="none"/>
  </null>
</switch>

<choice target="start"/>, <choice target="ende"/>

</scene>

<!-- endexml -->
<scene>
<set attribute="EP" inc="${gesammelteEP}"/>
</scene>

Egal, wie oft der Held zwischen "start" und "andere" hin- und herläuft, er wird im obigen Beispiel immer 2 EP sammeln.

Gegenstände benutzen und abfragen

Helden tragen oftmals sinnlosen Tand mit sich herum, den sollten sie auch benutzen können. Was macht man z.B. in einer stockfinstren Ogerhöhle?

<has item="%Disareg%|%fackel|%laterne%|%lampe|%kerze?" show="none">
    <success>
        <p>Es werde Licht!</p>
    </success>
    <failure>
        <p>Leider hast du nichts zum Leuchten dabei</p>
    </failure>
</has>

Hier in diesem Beispiel sieht man sehr schön die Platzhalter mit denen die Gegenstände abgefragt werden können: % für mehrere und ? für einzelne Zeichen.

Solche Abfragen kann man einbauen für alles mögliche: Dietriche beim Schlösser knacken, Kletterutensilien, Brecheisen oder Hämmer ...

Sonstige Tipps für die Quest-Erstellung

Falschen Heldnamen abfragen

In den Heldeneinstellungen ist es möglich einen falschen Namen zu hinterlegen. Dieser sollte in der Quest auch genutzt werden wenn es zu einem Zweig kommt, in dem man dem Spieler die Wahl lässt zu lügen.

<get attribute="nick"/>

Manche Spieler haben aber keinen solchen Namen vergeben. Ein kleines vorbereitetes Script liefert aber auch dann einen geschlechtsspezifischen Nick-Namen:

<include target="/lib/_nickname"/>
...
<fetch name="nick" />

Schätze (etc.) verschwinden/auftauchen lassen

Wenn Szenen, vor allem auch solche die auch Orte sind, Schätze birgen und mehrfach durchlaufen werden können, sollte der Held natürlich den Schatz nur einmal aufnehmen können. Danach ist er natürlich weg! Das realisiert man so:

<!-- am Quest-Anfang liegt der Schatz in der Truhe -->
<store name="Schatz">Truhe</store>
...

<!-- in der Szene, die den Ort beschreibt -->
<switch name="Schatz">
    <case value="Truhe">
        <p>In einer Ecke steht eine verschlossene Truhe. ...</p>
        ...
    </case>
    <else>
        <p>In einer Ecke steht eine offene, leere Truhe. ...</p>
    </else>
</switch>


<!-- an der Stelle, an der der Held den Schatz entnimmt -->
<store name="Schatz"/>

Die choices, müssen dann natürlich für jeden Zwei separat vergeben.

Und ähnlich könnte man natürlich den Schatz beim Questanfang auch immer in andern Räumen und/oder Truhen verstecken. Dann nummeriert man die Truhen einfach durch.

geschlagene Wachtposten, Alarmierung der Kameraden

Genauso wie oben mit dem Schatz kann man auch Wächter als lebt/tot/geflüchtet markieren. Wenn geflüchtet, dann holen sie bestimmt Hilfe. Evtl. kommt auch nach dem Kampflärm schon Hilfe. Das kann man so realisieren:

<!-- am Quest-Anfang lebt der Wächter -->
<store name="Wache">lebt</store>
...

<!-- wenn er flüchtet -->
<store name="Wache">geflüchtet<store>
<store name="Alarm-Timeout">10</store>

<!-- bei jedem Schritt / in jeder Szene - dies kann man auch in einen retain-Block legen -->
<switch name="Alarm-Timeout">
    <null></null>
    <case value="4">
        <!-- der Vorfall wurde bemerkt, die Wache ersetzt -->
        <store name="Wache">lebt</store>
        <set name="Alarm-Timeout" dec="1"/>
    </case>
    <case value="2">
        <p>Du hörst aufgeregte Stimmen und Schritte.</p>
        <set name="Alarm-Timeout" dec="1"/>
    </case>
    <case value="1">
        <p>Die Stimmen und Schritte werden lauter.</p>
        <set name="Alarm-Timeout" dec="1"/>
    </case>
    <case value="0">
        <p>Plötzlich bist du von Wachen umzingelt ... </p>
        ...
    </case>
    <else>
        <set name="Alarm-Timeout" dec="1"/>
    </else>
</switch>

Durch das Herunterzählen in jeder Szene hätte der Held also nach der Alarmierung nur noch beschränkt Zeit, z.B. aus einem Haus oder einer Höhle heraus zu kommen.


Ortsfeste Quest nur für bestimmte Helden anzeigen

Der Quest-Einbauer kann festlegen, ob der Held eine bestimmte Variable besitzen muss, damit er die ortsfeste Quest sehen kann. Also einfach den Variablenname irgendwo als Start-Bedingung in der start.xml vermerken. Weitere Voreinstellungen, die über die Datenbank laufen, können hier eingesehen werden.