Sliding 15
Kurzinfo
Themenbereich
Softwareentwicklung
Lernende/r
Jonathan Wirz
Lehrbetrieb
Suva
Betreuer
Manuel Gut
Projekt-Website
Aufgabenstellung
Als Abschluss des ersten Semesters im Basislehrjahr durften wir ein individuelles Projekt umsetzen. Ich habe mich entschieden, mein Lieblingspuzzle, das 15er-Puzzle oder Sliding-Puzzle, in die Onlinewelt zu bringen und einen Multiplayer-Modus zu entwickeln. Meine Ziele waren:
- Das Puzzle soll online spielbar sein, in verschiedenen Größen und Schwierigkeitsgraden
- Das Puzzle soll man gegen andere Spieler spielen können
- Ich lerne, mit Tailwind CSS, Node.js und Socket.io zu arbeiten
- Es soll eine Daily Challenge geben
- Es soll eine Rangliste geben
Ergebnisse
Ich habe das Puzzle erfolgreich umgesetzt, sodass man es jetzt online spielen kann. Es gibt verschiedene Größen und Schwierigkeitsgrade. Auch konnte ich mein größtes Ziel erreichen: einen funktionierenden Multiplayermodus zu erstellen. Mit meinem Tailwind-CSS-Design bin ich ebenfalls sehr zufrieden und konnte viel im Bereich Design dazu lernen. Es gibt eine Daily Challenge, allerdings in einer einfacheren Version, als ich sie ursprünglich geplant hatte. Die Rangliste konnte ich leider nicht umsetzen, da mir dafür die Zeit fehlte.
Lösungskonzept
Ich habe zuerst angefangen, die Grundlage und die Logik des Puzzles zu erstellen, da ich diese sowohl für den Multiplayer als auch für den Singleplayer benötigt habe. Nachdem die Generierung und die Validierung des Puzzles fertig waren, habe ich mit der Entwicklung des Singleplayers begonnen. Dafür habe ich Seeds hinzugefügt, sodass jedes Puzzle identifizierbar ist und beispielsweise geteilt werden kann. Als es eine spielbare Version des Singleplayer-Puzzles gab, habe ich mit dem Multiplayer begonnen. Zuerst habe ich ein wenig recherchiert, wie ich den Multiplayer umsetzen konnte. Ich habe mich für Websockets entschieden, da diese Lösung für meine Art von Multiplayer am einfachsten erschien. Viele Teile der Logik konnte ich vom Singleplayer übernehmen. Diese habe ich angepasst und einen Websocket implementiert. Danach erstellte ich ein Lobbysystem. Ganz zum Schluss habe ich das Design erstellt und noch Fehlermeldungen hinzugefügt.
Aufgetretene Probleme
Ich habe die benötigte Zeit für die Erstellung der Logik des Puzzles unterschätzt. Bis zum Schluss gab es immer wieder Probleme mit der Generierung und der Validierung des Puzzles. Auch die Umsetzung des Multiplayers war schwierig. Ich hatte Probleme mit dem Lobbysystem und den verschiedenen Spielern.
Ausblick
Da ich die Zeit für den Singleplayer und den Multiplayer unterschätzt habe, konnte ich die Rangliste nicht mehr umsetzen. Auch hätte ich gerne die Daily Challenge verbessert, zum Beispiel durch die Einführung einer Streak-Funktion.