Connect 4 mit Gestensteuerung & Algorithmus

Ich arbeite momentan an einem Connect 4 Spiel, das wahlweise durch eine normale Maussteuerung oder Gestensteuerung bedient werden kann. Deine Gegner: knackige Algorithmen mit den Namen Mini-und Negamax.

Momentan ist das Spiel noch in der Entwicklung und daher noch nicht ganz ausgereift. Deshalb funktioniert es bis jetzt nur auf dem Desktop. Doch ein solides Grundgerüst mit mehreren Versionen steht schon bereit, um ausgetestet zu werden.

Falls du die Gestensteuerung ausprobieren willst: Vergiss nicht, den Zugriff auf deine Kamera im Browser zu erlauben!

LINK ZUM SPIEL

Hier kannst du den Stand der Dinge auf GitHub verfolgen:

GITHUBLINK

(pru)

Idee

Die ursprüngliche Idee war ein Connect 4, dass mit einer selbstlernenden KI und Gestensteuerung versehen ist, zu entwickeln. Leider musste ich feststellen (wie befürchtet), dass der Aufwand viel zu hoch gewesen wäre, eine selbst lernende KI für ein Spiel wie Connect 4 zu entwickeln.

Der (Um)Weg

Wie Anfangs schon geschrieben, habe ich die Idee mit der KI verworfen, aber was nun?  Connect 4 Spiele gibt es im Internet wie Sand am Meer und sind eher langweilig. Ich wollte etwas anderes, etwas, was sich abhebt vom Einheitsbrei. Ich war weiter am Grübeln und dann kam mir die Idee: Connect 4 mit Gestensteuerung in einem dreidimensionalen Raum!

Bis jetzt hatte ich ein 2D-Spiel und einen Algorithmus, der ganz ok war. Und den Quellcode dafür habe ich rudimentär mit Klassen und Methoden aufgebaut. Aber grosse Visionen benötigen ein flexibles und strukturiertes Konstrukt hinter den Kulissen.

Also habe ich erstmal angefangen, den Quellcode besser zu strukturieren und habe verschiedene Klassen mit den nötigen Methoden erstellt. Eigentlich hätte ich zuerst ein Ablaufdiagramm erstellen müssen, und dieses dann im zweiten Schritt in Pseudocode umsetzen müssen. So hätte ich mir viele Umwege und Frustrationen ersparen können.

Nur die Zeit bis zur Abgabe war knapp und mein Terminkalender war zum Ende des Semesters total voll. Leider hatte ich aber auch wirklich viel Spass beim Entwickeln und habe oft die Zeit vergessen. Denn ich habe viel Zeit mit dem Strukturieren der Klassen und Aufteilen der Methoden verbraten. Doch der wichtigste und schwierigste Teil kam ja noch, die dritte Dimension und die Gestensteuerung *räusper*.

Für die 3D Geschichte habe ich eine tolle Bibliothek gefunden, mit dem unscheinbaren Namen «Three». Ich wusste bis zu diesem Zeitpunkt nicht mal, dass JS zu solchen Dingen überhaupt in der Lage ist. Also habe ich mir mit der API die nächsten Nächte um die Ohren gehauen und ich kam vor lauter Begeisterung vom hundertsten ins tausendste. Irgendwann hatte ich zumindest eine halbwegs akzeptable Umgebung geschaffen. Man konnte das Spielbrett im Raum drehen, ich hatte diverse Lichtquellen gesetzt, super.

Ok, dachte ich mir, jetzt beginnst du die Gestensteuerung zu integrieren. Dafür habe ich auch etwas Besonderes gefunden und zwar MediaPipe. 

Lange Rede, kurzer Sinn – MediaPipe ist wirklich eine tolle Bibliothek mit vielen Möglichkeiten, aber beide Systeme arbeiten mit komplett unterschiedlichen Koordinatensystemen und hier liegt der Hund begraben. Ich habe beide Systeme nicht komplett verstanden und darum muss ich mich erst noch richtig darin einarbeiten, um die 3D Variante fertigstellen zu können. Also bin ich back to the roots und habe die Gestensteuerung in die 2D Variante integriert und das Spiel erstmal weiterentwickelt. Erstmal eine Schritt zurück – verstehen – weitermachen …

Ausblick

Also, was nun? Was sind meine Pläne für das Projekt?

In der nächsten Phase der Entwicklung werde ich den Schwerpunkt auf der Verbesserung der Interaktivität und Benutzerfreundlichkeit legen. Ein Hauptaugenmerk werde ich auf die Verfeinerung der Gestensteuerung legen, mit Plänen zur Integration einer Mimikerkennung, um direkt auf die Emotionen der Spieler reagieren zu können. Das wird das Spielerlebnis persönlicher und interaktiver gestalten.

Zudem steht eine Überarbeitung des Highscore-Systems an, damit Spieler nicht nur ihre Ergebnisse speichern, sondern auch frühere Scores abrufen können, um sich mit anderen zu messen und sich kontinuierlich zu verbessern.

Eine umfassende Überarbeitung der Codebasis für eine bessere Strukturierung und die Einführung von Helferklassen, die die Wartbarkeit verbessern sollen, stehen dann noch an. Auch ist eine Erweiterung des Spielfelds geplant, die das Spiel dynamischer und strategisch anspruchsvoller macht.

Ein weiteres grosses Ziel ist die Wiederaufnahme der 3D-Version des Spiels, die ich aufgrund technischer Herausforderungen pausieren musste. Diese Version soll durch ansprechende Grafiken und eine neue räumliche Komponente das Spielerlebnis bereichern.

Ausserdem ist geplant, eine Funktion einzuführen, die es ermöglicht, gespeicherte Spiele im Autoplay-Modus abzuspielen. Das wird Spielern helfen, ihre Spielzüge zu analysieren und von anderen zu lernen.

Diese Updates sollen Connect 4 weiterhin spannend machen und eine solide Basis für zukünftige Verbesserungen bieten.