7 days of WordPress themes, graphics & videos - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Game Development
  2. From Scratch

Erstelle ein Match-3-Spiel in Construct 2: Chaining and Game Overs

Scroll to top
Read Time: 17 mins
This post is part of a series called Make a Match-3 Game in Construct 2.
Make a Match-3 Game in Construct 2: Eliminating Pre-Made Matches

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

Endlich ist es soweit: Wir sind fast fertig mit unserem Spiel und sind bereit, die endgültige Spielmechanik zu implementieren. Dieser Artikel konzentriert sich darauf, ein Combo-System zu entwickeln, das dem Spieler mehr Punkte für das Erstellen von Ketten gibt, die mehrere Gruppen von Blöcken nach nur einem Tausch zerstören. Darüber hinaus implementieren wir das Verlustszenario und fügen einen Game Over-Bildschirm hinzu. Schließlich werde ich über Dinge sprechen, an denen Sie in Ihrer Freizeit arbeiten können, um das Spiel zu verbessern und über das hinaus zu erweitern, was wir behandelt haben. Also, ohne weitere Umschweife, fangen wir an...


Finale Spieldemo

Hier ist eine Demo des Spiels, auf das wir hingearbeitet haben und das wir am Ende dieses Teils der Serie erstellen werden:


Übereinstimmungen finden

Bevor wir zum Hauptartikel übergehen, möchte ich eine kleine Änderung daran vornehmen, wann FindMatches aufgerufen wird.

Während der Arbeit an diesem Artikel habe ich ein Problem entdeckt, das Sie im folgenden GIF sehen können:

Match-3 Construct 2 tutorial

Wie Sie in diesem ersten GIF sehen können, funktioniert es perfekt, wenn ein Block nur eine Blockdistanz fallen gelassen wird, um zu versuchen, eine Übereinstimmung mit einer Gruppe von Blöcken am unteren Rand des Falls zu bilden.

Match-3 Construct 2 tutorial

In diesem zweiten GIF wird jedoch klar, dass ein Block, der im selben Szenario über eine größere Entfernung fallen gelassen wird, die Übereinstimmung nicht erkennt, bis wir einen weiteren Austausch durchführen. Der Grund dafür ist, dass das Spiel nicht oft genug nach Übereinstimmungen sucht.

Im Moment sucht das Spiel nur nach Matches nach einem Tausch, aber aufgrund der Zeit, die ein Block braucht, um diese Distanz zu fallen, ist die Match-Erkennung bereits beendet, wenn der Block den Boden berührt und so wird das Match erst gefunden es wird neu gestartet.

Um dies zu beheben, ändern wir, wenn wir eine FindMatches-Prüfung durchführen.

Gehen Sie zuerst zur Funktion SwapBlocks und entfernen Sie das letzte Event aus der Funktion, damit FindMatches überhaupt nicht aufgerufen wird.

SwapBlocks sollte jetzt so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Zu diesem Zeitpunkt gibt es kein Ereignis, das FindMatches aufruft. Wir werden dies beheben, indem wir dem Ereignis eine neue Aktion hinzufügen, die erkennt, wann Übereinstimmungen möglich sind. Suchen Sie dieses Ereignis und fügen Sie diese Aktion am Ende des Else-Ereignisses hinzu:

Ihr Event sollte nun so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Nutzen Sie auch diese Gelegenheit, um beide MatchesPossible-Ereignisse an das Ende des Spielcodes zu verschieben, falls Sie dies noch nicht getan haben. Dadurch wird sichergestellt, dass sie überhaupt nicht vor dem Code aufgerufen werden, der vorgefertigte Übereinstimmungen eliminiert.

Wenn Sie das Spiel jetzt ausführen, sollten Sie das oben vorgestellte Szenario problemlos ausführen können.


Verkettung

Nachdem dieses Problem behoben ist, werden wir das Verkettungssystem implementieren, das dem Spieler zusätzliche Punkte für Matches gibt, die durch die Zerstörung eines anderen Matches verursacht werden.

Sie können unten ein Beispiel für die Art der Situation sehen, die ich meine:

Match-3 Construct 2 tutorial

Im obigen Szenario bewegt der Spieler den grünen Block und erstellt eine Übereinstimmung. Dann führt die Zerstörung der grünen Blöcke dazu, dass die blauen Blöcke fallen und wenige Augenblicke später ein weiteres Spiel entsteht.

