Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

1

Montag, 3. April 2017, 17:57

Quest "Multiplexing"

Ahoi,

ich bin gerade dabei die Quests ins Game zu implementieren und bin dabei auf
ein relativ interessantes Problem gestoßen:
Wie setzt man es (am besten) um, wenn ein Char (Event) der Ausgangspunkt mehrerer Quests sind?

Hierzu ist vorab folgendes zu sagen:
Typischerweise läuft bei mir eine Quest so ab, dass man zum Questgeber geht, mit dem ein
bisschen Smalltalk hält, auf die Quest zu sprechen kommt. Dann entscheidet der Spieler via Show Choice,
ob er diese Quest annehmen will oder nicht. Nimmt man die Quest an, wird die natürlich gestartet.
Redet man dann wieder mit dem Questgeber, gibt es 2 Möglichkeiten:
a) Die Quest wurde "erledigt" -> Man erhält Belohnung
b) Die Quest wurde noch nicht erledigt -> Smalltalk + ggfls. ein paar weitere Infos über die Quest
Nachdem Fall a) eingetreten ist, freut sich der NPC üblicherweise, dass man ihm geholfen hat und/oder gibt Folgequest ect.

Das ist also der grobe Standardablauf. Was ist nun aber, falls man bei ein und dem selben NPC mehrere Quest gleichzeitig annehmen/abgeben kann?
Wie soll das "Gespräch" dann durchgearbeitet werde?

Hier waren meine Punkte:

a) Show Choice
Via einfachen Show Choice kann man wählen "Quest A", "Quest B", "Reden" , "Gehen" (Beispielhaft).
Hier kommen zwei Problematiken auf:
Woher soll der Spieler vor dem Annehmen der Quest wissen, wie sie heißt? Was mach ich bei vielen Quests (z.B. >4).
Hier reicht nicht nur das normale Show Choice Window nicht mehr aus, sondern man muss auch wissen welche Quests gerade bearbeitet werden bzw.
noch bearbeitet werden können (weil sie noch nicht angenommen/beendet worden sind).

Wenn man z.B. als Auswahl hat:
"Quest A", "Quest B", "Quest C", "Quest D", aber Quest B schon beendet wurde und Quest D noch gar nicht angenommen werden kann,
führt das zwangsläufig dazu, dass man VOR dem Dialog, eine Fallunterscheidung durchführen muss, welche Quests gerade aktiv sind und welche nicht,
und aus dieser Entscheidung dann das Show Choice Window aufbauen. Aus ästhetischen Gründen sollten natürlich bereits beendet oder nicht nicht annehmbare
Quests nicht in der Auswahl erscheinen.

Um bei mehreren Quest herauszufinden, welche gerade aktiv ist und welche nicht, ist die Abfrage per IF-ELSE sehr unübersichtlich und
teilweise auch kompliziert - je nach Menge und Aufbau der Quests. Daher habe ich mir gedacht, dass man jeder Quest eine Zahl
zuordnet (1,2 4,8, 16, 32 ... Informatiker wissen Bescheid). Bilde ich die Summe aller aktiven Quest, habe ich also immer eine EINZIGARTIGE
Summe, die mir den "Zustand" aller Quests verrät. Sprich das Ergebnis "15" würde mir sagen, welche Quests aktiv sind (und im Umkehrschluss welche nicht).
Trotzdem finde ich auch hier den schlussendlichen Aufbau des Show Choice Window sehr umständlich.
Beispiel:
Quest A = 1, Quest B = 2, Quest C = 4, Quest D = 8.
Aktiv: A, B, C, D = 15
Aktiv: A,B,C = 7
Aktiv: A = 1
=> Ich müsste also 16 (15+1, wenn man die "0" mit einzählt) If-Abfragen hintereinander hauen und dementsprechend
ein Show Choice Window bauen. Die Auswahl im Show Choice Window wäre nicht allzu tragisch, wenn man im weiteren Eventverlauf mit
LABELS arbeitet, mit denen man zu den "Gesprächspunkten" springt.

Neben der hier aufgezeigten Nachteile der Übersichtlichkeit und Einfachheit in der Implementierung, gibt es noch die
weiter oben erwähnten Nachteile.

b) Einfaches "Skipping"

Ich habe mich aktuell so - weil einfach - entschieden, dass ganz stumpf eine Quest nach der anderen im Eventcode abgearbeitet wird.
Der passende Gesprächstext usw. wird natürlich nur bearbeitet, wenn die Quest angenommen wurde (oder angenommen werden kann).
Beendete Quests sind somit nicht mehr drin, wäre ja auch unsinnig.

Wird eine Quest angenommen oder abgegeben, dann springt man via LABEL zum Ende des Events. Hat man jetzt eine
zweite Quest beim selben NPC muss man diesen natürlich erneut ansprechen. Das ganze wird in Dämonenseele sowieso
noch zusätzlich mit Animationen (über den NPC) verdeutlicht, ob man bei diesem eine Quest annehmen oder abgeben kann.

