Variablen, Conditions und Switches am Beispiel einer Sammelquest

  • Willkommen zu meinem Tutorial, das in seinen Grundzügen für alle Maker geeignet ist und anhand eines Beispiels mit dem MV abläuft.


    Tutorial_ApfelQuest.png


    Voraussetzung: Kenntnis im Mapping, Grundlagen Eventtechnik, notwendige Englischkenntnisse für Bedienung des Makers/Übersetzungsfähigkeit


    Ziel im Maker/Spiel Ziel des Tutorials
    Eine simple Sammel-Quest:
    Finde 5 Äpfel und bringe sie zum Bauern
    Erklärung, Verwendungsbeispiel und Einführung in den Umgang mit:
    Variablen
    Condition/Conditional Branch/Bedingungen
    Switches
    /Schalter
    anhand eines komplexeren Eventaufbaus


    Immer wieder kommen neue hoffnungsvolle Spielemacher der Maker-Szene hinzu und sie alle fangen klein an. Zu den mehr oder minder schwierigen Anfängen gehört vor allem das Verstehen, der Umgang und das Einsetzten von Variabeln (variables) und Bedingungen (conditional branch) im Bereich Eventscripting. Dieses Tutorial soll etwas Licht in die Sache bringen und die wichtigsten Grundlagen, sowie ein paar weitere kleine Tipps und Tricks für den Umgang liefern.


    Ich bediene mich dabei eines Beispiels aus einem rm2k-Tuts für Variabeln, dass ich vor Jahren mal gelesen habe und das so einfach war, dass es hängen geblieben ist.


    Tech-Demo-Button.png

    Was ist eine Quest?

    Dem passionierten Rollenspieler bekannt, dem Neuling ein Fremdwort.


    Wikipedia schrieb:

    Das Wort Quest (weiblich; deutsch „Suche, Suchmission“, englisch quest, eingedeutschter Plural „Quests“, aus dem altfranzösischen queste, aus dem lateinischen quaestio „Forschung, Frage“ bzw. quaerere „fragen, suchen“) bezeichnet ursprünglich in der Artusepik die Heldenreise oder Âventiure eines Ritters oder Helden, in deren Verlauf er verschiedene Aufgaben löst, Abenteuer besteht, Feinde besiegt, Objekte findet, Schwierigkeiten überwindet und dadurch Ruhm und Erfahrung erntet oder sein angestrebtes Ziel erreicht (zum Beispiel den heiligen Gral). Sinn der Quest ist im Allgemeinen die Erfüllung ehrenvoller Pflichten, aber auch die innere Reifung und Reinigung eines Helden.


    Kurz: Eine zu erfüllende Aufgabe für den Spieler


    Quest fürs Tutorial

    So soll die Quest aussehen:


    Du sollst dem Bauern helfen, in dem du für ihn Äpfel auf seinem Grundstück sammelst. Hast du die passende Anzahl aufgelesen, bedankt sich der Bauer für die Hilfe und überreicht dir eine Entlohnung.


    Eigentlich sehr simpel. Wir wollen das ganze noch etwas ausreizen, um mehr Funktionsbeispiele nutzen zu können. Dies sind dann Extras, die nicht zwingend erforderlich sind, um die Quest zu bauen, das ganze aber durchaus sinnvoll ausbauen.



    Extras:

    • Quest-Ansage (Verschiedene Text-Optionen)
    • Die Äpfel sollen als verbrauchbares Item verfügbar sein (Items im Inventar in Variablen verwenden)
    • Verschiedene Handlungsmöglichkeiten per Wahlverfahren (Show Choice)
    • Äpfel sollen wahlweise abgegeben werden können, was verschiedene Stände der Erledigung der Quest zur Folge hat (Input Number)
    • Äpfel sollen in einen Korb gelegt werden, statt dem Bauern selbst zu übergeben (Verschiedene Events miteinander verbinden)



    Vorbereitung - Map und Events

    Öffnet ein Projekt in eurem Maker und sucht euch eine leere Map. Für dieses Beispiel-Event reicht eine einfache Map in Minimalgröße, die ihr so gestalten könnt, wie ihr möchtet.

    Wichtig hierbei ist nur, dass ihr beachtet, dass der Held hier Platz genug hat, um Äpfel aufzusammeln (Apfelbäume auf der Map wären natürlich auch sinngemäß) und dass der Bauer passend platziert wird.


    Auf dieser Map ist alles drauf, was für die Quest benötigt wird. Soweit müsst ihr noch nicht gleich vorarbeiten. Das kommt nach und nach zusammen.




    Nun müssen die wichtigsten Events ihre Grundlagen erhalten. In diesem Fall sind das der Bauer ( Extra: +der Korb) und die einzusammelnden Äpfel.


    1) Der Bauer


    Apfelquest_Bauer.pngDer Bauer ist in diesem Fall ein NPC (NonPlayerCharacter) und unser Questgeber. Ihn anzusprechen, soll die Quest in Gang bringen.


    Ihr könnt einen beliebigen Charakter dafür wählen. Ich habe einen alten Mann genommen, um einen Grund für die Aufgabenstellung zu gewährleisten. Dem armen Alten werden die Knochen weh tun und deshalb braucht er Hilfe. Es ist immer schöner, wenn eure Quests im Spiel nicht einfach nur da sind, weil man dem Spieler ja was zu tun geben muss, sondern sich in die Spielwelt einfügen und Sinn ergeben.



    2) Der Korb


    Apfelquest_Korb.pngEr kann optional hinzugefügt werden, um das Event etwas komplexer zu gestalten (und weil es Sinn macht, dass man die Äpfel dem armen Mann nicht einfach in die Arme drückt).

    Ich habe zusätzlich ein paar verschiedene Versionen gemacht, in denen der Korb mal voll und mal leer ist und werde dies als kleines Extra mit einbauen. Ihr könnt den Korb als Charakter-Grafik anwählen, wenn ihr mein Tileset-AddOn verwendet, oder ein anderen Tile- oder Charset habt, auf dem ein passender Korb ist.


    3) Die Äpfel


    Apfelquest_Apfel.png Der Held soll herunter gefallene Äpfel aufheben, die auf der ganzen Map verteilt sind. Um diese sichtbar zu gestalten, ist in meinem AddOn ebenfalls eine passende Grafik zu finden.

    Beim Aufheben dieser Äpfel, soll eine Variable hoch gezählt werden, um so die Quest-Bedingungen ab einer Anzahl von 5 zu erfüllen.


    Als Extra kann man die Äpfel anstatt als Variable auch als Item anlegen und sogar verbrauchbar machen. Somit spielt dann nicht die Anzahl der Äpfel, die man vom Boden aufgelesen hat, eine Rolle, sondern wie viele Äpfel sich noch im Inventar befinden.

    Die Äpfel sollen von der Map verschwinden, wenn man sie aufgehoben hat und es ist sinnvoll, dem Spieler über das Abspielen eines kurzen Sounds oder einer Textnachricht zu signalisieren, dass er einen wichtigen Gegenstand aufgehoben hat.


    4) Ressourcen


    Kleines Extra: Hier ein Tileset, das ihr auf D einfügen könnt, welches Apfelbäume, Äpfel, einen leeren, einen halbvollen und einen vollen Korb Äpfel beinhaltet.

    Außerdem ein Charset für den Bauern.


    PandaMaru_appletree.png $Bauer.png


    Diese Grafiken lassen sich dann auch für die Events auswählen, als Char-Grafiken.




    Der Event-Aufbau


    Wir starten also mit dem Bauer-Event, der uns die Quest geben soll. Nach ein bisschen erklärendem Text und einem Sound und einer Nachricht, dass wir eine Quest angenommen haben, soll das nicht jedes mal wiederholt werden, wenn man den Bauern erneut anspricht.
    Dazu setzten wir einen Self Switch A am Ende des Gesprächs und nach dem Schalter, der durch den Quest eingeschaltet wird. Und verpacken die ganzen voran gegangenen Codes in eine Conditional Branch, die abfragt, ob der Self Switch A auf ON ist. So kann der Bauer im Falle, dass dies gegeben ist, noch mal an den Quest erinnern, anstatt ihn neu aufzugeben.



    Nun eröffnen wir eine zweite Event-Seite. Diese soll erst aktiv werden, wenn die Quest-Bedingungen erfüllt sind.
    Abgesehen von der Conditinal Branch gibt es noch die Conditions des Events, die oben links eingerahmt im Event über der Grafik zu finden sind.
    Hier sollen nun zwei Bedingungen erfüllt sein:

    - Der Spieler soll überhaupt die Quest haben, Äpfel zu sammeln > Schalter [ID] Äpfel is ON
    (falls man die Variante mit den Items hat und der Spieler zuvor an einer anderen Stelle bereits Äpfel sammeln konnte, soll nicht übergangen werden, dass der Bauer überhaupt um Hilfe gebeten hat)
    - Der Spieler soll mindestens 5 Äpfel eingesammelt haben > Variable [ID] Äpfel is 5 or above

    :!:Im Event wird immer die oberste Seite, also die mit der höchsten Zahl, als aktive Befehlsliste akzeptiert, deren Bedingungen erfüllt sind.
    Also wird Seite 2 erst abgespielt, wenn sowohl der passende Schalter an ist, als auch der passende Wert in der ausgesuchten Variable stimmt.

    Auch hier wollen wir wieder, dass der Bauer einem nicht jedes Mal zur bestandenen Quest gratuliert und einem bei jedem Ansprechen eine Belohnung gibt, weshalb wir die Event-Befehle in eine Conditional Branch mit abgefragtem Self Switch packen. Wichtig dabei ist, dass es ein anderer Self-Switch als auf der ersten Seite sein muss. Naheliegend ist daher der Buchstabe B zu wählen.
    Nun können wir auch unseren Quest abschließen.



    Doch der Quest kann nicht erledigt werden, ohne dass man überhaupt Äpfel hat, die man einsammeln kann. Auch diese werden per Event gemacht.

    Die Äpfel sollen erst erscheinen, wenn die Quest angenommen wurde, auch das ist als Condition oben links im Event einzutragen, in dem man den Schalter als Bedingung setzt. Dass der Apfel aufgehoben wird, wird durch Sound und Nachricht klar gemacht. Und nicht zu vergessen: Die Variable, welche die Äpfel zählt, um 1 erhöhen. Danach soll der Apfel von der Map verschwinden.



    :!:Eine einfache Variante ist der Befehl Erase Event, doch damit verschwindet das Event nur solange man sich auf der gleichen Map befindet! Nach einem Mapwechsel, beginnt das Event wieder von vorne.
    Das kann man nutzen, um z.B. Monster respawnen zu lassen.
    Eine andere Variante, damit der Apfel dauerhaft weg ist, ist ein Self Switch, den wir auch auf eine zweite leere Seite im Event als Condition fest legen.

    Als Zwischenschritt, bevor man die Quest jedoch abschließen kann, soll der Spieler die eingesammelten Äpfel im Korb neben dem Bauern platzieren.

    Dabei soll überprüft werden, ob die Quest aktiviert wurde, ob der Spieler überhaupt Äpfel dabei hat, wenn ja, wie viele und dem Spieler wird die Möglichkeit gegeben, selbst zu bestimmen, wie viele er davon in den Korb legt. Des weiteren bekommt der Spieler noch eine Anzeige, wie viele Äpfel bereits im Korb sind. Ist die gewünschte Anzahl erreicht, gilt der Korb als voll. Das alles wird über Conditions/Bedingungen geregelt.



    Als kleine Spielerei soll der Korb voller werden, je mehr Äpfel der Spieler abgegeben hat. Dazu kopieren wir diese erste Eventseite und fügen sie als zweite Eventseite ein, verändern aber die Grafik (halbvoller Korb) und setzten als Condition/Bedingung der Seite, dass min. 3 Äpfel im Korb sein sollen.



    Ab einer Condition/Bedingung mit der Anzahl von 5 Äpfeln oder höher soll die Quest erledigt sein und der Korb voll. Dafür benötigen wir dann noch eine dritte Eventseite, mit der passenden Grafik für den Korb und der passenden Condition.




    Gratulation! Damit ist die Quest endgültig fertig, bereit für den Test und das Tutorial abgeschlossen.


    Tech-Demo-Button2.png

    Ich hoffe, ich konnte alles verständlich und in leichten Schritten erklären. Sollten dennoch Fragen auftauchen, könnt ihr sie hier gerne posten. Sind euch Fehler aufgefallen, oder etwas stimmt nicht so, wie es in diesem Tutorial beschrieben wurde, bitte ich euch, mir dies per PM mitzuteilen, damit ich es nachträglich ausbessern kann. Vielen Dank.

  • Ich bin jedes Mal aufs Neue fasziniert, wie genial und umfassend du deine Tutorials gestaltest! :love:

    Wahnsinnig detailliert und super ausgearbeitet! :)


    Ich ziehe meinen Hut und denke das es ein super Tutorial für Neulinge darstellt. ^^:thumbup:


    Ich muss doch irgendwann eine Doppellike -Funktion einbauen ^^

    :s_info: Ehemalig in dieser Community als Toothless bekannt, habe ich nun meinen Künstlernamen angenommen: Cryptogene

    So manch einer kennt ja ohnehin schon meine 3D Szenen.


    patreon.png

  • Ist wirklich sehr hilfreich! Ich habe grade angefangen, eine (nicht ganz realitätsferne) Quest zu entwickeln, die doch sehr stark an dieses prima Tutorial angelehnt ist (Tochter kann das Haus erst zur Schule verlassen, wenn sie die über die Wohnung verstreuten Hausaufgaben eingesammelt hat ;) ) .

    Kleine Nachfrage: Wenn ich das Konzept richtig verstanden habe, dann würde das dauerhafte Verschwindenlassen der Äpfel so funktionieren, das mit dem Aufsammeln ein Self-Switch gesetzt wird, auf der zweiten Event-Seite wird dieser abgefragt -mit einer Leeranweisung- , wobei das Bild für den Apfel leer gelassen wird ? Weil die Bedingung auf der zweiten Event Seite erfüllt ist, würde dann die erste nicht mehr erreicht und der Apfel nicht mehr dargestellt. Oder bringe ich das durcheinander ?

  • Schnurx : müsste so richtig sein, wie du das verstanden hast ^^ Ist die Bedingung für die zweite Seite erfüllt, führt der Maker diese Seite (und nicht mehr die erste) aus, auf der in diesem Beispiel dann eben nichts passiert und auch keine Grafik vorhanden ist :)

    ~Most gods throw dice, but Fate plays chess, and you don't find out til too late that he's been playing with two queens all along ~

                                                                           

    banner_busts_chars_ressources.png       banner_busts_chars_ressources.png  

  • Hey hoo ...


    klasse Tutorial! Gerade wo ich jetzt nach Jahre wieder reinkommen muss, kommt das wie gerufen. :thumbup:

    Das ist jetzt mit dem MV erstellt, sollte sich aber fast gleich im Ace verhalten.


    Leider werden mir einige Bilder (Mappen, Schalter etc) nicht angezeigt?

    Liegt das an mir oder geht es anderen auch so ?


    Gruß,

    Coffee

  • Bei mir sind die Bilder etc. einwandfrei zu sehen. Das Ganze war wirklich sehr hilfreich, klappt wie am Schnürchen. Wird jetzt noch ein bischen mit Region-IDs ausgebaut, so daß ich pro aufgesammelter Hausaufgabe eine andere Meldung kriege und dann ist die erste Mini-Quest auch schon fertig.

    Vielen Dank noch mal, wirklich sehr gut erklärt.