Ich möchte dem Spieler Bonuspunkte geben, wenn er so etwas erreicht. Insbesondere möchte ich einen Multiplikator auf die Anzahl der Punkte anwenden, die der Spieler für jedes Match erhält, und den Multiplikator mit jedem aufeinanderfolgenden Match erhöhen.

Damit es funktioniert

Damit dieses System funktioniert, werden wir eine neue Variable namens Chain erstellen und dann einige kleine Änderungen an den vorhandenen Funktionen vornehmen. Erstellen Sie also zuerst eine neue globale Variable:

Ihre Variable sollte so aussehen:

Match-3 Construct 2 tutorial

Diese Variable dient als Multiplikator für die Punkte, um anzuzeigen, wie lange eine Kette läuft.

Gehen Sie nun zu dem Ereignis, das das Fallen der Blöcke verursacht, und entfernen Sie das Else-Ereignis, das die Funktion FindMatches aufruft.

Gehen Sie nun zu FindMatches selbst und suchen Sie die Orte, an denen Sie die FloatingPointsText-Objekte erstellen. Ändern Sie die Set Text-Anweisungen so, dass sie eine neue Formel verwenden:

Diese Änderung bewirkt, dass der schwebende Text auf die gleiche Weise geändert wird, wie es schließlich die Punkte selbst werden.

Wechseln Sie als Nächstes zu dem Abschnitt von FindMatches, in dem Sie FindMatches am Ende des Ereignisses erneut aufrufen, und löschen Sie diesen Funktionsaufruf und die Wait-Anweisung. Warum? Denn wenn wir diese nicht entfernen, würde FindMatches am Ende zu oft aufgerufen und die Ketten würden nie richtig initiiert.

(Aufgrund der Änderungen, die wir zuvor in diesem Artikel vorgenommen haben, wird FindMatches immer dann aufgerufen, wenn sich alle Blöcke im Raster befinden und keiner fällt. Mehrere Bereiche, in denen wir FindMatches aufrufen, würden nur dazu führen, dass mehrere Instanzen der Funktion gleichzeitig ausgeführt werden , und könnte das Punktesystem durcheinander bringen.)

Abschließend nehmen wir noch eine weitere Änderung an dieser Funktion vor. Gehen Sie zum Ende der Funktion und fügen Sie diese Aktion hinzu, nachdem Sie PointsGiven auf 0 gesetzt haben:

Immer wenn das Spiel Übereinstimmungen findet, gibt es dem Spieler Punkte, zerstört die Blöcke und erhöht dann den Kettenwert.

Die neue Version von FindMatches sollte so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Gehen Sie als Nächstes zur GivePoints-Funktion und ändern Sie beide Aktionen, die den Wert des Scores erhöhen, so, dass sie den Chain-Wert berücksichtigen:

Mit dieser Änderung sollten GivePoints nun so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Zurücksetzen der Kette

Wir haben die Variable Chain als Multiplikator für die Punkte implementiert, die der Spieler erhält (und die Anzahl der Punkte, die in den schwebenden Textobjekten angezeigt werden), aber es gibt noch eine Sache, die wir tun müssen: Wir müssen eine Anweisung hinzufügen das setzt den Wert von Chain zurück, so dass er nicht einfach unendlich ansteigt.

Wir werden diese Anweisung dem On DragDrop Start Event hinzufügen, so dass jedes Mal, wenn der Spieler beginnt, einen neuen Block zu ziehen, dieser als neue Kette betrachtet wird. Der andere Grund, warum wir dies hier tun, ist, dass es verhindert, dass der Chain-Wert vorzeitig zurückgesetzt wird, wodurch alle Matches im letzten Teil einer Chain weniger wertvoll werden.

Gehen Sie zum On DragDrop Start Event und fügen Sie diese Aktion zur Aktionsliste hinzu:

Ihr Event sollte nun so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Wenn Sie das Spiel an dieser Stelle testen, sollten Sie feststellen, dass Sie 90 anstelle von 60 Punkten erhalten, wenn Sie eine Kette erstellen, wie ich sie zuvor im Gif gezeigt habe.

Damit ist das Verkettungssystem komplett und Sie sollten in der Lage sein, ohne Probleme eine so aufwendige Kette zu erstellen, wie Sie möchten.


Herunterfallen beheben

