Benutzer-Werkzeuge

Webseiten-Werkzeuge


bert:editing:charaktere:dialoge

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
bert:editing:charaktere:dialoge [2007/11/02 12:50]
scytheman update
bert:editing:charaktere:dialoge [2014/03/01 17:13] (aktuell)
Zeile 1: Zeile 1:
 +<​sup>​[[:​bert|<​- Hauptseite]]</​sup>​
  
 +====== Dialoge ======
 +
 +Dieser Artikel beschreibt die Funktionsweise von Dialogen, sowie die Vorgehensweise zum Anlegen dieser.
 +
 +===== Definition =====
 +
 +Dialoge bestehen aus mehreren einzelnen Dialogblöcken. Die Syntax dieser Dialogblöcke ist wie folgt aufgebaut:
 +
 +<​code>​
 +<key>
 +{
 + ​name=<​Charaktername>​
 + ​print=<​Dialogtext>​
 + ​short=<​Dialogtext>​
 + ​sound=<​Sounddatei>​
 + ​next=<​key>​
 + ​forb_item=<​Itemname>​
 + ​req_item=<​Itemname>​
 + ​take=<​Itemname>​
 + ​give=<​Itemname>​ <​Textur>​
 + ​quest=<​Questname>​
 + ​req_quest=<​Questname>​
 + ​forb_quest=<​Questname>​
 + ​level_min=<​Levelnummer>​
 + ​level_max=<​Levelnummer>​
 + ​levelup
 +}
 +</​code>​
 +
 +Keine Angst vor den vielen Einträgen, zum Funktionieren benötigt man lediglich //key//, //print// und //name//. Der Rest steht für zusätzliche Informationen und Bedingungen.
 +
 +Die //Key//s dienen der Benennung der einzelnen Dialogblöcke. Ein Key mit Namen //begin// definiert den Start-Dialogblock,​ welcher zu erst abgearbeitet wird. Die geschweiften Klammern definieren Anfang und Ende des Dialogblocks. //name=// weist dem Charakter den Namen zu, //print=// seinen Text, den er sprechen soll. //sound=// gibt die Sound-Datei an, die abgespielt werden soll. //next=// gibt den Key des Dialogblocks an, der als nächstes abgearbeitet werden soll. Lässt man //next=// weg, so ist der Dialog im aktuellen Dialogblock zu ende.
 +
 +===== Sound =====
 +
 +Der Sound-Eintrag ist, wie bereits beschrieben,​ optional. Ist er vorhanden, so wird erst nach Abspielen des Sounds zum nächsten Dialog gewechselt. Ist er nicht vorhanden, so wird eine bestimmte Zeit (abhängig von der Länge des Dialoges) gewartet, so dass der Dialog zu ende gelesen werden kann. Die einzelnen Sound-Dateien befinden sich standardmäßig im Verzeichnis //​sound/​dialog///​.
 +
 +Beispiel:
 +<​file>​sound=blarg_name.ogg</​file>​
 +
 +==== Formate ====
 +
 +Die folgenden [[http://​jcatki.no-ip.org/​SDL_mixer/​SDL_mixer_15.html#​SEC15|Formate]] werden unterstützt:​ WAVE, AIFF, RIFF, OGG, VOC. Empfohlen wird [[wpde>​Ogg Vorbis]], mono, 22050 Hz, 64 kbps (zu erstellen beispielsweise mit [[http://​www.vorbis.com/​|oggenc]]:​ ''​oggenc %%--%%downmix -b 64 -q -1 datei.wav''​). OGG Vorbis ist frei, besitzt eine geringe Dateigröße und bietet selbst bei diesen Einstellungen eine ausreichende Klangqualität. Ausnahmen bestätigen mein schlechtes Gehör.
 +
 +===== Bedingungen =====
 +
 +Dialoge können verschiedene Bedingungen enthalten, welche darüber entscheiden,​ ob der entsprechende Dialogabschnitt angezeigt wird oder nicht.
 +
 +==== Items ====
 +
 +Das Tragen von bestimmten [[..:​Items]] kann sowohl vorausgesetzt wie auch untersagt werden. Zum Spezifizieren von mehreren Items wird das entsprechende Schlüsselwort einfach mehrfach angegeben. Auch ist es möglich, dem Spieler bestimmte Items zu geben (//give//), oder zu nehmen (//take//).
 +
 +Beispiel:
 +<​file>​
 +req_item=Nugget
 +req_item=Knochen
 +forb_item=Black Hand
 +</​file>​
 +Hier werden die Items //Nugget// und //Knochen// benötigt, //Black Hand// darf jedoch nicht im Inventar vorhanden sein.
 +
 +=== benötigt ===
 +
 +Mit dem Schlüsselwort //​req_item//​ ist es möglich, Itemnamen anzugeben, die der Spieler zum Anzeigen des Dialogs bei sich tragen muss.
 +
 +=== untersagt ===
 +
 +//​fob_item//​ gibt den Namen eines Items an, welches der Spieler nicht besitzen darf.
 +
 +=== geben ===
 +
 +Zum Geben muss man den Namen des Items angeben, sowie durch ein Leerzeichen getrennt den Pfad zur Textur.
 +<​file>​give=Knochenrest items/​bone.png</​file>​
 +
 +=== nehmen ===
 +
 +Hier gibt man einfach den Namen des Items an, welches dem Spieler genommen werden soll.
 +<​file>​take=Black Hand</​file>​
 +
 +==== Quests ====
 +
 +Die Schlüsselwörter der Quests funktionieren genauso wie die der Items. Mit dem Schlüssel //quest// weist man einem Dialogabschnitt den Namen eines Quests zu. //​req_quest//​ gibt den Namen eines Quests an, das bereits abgeschlossen sein muss. //​forb_quest//​ gibt ein Quest an, welches noch nicht erfüllt sein darf.
 +
 +Beispiel:
 +<​file>​
 +alphas_quest
 +{
 + ​name=Alpha
 + ​print=Hallo Choerbaert!
 + ​quest=Finde_meinen_Klappspaten
 + ​quest_req=Kaufe_mir_ein_Eis
 + ​quest_forb=Alternatives_Quest
 +}
 +</​file>​
 +
 +Sobald diese Stelle des Dialoges aufgerufen wird, ist das Quest //​Finde_meinen_Klappspaten//​ erfüllt. Jedoch kommt man nur an diese Stelle, wenn bereits //​Kaufe_mir_ein_Eis//​ erfüllt, jedoch //​Alternatives_Quest//​ noch nicht erledigt ist.
 +
 +==== Level ====
 +
 +Das Level des Spielers kann eine weitere Bedingung für das Anzeigen eines Dialoges sein. Hierfür gibt es die Schlüsselwörter //​level_min//​ und //​level_max//​. Levelaufstiege erfolgen durch das Setzen des Schlüssels //​levelup//​.
 +
 +Beispiel:
 +<​file>​
 +{
 + ...
 + ​level_max=0
 + ​levelup
 +}
 +</​file>​
 +
 +Bei Aufruf dieses Dialogabschnitts wird das Level des Spielers um eins erhöht. Man sollte jedoch immer eine Bedingung mit einführen (hier: das Level des Spielers darf nicht größer 0 sein), da dieser Teil sonst mehrfach aufgerufen werden kann.
 +
 +
 +===== Verzweigung =====
 +
 +Dialoge können verzweigt werden. Dazu gibt man einfach mehrere //​next=//​-Zeilen an:
 +
 +<​code>​
 +<key>
 +{
 + ​name=<​Charaktername>​
 + ​print=<​Dialogtext>​
 + ​next=<​key>​
 + ​next=<​key>​
 +}
 +</​code>​
 +
 +Für jeden //​next//​-Key überprüft das Programm, ob der referenzierte Dialog Bedingungen enthält und diese erfüllt sind. Andernfalls wird der //​next//​-Key einfach ignoriert, beispielsweise wenn ein benötigtes Item nicht vorhanden ist.
 +
 +Das darauf erscheinende Auswahlmenü zeigt den Text an, der bei den next-Keys mittels //print// gesetzt wird. Möchte man einen alternativen oder verkürzten Text zur Auswahl anzeigen lassen, so nutzt man das Schlüsselwort //short// im referenzierten Dialog. Zur besseren Verständlichkeit soll das folgende Beispiel dienen.
 +
 +===== Beispiel =====
 +
 +<​file>​
 +begin
 +{
 + ​name=Alpha
 + ​print=Hallo Choerbaert!
 + ​sound=alpha_hallo_bert.ogg
 + ​next=bert_response
 +}
 + 
 +bert_response
 +{
 + ​name=Bert
 + ​print=Was?​ Wer bist du denn? Kennen wir uns etwa?
 + ​next=alpha_response
 +}
 + 
 +alpha_response
 +{
 + ​name=Alpha
 + ​print=Sag bloss du kennst mich nicht mehr?
 + ​next=bert_choice_yes
 + ​next=bert_choice_no
 +}
 + 
 +bert_choice_yes
 +{
 + ​name=Bert
 + ​print=Ach,​ Alpha! Na klar kennen wir uns.
 + ​short=Doch.
 +}
 + 
 +bert_choice_no
 +{
 + ​name=Bert
 + ​print=Dich kennen? Nein. Woher denn?
 + ​short=Noe.
 +}
 +</​file>​
 +
 +In der Dialogauswahl,​ welche bei Teilabschnitt //​alpha_response//​ angezeigt wird, stehen nun die Optionen "​Doch."​ und "​Noe."​ zur Auswahl, definiert durch das Schlüsselwort //short//. Ohne dieses würde der ganze Text des referenzierten Dialoges angezeigt werden (zB "Ach, Alpha! Na klar kennen wir uns." statt "​Doch."​).
 +
 +{{  :​bert:​editing:​dialog_switch.gif ​ }}
 +
 +<​sup>​[[:​bert|<​- Hauptseite]]</​sup>​
bert/editing/charaktere/dialoge.txt · Zuletzt geändert: 2014/03/01 17:13 (Externe Bearbeitung)