Tut: Arbeiten mit erweiterten Dialogen

Wo die Designer von Abenteuern Ideen, Tipps und Abenteuer austauschen können.

Moderators: Boar, Orphanus

Post Reply
yagamoto
Posts: 718
Joined: Wed Nov 10, 2004 2:50 pm

Tut: Arbeiten mit erweiterten Dialogen

Post by yagamoto »

Tut: Arbeiten mit erweiterten Dialogen
Hallöschen und da sind wir wieder zu einem neuen Tut(orial) von mir!
In meinem Letzten Tutorial ging es um recht Einfache Dialoge die wir mithilfe des TTTS-Entities
gestaltet haben. Es ging Anfangs nur darum den Spieler zu begrüßen und zur Story zu leiten.
Dieses Tut beschäftigt sich mit etwas Anspruchsvolleren Dialogen in Kombination mit Emotes und
Interaktion mit Objekten. Deswegen werden wir eine kleine Exkursion zu den folgenden Entities machen:
  • Scenery Object Interaction
  • Scenery Object Remover
  • System Kombonent: Dialog
Da ich in meinen Tuts jetzt des öfteren mit Entities arbeite, werde ich ein „Entitie Crashkurs: Task Steps“ verfassen. Darin werde ich jeden Task Step aufs genauste Durchleuchten, Erklären und Beispiele nennen. Außerdem sind Crashkurse auch für die anderen Entities geplant.

Eigentlich kann man das Tutorial nicht wirklich mit dem Thema Dialogen weiterführen da alles wichtige schon vermittelt ist ... aber dazu später am ende mehr.

Um die Arbeitsweise zu verdeutlichen nehme ich mein derzeitiges Szenario an dem ich Arbeite.

Erweiterte Dialoge mit Interaktion

In einem Lager treffen wir auf einen Fyros Wächter namens Apoleus. Wir sprechen mit ihm ...
  • Spieler: Hallo!
  • Apoleus:Hallo Homin, kannst du mir einen gefallen tun?
  • Spieler:Um was geht es denn?
  • Apoleus:Siehst du den termitenhügel da drüben? Die Viecher krabbeln dauernd zu mir rüber und beißen mich. Übermittle ihnen mal meine *liebsten* Grüße!
  • Spieler: Klar, mach ich!
  • Apoleus: Jawohl, endlich kriegen die Viecher ihr Fett weg.
Aktion
Spieler geht zum Termitenhügel und klickt ihn an. Er bekommt die Option „Termitenhaufen Zerstören“ angezeigt. Klickt er ein weiteres mal auf den Termitenhügel oder wählt die Option im Rechtsklickmenü aus, verschwindet der Termitenhügel.

Zeitgleich zum Verschwinden des Termitenhügels Jubelt(Emote) Apoleus und sagt:
„Jawohl! Feste drauf!“

Daraufhin geht der Spieler zurück zu Apoleus und spricht weiter mit ihm.
  • Spieler: „Auftrag Ausgeführt!“
  • Apoleus: Ha! Hab vielen Dank. Mir geht es schon gleich viel besser. Ich freu mich schon wenn mein Dienst zuende ist und ich ein Bad nehmen kann.“
  • Spieler: „Also dann, auf wiedersehen!“
  • Apoleus: „Tschüss, man sieht sich später!“
Wenn der Spieler irgendwann wiederkommt oder darauf direkt mit Apoleus weitersprechen möchte, kommt folgendes:

Aktion: Spieler klickt auf Apoleus – Zeitgleich kommt die Meldung:
  • Apoleus: „Hallo Homin!“
  • Spieler: „Und, gibt’s was neues?“
  • Apoleus: „Bisher nicht, alles ruhig hier!“
  • Spieler: „Dann bis Später!“
  • Apoleus: „Man sieht sich!“
Klickt man wieder auf Apoleus wiederholt sich der Letzte Dialog.

Hier ein Bild des Aufwands der Entities für diesen Dialog samt Minimission



Das Script dahinter

Der Anfang des Dialoges ist eine normale TTTS Verbindung bis zu dem Punkt Klar, mach ich!. Dieser TTTS, wenn er Success ist, aktiviert einen
  • Scenery Object Interaktion Entitie – Kurz SOI
Achtung: Es gibt auch ein Scenery Obect Interaktion Task Step – das ist wiederum was anderes und behandele ich Später!

Hier ein Bild des SOI-Entities



Was sehen wir?
  • Name: Der Name des Entities für das Spätere Verknüpfen
  • Scenery Object: Auswahl des Objects ( kein NPC oder Mop ) zum Interagieren
  • Aktive: Wenn Aktiv kann mit dem Objekt Interagiert werden.
  • Repeatable: Wenn ausgewählt kann man so oft wie man will damit agieren.
  • Contextual Text: Der Text der angezeigt wird wie man mit dem Object Interagiert.
Also was passiert?

Das TTTS(Apoleus_Dialog_1_3) aktiviert den SOI(Termitary_Trigger) sobald er Beendet(Success) ist. Der SOI ermöglicht nun mit dem Termitenhaufen zu agieren. So als ob man durch ein TTTS mit einem NPC spricht, kann man so mit einem Objekt „Sprechen“ bzw. Interagieren.