Das nächste, was ich behandeln möchte, ist ein Problem, das ich beim Fallsystem Block gefunden habe. Wenn Sie viel Zeit damit verbringen, unser Match-3-Spiel in seinem aktuellen Zustand zu spielen, ist Ihnen möglicherweise ein Problem aufgefallen, bei dem hin und wieder ein Block nicht fällt, obwohl sich kein Block darunter befindet.

Sie können im Bild unten sehen, was ich meine:

Match-3_Game_Construct-2_BrokenFalling

Obwohl es keinen Block unter dem gelben Block gibt, ist es immer noch nicht gelungen, in den leeren Raum zu fallen. Dies ist ein seltenes Problem, aber wenn es nicht behoben wird, kann es dennoch die Punktzahl von jemandem durcheinander bringen und verhindern, dass er eine von ihm eingerichtete Kette erhält, oder sogar dazu führen, dass er verliert, sobald wir die Game Over-Funktion hinzufügen.

Das Problem kommt von der Variable BlockBeingMoved, die vom Ereignis verwendet wird, das bestimmt, wann Blöcke fallen sollten, um sicherzustellen, dass keine Blöcke verschoben werden, wenn ein Block angewiesen wird, einen leeren Raum auszufüllen. In einigen Szenarien wird diese Variable nie zurückgesetzt, wenn der Spieler einen Block bewegt, und die Blöcke fallen nicht, bis ein anderer Block bewegt und korrekt zurückgesetzt wird. Um dies zu beheben, fügen wir ein Ereignispaar hinzu, das diese Variable richtig setzt und zurücksetzt, und wir entfernen die aktuellen Aktionen, die die Variable festlegen, da sie nicht richtig funktionieren.

Gehen Sie zunächst zu den OnDragDrop-Start- und On DragDrop-Drop-Ereignissen und entfernen Sie alle Aktionen, die sich mit der BlockBeingMoved-Variablen aus diesen Ereignissen befassen. In jedem Ereignis sollte es eine Aktion geben, die gelöscht werden muss.

Gehen Sie als Nächstes zu dem Ereignis, das erkennt, wenn sich unter einem Block ein leerer Bereich befindet. Wir werden die Bedingungen dieser Veranstaltung ändern. Stellen Sie zunächst sicher, dass die Bedingung, die prüft, ob BlockBeingMoved gleich 0 ist, am Anfang steht. Fügen Sie dann am Ende des Ereignisses eine weitere Bedingung hinzu, die überprüft, ob keine Blöcke verschoben werden.

Dies ist die Bedingung, die Sie hinzufügen werden:

Ihr Event sollte nun so aussehen:

Match-3_Game_Construct-2_ModifiedBlockFallingMatch-3_Game_Construct-2_ModifiedBlockFallingMatch-3_Game_Construct-2_ModifiedBlockFalling

Schließlich werden wir am Ende des Ereignisblatts zwei weitere Ereignisse hinzufügen, die die Variable BlockBeingMoved behandeln. Gehen Sie zum Ende Ihres Ereignisblatts und fügen Sie diese Ereignisse hinzu:

Ihre neuen Events sollten so aussehen:

Match-3_Game_Construct-2_BlockBeingMovedEventMatch-3_Game_Construct-2_BlockBeingMovedEventMatch-3_Game_Construct-2_BlockBeingMovedEvent

Diese Ereignisse ändern BlockBeingMoved effektiv von 0 auf 1 und von 1 auf 0, wenn ein Block verschoben wird bzw. nicht verschoben wird. Wenn Sie das Spiel zu diesem Zeitpunkt testen, sollten Sie in der Lage sein, so oft zu spielen, wie Sie möchten, ohne auf Probleme mit fallendem Block zu stoßen.


Spiel ist aus

Nachdem unser Verkettungssystem nun eingerichtet ist, fügen wir das Verlustszenario und einen Game Over-Bildschirm hinzu.

Das erste, was wir tun müssen, ist ein neues Layout hinzuzufügen, das als unser Game Over-Bildschirm fungiert:

  1. Klicken Sie auf der rechten Seite des Bildschirms mit der rechten Maustaste auf den Ordner Layouts und wählen Sie Layout hinzufügen.
  2. Wählen Sie Ereignisblatt hinzufügen.
  3. Gehen Sie zum neuen Layout und erstellen Sie ein neues BG-Kachelobjekt.
    1. Wählen Sie das Bild GameOverBGTile.png aus dem Ordner BG Images im Grafikpaket, das Sie während des ersten Tutorials heruntergeladen haben.
    2. Stellen Sie die Position auf -6, -7 ein.
    3. Stellen Sie die Größe auf 613, 619 ein.
  4. Erstellen Sie ein neues Sprite-Objekt.
    1. Wählen Sie das Bild GameOverText.png aus dem Grafikpaket.
    2. Stellen Sie die Position auf 303, 200 ein.
  5. Erstellen Sie ein neues Button-Objekt.
    1. Legen Sie den Namen auf RestartButton fest.
    2. Stellen Sie die Position auf 262, 410 ein.
    3. Stellen Sie die Größe auf 100, 30 ein.
    4. Stellen Sie den Text auf Restart ein.