Unschön ist es, wenn man Quest A angefangen, aber noch nicht erledigt hat. Dann startet man erst das Gespräch zur unbeendeten Quest
"Hey, gehe zum Ort XY, das findest du die Monster". Und im gleichen Zug kommt "Oh ich hab da noch eine Aufgabe für dich!".
In diesem Fall wird nämlich nicht zum Ende des Events gesprungen - wäre dem so, würden einige Quests ja auch gar nicht abgearbeitet werden.



So ich habe zwar den Text gerade in ziemlicher Eile geschrieben, aber ich hoffe, dass vllt der ein
oder andere nachvollziehen kann, was ich meine.
Ich würde nur gerne mal andere Meinungen zu der Problematik hören. Wie ihr die Nachteile seht, die ich hier aufführe
und wie ihr das lösen würdet.

2

Montag, 3. April 2017, 19:39

Wie wäre es denn, die Quests aus dem normalen Dialog rauszuziehen?
Spoiler: Mockup
Bild

Bild
zum Lesen den Text mit der Maus markieren

Dass man diese mit einer Art Tagebuch verbunden in einem extra Fenster anwählt und dann im Event zu einem bestimmten Label springt.

Das kann man natürlich auch eindampfen, dass man nur eine ShowText-große Box hat - praktisch ein dynamisch generierte ShowChoice-Auswahl. Oder man hängt an Choices Bedingungen, unter welchen sie ausgeblendet werden. Soweit die technischen Ideen.

Aber mal konkret zu deinem Text:

Zitat

a) Show Choice [...]
Woher soll der Spieler vor dem Annehmen der Quest wissen, wie sie heißt? Was mach ich bei vielen Quests (z.B. >4).

Das der Name der Quest dann da halt einfach steht hat mich bei anderen Vertretern, wie bei den letzten ElderScrolls Teilen auch nicht gestört.
Bei mehr als 4 Choices könnte man überlegen ein System zu verwenden, was die Choices-Anzahl erhöht.
Das Problem, dass man irgendwie entscheiden muss, welche Quests angezeigt werden sollen bleibt dann aber.

Zitat

b) Einfaches "Skipping"

Klingt für mich nach einer validen Lösung. Die beschriebene Problematik, dass der Eventgeber erst sagt: "Hey was ist mit der Quest?" Und dann: "Ach, ich hätte da noch eine." finde ich eigentlich okay.

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

3

Dienstag, 4. April 2017, 15:44

Deine erste Idee sieht zwar schön aus, aber da befürchte ich weiteren Mehraufwand (als jetzt schon^^)
für die Quests.

Solange niemand extrem große Abneigungen gegen das jetztige System hat, würde ich es auch erstmal
beibehalten und zu einem späteren Zeitpunkt evtl. die Lösung mit dem dynamischen Show Choice Window anpeilen.

Habe mich mal schon ein bisschen reingelesen, wie das im Maker mit dem Show Choice über Eventbefehl klappt (skriptechnisch im Hintergrund),
bin da aber noch nicht so ganz durchgestiegen. Das UMS vermießt mir da auch ein bisschen die Laune, da das auch nicht mit deinem schnieken
Keyitem-Skript kompatibel ist :/
Denke das werde wenn eine größere Baustelle werden.

4

Dienstag, 4. April 2017, 21:50

Zitat von »Mitsch«

Das UMS vermießt mir da auch ein bisschen die Laune, da das auch nicht mit deinem schnieken
Keyitem-Skript kompatibel ist :/
Naja, das kriegt man vielleicht noch kompatibel hin. Stell doch mal hier oder hier eine ausführliche Anfrage. :)

Zitat von »Mitsch«

Solange niemand extrem große Abneigungen gegen das jetztige System hat, würde ich es auch erstmal
beibehalten und zu einem späteren Zeitpunkt evtl. die Lösung mit dem dynamischen Show Choice Window anpeilen.
Finde das Skippen eigentlich in Ordnung. Du hast Recht, dass die erste Idee aus meinem vorherigen Post noch etwas Aufwand mit sich bringen würde.

Avery

Dinoritterin mit Herrschaft über die Contests und Ressourcen

  • Nachricht senden

5

Dienstag, 4. April 2017, 23:13

Mich würde das Skippen an sich nicht stören - man sollte dann nur darauf achten, dass einem der NPC erst mal die "dringlichere" Quest gibt, nicht erst ein "Hol die Eier aus dem Hühnerstall" und dann "Hilfe, Monster haben meine Frau vor zwei Tagen entführt!"

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

6

Freitag, 7. April 2017, 17:56

Nachdem das Questdebakel durch Playm edlen Skript sogut wie ausgemerzt ist, kommt nun die
finale Frage:

Wenn die erwähnten Questgeber mehere Quests haben, werden ich die vorraussichtlich im Choice Window mit dem
Questnamen anzeigen.
z.B.
1) "Böser Pirat"
2) "Voll böser Pirat"
3) "Richtig pöser (!) Pirat"

Was ist, wenn Questgeber nur eine Quest für den Spieler haben?
Soll die dann trotzdem "ausgelagert" anzeigt werden?
1) "Böser Pirat"
2) Reden

7

Sonntag, 9. April 2017, 13:45

Ich würde es "ElderScrolls like" so machen. Trotzdem ausgelagert klingt gut.

Social Bookmarks