Sobald man mit dem Objekt interagiert hat, ist der SOI „Getriggert“ - im Event Editor der Paramter Trigger
  • Termitary_Trigger -> Trigger
Sobald der SOI Getriggert wurde aktiviert er einen:
  • Scenery Object Remover Entitie – Kurz SOR
Hier ein Bild des SOR-Entities:



Was sehen wir?
  • Name: Name des Entities
  • Aktiv: Ein SOR kann immer Aktiv sein. Ein Deaktivieren ist nicht nötig
  • Scenery Object References: Anzahl an Objekte die du Löschen willst.
  • Scenery Object 1: Das Objekt was Gelöscht werden soll.
Wenn man bei Scenery Object References eine andere Zahl auswählt ( Maximal 5 ) dann werden weiteren Scenery Object-Parameter dazugeschaltet die man alle durch Pick auswählen kann.

Doch wie können wir nun das Objekt Löschen wenn doch der Entitie eh immer Aktiv ist?
Nun, das können wir ausschliesslich über ein Event machen da nicht vom Spieler direkt ansteuerbar.

(Der SOR heißt Termitary_Remover)

Wie oben schon geschrieben:
  • When:
    Termitary_Trigger -> Trigger
  • Happens:
    Termitary_Remover -> Remove Scenery Objects
Dadurch resultiert:
Wenn TTTS(Apoleus_Dialog_1_3) den SOI(Termitary_Trigger) Aktiviert und dieser Getriggert wird, das SOR(Termitary_Remover) den Hügel löscht.

Sobald der SOR die Objekte gelöscht hat, ist er nicht getriggert so wie der SOI. Bei ihm heißt es dann im When Parameter:
  • Termitary_Remover -> Removed Objects
Achtung: Ein Object welches durch einen SOR entfernt wurde, kann in selben Act nicht mehr wiederhergestellt werden. Einmal futsch, immer futsch. Jedoch existieren die Objekte nach einem Actwechsel wieder.

Der Emote – Die Systemkombonente Dialog

Um nun den Emote zu erklären der nun folgen würde, muss ich den Dialog Entite samt Editor ein wenig durchleuchten.

Zunächst das Dialog Entitie:



Was sehen wir?
  • Name: Also das müsste mittlerweile jeder Wissen :D
  • Autostart: Ist die Option Aktiviert startet der Dialog sofort wenn der Act Startet.
  • Active: Kann eigentlich immer Aktiv bleiben.
  • Edit Dialogs: Kleiner Button im Fenster oben Links.
Wenn wir mit dem Dialog Editor ( kommt gleich ) eine Gespräch zwischen zwei NPC Simuliert haben können wir Anhand von Autostart und Aktive bestimmen wann das Gespräch stattfindet.
Ist Autostart ausgewählt aber Aktive nicht, dann startet der Dialog nachdem das Entitie Aktiviert wurde. Ist Aktive ausgewählt aber Autostart nicht, startet der Dialog erst wenn man ihn per Event gezielt ansteuert. In diesem fall kann man bis zu einer gewissen Stelle vorspulen.

Der Dialog Editor:



Darin können wir unsere Dialoge basteln. Klicken wir auf New Chat dann haben wir folgende möglichkeiten:



Was sehen wir?
  • After (x): Nach der Dialog Anfängt dauert es (x) bis die Nachricht erscheint
  • Who: Wer die Nachricht von Say What sagt.
  • Say What: Die Nachricht die Angezeigt wird.
  • To who: Hier kann man einen NPC Eintragen, der sprechende dreht sich dann zu ihm hin.
  • Emote: Dieser Emote wird zeitgleich mit der Nachricht ausgeführt.
  • Pause at End: Wenn bei einer Chatoption ausgewählt stopt der Dialog hier und geht erst weiter wenn man ihn per Event Direkt ansteuert.
  • Repeat Dialog: Wenn alle Chatoptionen durch sind und der Entitie auf Autostart steht, fängt der Dialog wieder von Vorne an.
  • Dialog List: Sollten anderen Dialog-Entities vorhanden sein kann man sie herüber Auswählen und ebenfalls Verändern.


Unter Who kann man auch Broatcast Nachrichten versenden lassen
Repeat Dialog kann man benutzen um ähnlich wie bei Oblivion zufällige NPC Dialoge zu erstellen die sich immer wiederholen und einen kleinen Aufschluss darüber geben was die NPC über das Thema denken. Vorraussetzung ist ein Geschicktes Schalten von Aktive, Autostart und Repeat Dialog.

Hier sehen wir wie sowas in der Praxis aussieht:



Eine wichtige Funktion hierbei ist das {break} ! Der bisher einzige Scriptbefehl für Dialoge der Bekannt ist und genutzt werden kann.