Nachdem Sie Ihren Game Over-Bildschirm eingerichtet haben, kehren Sie zu Ihrem ursprünglichen Layout, Layout 1 zurück, und fügen Sie diesem Bildschirm ein neues Element hinzu:

  1. Erstellen Sie auf Layout 1 ein neues Sprite-Objekt.
  2. Verwenden Sie das Farbeimer-Werkzeug, um dieses Sprite vollständig rot zu malen.
  3. Schließen Sie den Animationseditor.
  4. Setzen Sie den Namen auf GameOverArea.
  5. Stellen Sie die Position auf 196, -30 ein.
  6. Stellen Sie die Größe auf 344, 150 ein.
  7. Setzen Sie die Deckkraft auf 0.

Sie sollten beachten, dass sich dieses Sprite an der gleichen Position und Größe wie der obere Teil des Spielfelds befindet. Wir werden dieses Sprite-Objekt verwenden, um zu erkennen, wann der Spieler verloren hat, indem wir erkennen, wenn ein Block mit ihm kollidiert. Gehen Sie zu Ereignisblatt 1, damit wir mit der Implementierung beginnen können.

Stoppt die Blöcke an der Spitze

Bevor wir mit der Erkennung des Verlustszenarios beginnen, müssen wir eine neue Variable hinzufügen, mit der wir die Blöcke stoppen, wenn sie das GameOverArea-Objekt treffen, damit sie sich nicht mehr bewegen. Dadurch wird dem Spieler klar, dass er verloren hat.

Gehen Sie nun zu dem Ereignis, in dem Sie die Blöcke verschieben, und fügen Sie diese Bedingung hinzu:

Ihr Bewegungs-Event sollte nun so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Da die Bewegung nun unsere neue Variable verwendet, fügen wir das Ereignis hinzu, das den Verlustzustand erkennt:

Das gerade erstellte Event ruft die Game Over-Funktion auf, sobald ein Block die GameOverArea überlappt. Jetzt werden wir tatsächlich die GameOver-Funktion erstellen.

Ihre beiden neuen Events sollten so aussehen:

Match-3_Game_Construct-2_GameOverEventsMatch-3_Game_Construct-2_GameOverEventsMatch-3_Game_Construct-2_GameOverEvents

Der Grund dafür, dass wir eine separate Funktion erstellt haben, anstatt diese Aktionen innerhalb des Events durchzuführen, die das Spiel tatsächlich erkennen, ist, dass dieses Event aufgrund der Events, die es auslösen, nur bestimmte Blöcke betrachtet. Wie Sie in der von uns erstellten Funktion sehen können, deaktivieren wir die Ziehfunktionen des Blocks, um zu verhindern, dass der Spieler weiterhin Matches macht, nachdem das Spiel erkannt wurde. Wenn wir dies für den Fall tun würden, dass das Spiel beendet wird, würden nur die Blöcke deaktiviert, die das Spiel beendet haben, und jeder andere Block könnte immer noch gezogen werden.

Gehen Sie nun zu Ereignisblatt 2; Wir werden dem RestartButton-Objekt, das wir zuvor erstellt haben, einige Funktionen hinzufügen. Fügen Sie dem Ereignisblatt 2 ein neues Ereignis hinzu:

So sollte Ihre Veranstaltung aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Zurücksetzen der Werte

Wenn Sie das Spiel jetzt spielen, ein Spiel beenden und dann neu starten, sollten Sie feststellen, dass es zum ursprünglichen Layout zurückkehrt, sich jedoch die Blöcke nicht bewegen. Der Grund dafür ist, dass alle von uns verwendeten Variablen globale Variablen sind, sodass einige von ihnen nicht automatisch zurückgesetzt werden, wenn wir das Layout neu starten.

