Es wird Zeit für ein bisschen Action. Deshalb kümmern wir uns jetzt um den ersten Dungeon, in dem der Spieler die Mutter des Kindes finden wird (hoffentlich).
Dafür erstellen wir uns nun eine neue Karte. Ich habe sie schlicht “Dungeon” genannt und sie 25x25 Kacheln groß gemacht. Als Kachelset wählen wir schlicht “0004 Dungeon”.
In diesem Dungeon werden wir ein kleines Rätsel erstellen, um zu lernen, wie man Variablen und Verzweigungen noch nutzen kann. Und um zu zeigen, was man bei der Erstellung eines kleinen Rätsels beachten muss. Dieses Kapitel ist also wieder etwas länger und ausführlicher.
Damit du die folgende Erklärung besser nachvollziehen kannst, hier erst mal ein kleiner Zwischenstand.
Auf der rechten Seite der Karte siehst du das Portal. Um das Portal herum verteilt habe ich vier Bodenplatten platziert. Der Spieler muss hier in der richtigen Reihenfolge über diese Platten laufen, um das Portal zu aktivieren. Eine kleine Anmerkung, um Verwirrungen vorzubeugen: Das Portal wird am Ende aktiviert, wobei es anfangen soll zu leuchten. Dafür legen wir über das “statische” Portal aus dem Tileset noch mal ein weiteres Portal in Form von vielen kleinen Events. Das sehen wir uns nachher noch mal genauer an.
Fangen wir also an. Zuerst sollten wir das Portal platzieren. Das findest du in Tab “C”, bei der Kachelauswahl. Ich habe hier erst die dunkle Version davon auf der Karte platziert. Die Bodenplatten, die ich hier verwendet habe, findest du in Tab “A”. Etwa in der Mitte findest du den Boden, der an Schalter erinnert.
Nun überlegen wir mal, wie das Rätsel genau ablaufen soll: Der Spieler kommt in die Höhle und findet nur dieses Portal. Durch einen Hinweis soll er darauf aufmerksam gemacht werden, dass sich dieses Portal aktivieren lässt.
Um es zu aktivieren, soll der Spieler in der richtigen Reihenfolge über die Bodenplatten laufen. Läuft er einmal über eine falsche Platte, soll das Rätsel zurückgesetzt werden. Durch einen entsprechenden Soundeffekt soll dem Spieler gesagt werden, ob es die richtige oder falsche Platte war. Hat er das Rätsel erfolgreich gelöst, soll das Portal hell leuchten und damit den finalen Indikator geben, dass das Rätsel erfolgreich gelöst wurde.
Es gibt mehrere Wege dieses Rätsel zu erstellen. Wir können es entweder ausschließlich mit Schaltern lösen oder mit Variablen. Selbstschalter können hier nicht genutzt werden, da vier verschiedene Events den Zustand des anderen Events kennen müssen.
Schalter sind boolescher Natur und können nur einen von zwei Zuständen haben. Ein oder aus, wahr oder falsch bzw. 1 oder 0. Variablen dagegen können einen beliebigen Zahlenwert annehmen. Wir haben nun die Wahl für jede Platte einen Schalter zu erstellen und dann bei der Berührung der jeweiligen Platte den entsprechenden Schalter zu aktivieren. Vor der Aktivierung muss geprüft werden, ob der vorherige Schalter bereits aktiviert wurde. Wird die falsche Platte berührt, müssen alle vorherigen Schalter wieder auf “Aus” gestellt werden.
Etwas anders sieht die Lösung mit einer Variable aus. Der Vorteil ist hier, dass wir nur eine Variable brauchen (im Grunde sind Schalter auch Variablen, die aber nur “Ein” oder “Aus” speichern können) und entsprechend dann nur eine Variable zurücksetzen müssen. Die Logik bleibt die gleiche. Ich finde es an der Stelle mit einer Variable etwas einfacher, am Ende ist es in diesem Fall aber eher Geschmackssache.
In diesem Beispiel erstellen wir vier Events. Jedes Event addiert zu der Variable einen bestimmten Wert. Anhand des Wertes können wir dann ablesen, ob die Platten in der richtigen Reihenfolge berührt wurden. Wurden sie das nicht, wird die Variable auf 0 gesetzt.
Fangen wir an. Erstellen wir zuerst ein Event auf dem oberen Schalter. Ich habe diesem Event den Namen “Portal Schalter A” genannt. Dann fügen wir diesem Event eine “Bedingte Verzweigung” hinzu. Diesen Befehl findest du in der Befehlsauswahl im ersten Tab in der Kategorie “Ablaufsteuerung”.
Nun öffnet sich ein Fenster, in dem du die Bedingungen festlegen kannst. Alles, was sich innerhalb der bedingten Verzweigung befindet, wird nur ausgeführt, wenn die hier festgelegte Bedingung erfüllt ist. Wähle hier “Variable” und klickte rechts daneben auf den Button, auf dem “0001” steht. Hier öffnet sich nun eine Übersicht aller Variablen, die wir angelegt haben. Da wir noch keine haben, ist sie entsprechend leer. Verwende direkt den ersten Eintrag und gib ihm einen Namen wie “Dungeon Schalter” ein, damit du später weißt, wofür diese Variable gut ist. Solang wir keinen Einfluss auf die Variable nehmen, ist ihr Wert “0”
Bestätige nun die Variable mit einem Klick auf “Ok”. Als nächstes müssen wir einen Vergleichsoperator auswählen. Den findest du rechts neben der Variable und steht standardmäßig auf “=”. Wir vergleichen also die Variable mit einem anderen Wert. Wir haben “=” gewählt. Das bedeutet, die Bedingung trifft zu, wenn die Variable den gleichen Wert hat, wir der Wert, mit dem wir sie vergleichen.
Unter den beiden Buttons, die wir gerade bedient haben, hast du nun die Wahl zwischen “Konstante” und “Variable”. Du kannst hier also einen festen Wert eintragen oder einen Wert aus einer anderen Variable auslesen. Da das die Bodenplatte sein soll, die als erstes betätigt wird, legen wir als Vergleichswert eine Konstante mit dem Wert “0” fest.
Denn wenn der Spieler vorher auf eine andere Platte tritt, wird der Wert höher sein. Dann wissen wir, dass wir den Wert wieder zurücksetzen müssen und dem Spieler verdeutlichen müssen, dass das die falsche Reihenfolg war.
So sollte das dann aussehen: “0001 Dungeon Schalter = 0”
Zu guter letzt setzen wir noch das Häkchen bei “Else-Verzweigung erstellen” und klicken dann auf “Ok”.
Hier noch eine kleine Übersicht der anderen Vergleichsoperatoren und was sie bedeuten:
= gleich
≤ kleiner oder gleich
≥ größer oder gleich
< kleiner als
größer als
≠ ungleich
So sollte dein Event nun aussehen:
Wenn die Variable (Dungeon Schalter) gleich 0 ist, dann soll 1 addiert werden. Zudem soll ein passender Soundeffekt abgespielt werden, um dem Spieler zu signalisieren, dass es der richtige Schalter war.
Dafür klicken wir jetzt einfach in den If-Block (der leere Bereich zwischen If und Else) und fügen einen weiteren Befehl hinzu. Undzwar den Befehl “Variablen steuern”. Zu finden in Tab “1” im Bereich “Spielfortschritt”.
Es wird sich wieder ein neues Fenster öffnen. Dort wählen wir “Einzeln” an und wählen die Variable “Dungeon Schalter”. Das sollte im Idealfall schon alles vorausgewählt sein.
Als “Operation” wählen wir “Hinzf.” (Hinzufügen) und als “Operand” wählen wir “Konstante” und geben hier den Wert “1” ein. Fertig.
Unter diesem Befehl fügen wir noch einen weiteren hinzu. Und zwar den Befehl “SE abspielen”. Den findest du im Tab “2” unter “Audio & Video”. Ich habe hier “Chime2” gewählt, da es recht positiv klingt. Die Lautstärke habe ich auf 30% gesetzt. Und das war es hier auch schon. Mit Ok bestätigen wir den Spaß.
Der Else-Block wird ausgeführt, wenn die Variable nicht “0” ist. Also wann immer der Spieler ein zweites Mal auf diese Platte läuft (da die Variable dann bereits größer als 0 ist). Wenn das passiert, soll die Variable wieder auf “0” gesetzt werden und ein Soundeffekt abgespielt werden. Dadurch wird das Rätsel wieder zurückgesetzt und der Spieler muss von vorn anfangen.
Um das zu erreichen, wiederholen wir einfach die Schritte, die wir vorher schon im If-Block erledigt haben. Mit dem Unterschied, dass wir beim “Variable Steuern”-Befehl als Operation “Einst.” wählen und als Operand die Konstante “0” wählen. Mit dem Soundeffekt “Stare” lassen wir das Spiel seine Enttäuschung dem Spieler gegenüber zum Ausdruck bringen.
So sollten die Befehle nun aussehen:
Damit es am Ende richtig funktioniert setzen wir die Priorität auf “Unter Charakteren” und den Auslöser auf “Spieler-Berührung”. Dann sind wir mit dem ersten Event auch schon fertig.
Insgesamt soll es aber vier Platten geben. Da sich die Befehle in den einzelnen Platten aber nicht sonderlich unterscheiden, können wir das Event, das wir gerade erstellt haben, einfach kopieren. Das geht mit Strg+C/Strg+V oder über das Menü mit der rechten Maustaste.
Die erste Kopie legst du einfach auf die Platte auf der rechten Seite und öffnest dann das Event. Das soll die zweite Platte sein, über die der Spieler laufen muss. Nachdem er auf der ersten Platte war, wurde die Variable auf “1” gesetzt. Daher soll diese Platte nun nur aktiviert werden, wenn diese Variable den Wert “1” hat. Bei der Verzweigung müssen wir die Konstante nun also auf “1” setzen. Klicke dafür einfach auf den If-Befehl und drücke Space. Oder die rechte Maustaste und wähle dort “Bearbeiten”. Dort änderst du nun einfach den Wert und klickst auf OK.
Das gleiche Spiel nun beim “Variablen steuern”-Befehl. Statt 1 zu addieren, wollen wir hier 10 addieren. Würden wir immer nur 1 addieren, würde die Reihenfolge keine Rolle mehr spielen. Sobald du das abgeändert hast, bist du hier auch schon wieder fertig. Kopiere dieses Event noch mal und füge es links neben dem Portal wieder ein.
Für die dritte Platte muss der Wert der Variable nun bei “11” liegen. Ändere also den Wert des If-Befehls entsprechend. Und anschließend wollen wir “100” statt “10” addieren. Das musst du also auch noch ändern. Und dann ist dieses Event auch schon wieder fertig.
Kopiere das dritte Event und füge es unterhalb vom Portal ein. Jetzt muss der Wert der Variable 111 betragen. Ändere nun den If-Befehl entsprechend ab. Da das die letzte Bodenplatte ist, wollen wir jetzt das Portal aktivieren, wenn der Spieler alles richtig gemacht hat. Wir könnten jetzt noch einen weiteren Wert addieren.
Allerdings könnte der Spieler dann versehentlich alles wieder zurücksetzen. Und das wäre ziemlich nervig, nachdem er es schon gelöst hat.
Statt den Wert der Variable jetzt weiter zu erhöhen, aktivieren wir stattdessen einfach einen Schalter. Lösche also im Event der letzten Bodenplatte den “Variablen steuern”-Befehl aus dem If-Block und füge stattdessen einen “Schalter steuern”-Befehl hinzu. Wähle hier “Einzeln” und klicke rechts daneben auf den Button, auf dem momentan nur “0001” stehen dürfte. Hier gelangst du zur Schalter-Auswahl und kannst den einzelnen Schaltern einen Namen geben. Wähle “0001” und trage unten einen Namen ein. Ich habe “Dungeon Portal offen” eingetragen. Dann klickst du auf “OK”. Die Operation sollte auf “EIN” stehen. Klicke noch mal auf “OK”.
Zusätzlich habe ich noch einen weiteren Soundeffekt eingefügt. “Applause2” um 100% sicher zu gehen, dass der Spieler erfährt, dass das Rätsel jetzt gelöst ist.
Puh. Das war lang und repetitiv. Aber nun sind wir mit dem Gröbsten durch. Aber noch sind wir nicht fertig. Wir müssen das Portal ja noch visuell aktivieren. Aber das ist ganz einfach.
Erstelle dafür ein neues Event auf dem Portal. Als Bedingung wählst du hier “Schalter” und dann den Schalter, den wir gerade erstellt haben “0001 Dungeon Portal offen”. Klicke dann doppelt auf das Bild und scrolle in der Liste bis ganz nach unten. Dort findest du dann deine Kachelsets. Wähle dann den entsprechenden Teil des leuchtenden Portals aus.
Wenn du faul bist, nimmst du einfach nur den Teil in der Mitte. Wenn du Lust hast, kannst du das Ganze nun aber einfach neun Mal wiederholen und so das ganze Portal zum Leuchten bringen, sobald das Rätsel gelöst ist. Da diese Events nur aktiv sind, wenn der Schalter aktiviert ist, kannst du jetzt beispielsweise dem Event in der Mitte ein “Spieler übertragen”-Befehl hinzufügen und den Spieler damit irgendwohin teleportieren.
Es fehlt uns aber noch ein Ziel für dieses Portal. Das wird der nächste Abschnitt dieses Dungeons sein. Und um den kümmern wir uns im nächsten Kapitel.