Wenn man einen Gewaltig großen Text schreibt verschwindet dieser nach gewisser Zeit wieder samt Sprechblase, ebenso wenn man einen Dialog mit mehreren Chats erstellt! Dann könnte es sein dass das Gespräch zu schnell vorranschreitet ( weil jeder Spieler ließt unterschiedlich schnell ) und der Spieler muss deswegen nochmal in der Chatleiste nachlesen.

Hierbei hilft der Scriptbefehl {break} weiter! Durch den {break} kann man den Chat in viele kleine Portionen schneiden die der Spieler durch ein angezeigtes [x] Schliessen oder durch ein [>] fortführen kann.

Nun wissen wir wie man einen Dialog erstellt, was brauchen wir aber bei unserem derzeitigen Beispiel?
Nun, nachdem der Termitary_Remover das Objekt gelöscht hat muss dieser den Dialog starten.
Active ist Ausgewählt und ich spreche die Dialogstelle direkt an mit:

( Der Dialog für diese Szene heißt Apoleus_Dialog_for_Trigger )
  • When
    Termitary_Remover -> Removed Objects
  • Happens
    Apoleus_Dialog_for_Trigger -> Goto Step -> (x) says (y)
Gleichzeitig Aktiviert der SOR(Termitary_Remover) auch gleich das nächste TTTS(Apoleus_Dialog_1_4) welches das Gespräch weiterführt bis zum Ende des ersten Dialoges.

Der nächste Dialog der nun immer wiederkommt wenn der Spieler zurückkehrt ( bis vielleicht was anderes geschieht? ) hat als einzigster Unterschied zusätzlich ein „Hallo Homin!“ im Wait Validation Text.

Somit hätten wir ein erweiterten Dialog gemacht.

Nun könnte ich ein Tutorial zu Komplexe Dialoge mit Erweiterten Funktionen schreiben, jedoch stellt sich hierbei der TTTS-Bug in den Weg der schon oft erwähnt wurde, nicht zuletzt in einem von mir erstellten Thread hier im Forum. Und solange dieser Bug besteht und nicht weitere Tests durchgeführt sind, erspar ich mir die Arbeit, da ich nicht weiß ob beim nächsten Patch oder erweiterung des Rings endlich möglich sein wird Sprechblasendialoge zu erstellen, so wie wir sie von Events her kennen.

Den ein großes Problem haben Dialoge die mit den TTTS erstellt wurden – sie nützen nur etwas bei
Gesprächen mit einer Einzelperson. Somit könnte nur ein Spieler einer Gruppe mit den NPCs Sprechen, die anderen müßten zu reinen Hack´Slash gehilfen degradiert werden. Etwas, was ich nicht gerade als guten ton eines Quests erachte!

Ich hoffe ich konnte einigen mit diesem Tutorial etwas weiterhelfen, auch wenn es im großen und ganzen nur ein Kursus in Sachen Entitie nutzung war.

Wie schon oben erwähnt werden meine nächsten Tutorials eher vom Umgang mit Entities und deren Funktion handeln da Dialoge nun am Ende ihrer macht sind.
Außerdem, wie gewünscht, ein paar Vorschläge zur Actnutzung und ein paar Vorschläge zur einheitlichen Sprache wenn es darum geht das sich zwei Ringler unterhalten und beide sich verständigen wollen ^__^ Aus erfahrung weiß ich das sowas richtig kompliziert werden kann!

Mit freundlichen Grüßen, Astrell Yagamoto =^_____^=
Die geschriebenen Gedanken von Astrell Yagamoto
User avatar
volti
Posts: 287
Joined: Thu Dec 02, 2004 2:30 am

Re: Tut: Arbeiten mit erweiterten Dialogen

Post by volti »

Wieder einmal vielen dank, sobald ich Zeit habe werde ich es mir zur Gemüte führen und umsetzen.

Ring an die Macht!
'May Jena smile and the Karavan have mercy'

Bruder Nuvad
Argonaut des Schwertes, die Pfeilspitze des Bugs der Argo Navis.


[COLOR=Cyan][SIZE=3]Argo Navis[/COLOR][/SIZE] -Ein Ryzom RP Projekt
yagamoto
Posts: 718
Joined: Wed Nov 10, 2004 2:50 pm

Re: Tut: Arbeiten mit erweiterten Dialogen

Post by yagamoto »

Aber soetwas mach ich doch gerne ^^

Fragen, Anregungen und TutorialWünsche an mich;
Kritik, Beschwerden und Beleidigungen an Balnor :D

PS: Ich glaub ich hab nen Fan :D

Wölfe an die Macht! :D
Die geschriebenen Gedanken von Astrell Yagamoto
User avatar
volti
Posts: 287
Joined: Thu Dec 02, 2004 2:30 am

Re: Tut: Arbeiten mit erweiterten Dialogen

Post by volti »

Und wie fühlt es sich an einen Fan zu haben? *g*
'May Jena smile and the Karavan have mercy'

Bruder Nuvad
Argonaut des Schwertes, die Pfeilspitze des Bugs der Argo Navis.


[COLOR=Cyan][SIZE=3]Argo Navis[/COLOR][/SIZE] -Ein Ryzom RP Projekt
Post Reply

Return to “Abenteuer-Designer Austausch und Tipps”