Um sie zurückzusetzen, müssen wir unserem On-Start-of-Layout-Event eine Aktion hinzufügen, die sie manuell für uns zurücksetzt.

Gehen Sie zu On Start of Layout Event und fügen Sie diese Aktion zum initialen Event hinzu, bevor die For-Schleifen aufgerufen werden:

Ihr Event sollte nun so aussehen:

Match-3 Construct 2 tutorialMatch-3 Construct 2 tutorialMatch-3 Construct 2 tutorial

Wenn Sie erneut testen, sollte dieses Problem nicht mehr auftreten.


Was sollten Sie als nächstes tun?

An dieser Stelle haben wir alle Funktionen durchgegangen, die ich im Rahmen dieser Tutorials behandeln wollte.

Sie werden feststellen, dass Ihr Spiel immer noch nicht genau dem in der obigen Demo entspricht, mit dem größten Unterschied, dass Ihr Spiel keinen Startbildschirm hat. Ich habe mich entschieden, nicht auf die Erstellung des Startbildschirms einzugehen, da dies fast identisch mit der Erstellung des Game Over-Bildschirms ist - ich überlasse dies als Übung für Sie.

Stattdessen werde ich einige Funktionen besprechen, die Sie Ihrem Spiel hinzufügen könnten, die es besser oder interessanter machen könnten.


Spezialblöcke

Das erste, was ich besprechen möchte, sind Spezialblöcke – Blöcke, die dem Spieler entweder Boni verleihen oder eine einzigartige Funktion erfüllen.

Die meisten Match-3-Spiele enthalten spezielle Blöcke, um die Action zu unterbrechen und das Spiel spannender zu machen. So wie es aussieht, kann das Spiel theoretisch ewig weitergehen, aber das Gameplay ändert sich nie. Hin und wieder spezielle Blocktypen einzuführen, kann dazu beitragen, das Spiel interessanter zu machen, wenn es schon eine Weile läuft.

Um einen Spezialblock zu integrieren, müssen Sie die Art und Weise ändern, wie Blöcke generiert werden, sodass jedes Mal, wenn ein Block erstellt wird, eine zufällige Chance besteht, dass er zu einem Spezialblock wird. Es gibt eine Reihe von Möglichkeiten, dies zu tun, aber im Allgemeinen ist es am besten, einfach eine Zufallszahl zwischen 1 und 100 zu generieren und nur einen Spezialblock zu generieren, wenn der Zufallswert zwischen 95 und 100 oder einem anderen von Ihnen gewählten Bereich liegt.

Ihr Ziel sollte es sein, Spezialblöcke selten, aber nicht zu selten zu machen. Auf diese Weise erhält der Spieler sie regelmäßig genug, um das Spiel unterhaltsamer zu machen, aber nicht so oft, dass dies das Gleichgewicht des Spiels zerstört.

Bombenblöcke

Wenn es um Spezialblöcke geht, haben Sie viele Möglichkeiten; einer der häufigsten ist ein Bombenblock.

Bombenblöcke bewirken, dass zusätzliche Blöcke zerstört werden, wenn sie zerstört werden. Sie sind in jedem Spiel anders: In einigen Spielen zerstören sie alle Blöcke, die sie umgeben; in anderen zerstören sie eine ganze Reihe oder Spalte von Blöcken.

Im Bild unten sehen Sie zwei der Bombenblocktypen aus dem beliebten Spiel Candy Crush Saga:

Match-3 Construct 2 tutorial

Bombenblöcke sind im Allgemeinen ziemlich einfach zu integrieren:

  • Beginnen Sie mit einem Event, das auf die Zerstörung von Bombenblöcken wartet.
  • Immer wenn einer zerstört wird, sollte er seine Position an eine Funktion übergeben, die dann alle Blöcke findet und zerstört, die auch von diesem Bombenblock zerstört würden.
  • Wenn Ihr Bombenblock beispielsweise alle umliegenden Blöcke zerstören soll, würden Sie die Position des Bombenblocks an eine Funktion übergeben, die jede der umliegenden Positionen untersucht, um zu sehen, ob sich dort Blöcke befinden.
  • Findet es an diesen Positionen Blöcke, zerstört es diese.

Time-Slow- oder Time-Stop-Blöcke

Ein weiterer spezieller Blocktyp, den Sie in vielen Spielen finden, ist einer, der die Bewegung der Blöcke verlangsamt oder sie vollständig stoppt.

Blöcke wie diese sind sehr einfach zu machen.

  • Genau wie bei Bombenblöcken benötigen Sie ein Ereignis, das darauf achtet, wenn einer dieser Blöcke zerstört wird.
  • In diesem Fall sollten Sie entweder MovementsPossible auf 1 setzen, damit die Blöcke anhalten, oder die speed ändern, damit sich die Blöcke sehr langsam bewegen.
  • Dann sollten Sie einen Timer starten, der für einen kurzen Zeitraum dauert, vielleicht 10 - 15 Sekunden. Sobald dieser Timer abgelaufen ist, setzen Sie die Geschwindigkeit der Blöcke zurück und fahren normal fort.

Sie müssen daran denken, dass der Spieler einen Zeitstopp-Block aktiviert, während ein anderer Zeitstopp-Block bereits aktiv ist. In diesem Szenario sollten Sie den Timer neu starten oder dem vorhandenen Timer die Standardlänge des Timers hinzufügen und normal fortfahren.


Andere Spielmodi

Sie können auch andere Spielmodi hinzufügen, wenn der Spieler sich von dem von uns erstellten Endless-Modus langweilt.

Zeitgesteuerter Modus

Der einfachste Spielmodus, der hinzugefügt werden kann, ist ein Spielmodus, bei dem der Spieler ein Zeitlimit hat, mit dem Ziel, so viele Punkte wie möglich zu erhalten, bevor die Zeit abläuft.

In diesem Szenario würden Sie den gesamten Spielcode unberührt lassen, außer um dem Spiel eine zweite Verlustbedingung hinzuzufügen, bei der das Spiel endet, wenn der Timer abgelaufen ist (sowie wenn die Blöcke den oberen Rand des Bildschirms erreichen).

Wenn das Spiel beginnt, würden Sie einen Timer für die Dauer des Modus starten, und wenn der Timer endet, würden Sie das Spiel auf die gleiche Weise beenden, wie Sie es jetzt tun.

Puzzle-Modus

In diesem Spielmodus würden Sie dem Spieler ein ganz bestimmtes Spielbrett geben, das Sie im Voraus entwerfen, und ihn bitten, alle Blöcke in so wenigen Tauschvorgängen wie möglich zu beseitigen.

(Sie werden wahrscheinlich die Blockbewegung deaktivieren wollen, da, wenn sich die Blöcke bewegen, im Laufe der Zeit auch neue Blöcke hinzugefügt werden.)

In diesem Modus müssen Sie in der Lage sein, ein bestimmtes Blockraster einzurichten. Sie benötigen also ein System, mit dem Sie beim Start des Spiels ein bestimmtes Block-Setup übergeben können, anstatt eines wie jetzt völlig zufällig zu generieren.

Darüber hinaus wäre dieser Spielmodus zwar relativ einfach zu implementieren, erfordert jedoch viel manuelles Puzzle-Design, damit Sie viele einzigartige Rätsel erstellen können, die der Spieler ausprobieren und lösen kann.

Das Hinzufügen eines solchen Spielmodus kann aufgrund der erforderlichen Inhaltserstellung ziemlich zeitaufwändig sein, aber es gibt viele Spieler, die es genießen würden. Es kann sich wirklich gut auszahlen, wenn Sie die Zeit investieren.


Abschluss

Im Laufe dieser Tutorial-Reihe haben wir ein komplettes Match-3-Spiel von Anfang bis Ende erstellt. Es gibt noch viel mehr, was Sie mit diesem Spiel tun können, wenn Sie sich die Zeit und Fantasie nehmen, aber es gibt auch viele Möglichkeiten, die Ideen, die ich vorgestellt habe, zu verwenden, um Ihnen bei anderen Spielprojekten zu helfen.

Arbeiten Sie weiter an Ihrem Spiel und entdecken Sie neue Ideen, denn Sie wissen nie, wann etwas, das Sie hier gelernt haben, später nützlich sein könnte.

Ich hoffe, dass Sie daraus etwas gelernt haben, egal ob Sie die ganze Serie durchgegangen sind oder nur zu den Teilen gesprungen sind, die Sie nicht alleine schaffen konnten. Wenn Sie Probleme oder Kommentare haben, teilen Sie uns dies in den Diskussionen unter jedem Artikel mit. Ich würde gerne von Ihnen hören und sehen, welche Wendungen Sie hinzufügen werden. Auf jeden Fall danke fürs Lesen und viel Glück bei deinen Spielen!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Game Development tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.