Die Sitzordnung unserer Klasse wie ein Online-Spiel gestalten – Seat Stealer
(seat-admin.coupy.dev)Hintergrund
- Das Side-Project begann in meiner Oberstufenzeit mit dem Wunsch, die lästige und langweilige Sitzverteilung unterhaltsamer zu machen.
- Die Idee war, dass die Schüler mit ihren eigenen Geräten teilnehmen und um ihre Wunschplätze konkurrieren.
- Damals war sogar die Schülerliste hartkodiert, und der Code war vollkommen zu Spaghetti-Code geworden, aber am Ende kam dennoch ein ziemlich überzeugendes Ergebnis heraus.
- Den ersten Tag der Vorführung nach Erlaubnis durch den Klassenlehrer werde ich nie vergessen. Die Reaktionen waren großartig, und das Projekt wurde das ganze Jahr über genutzt.
Neuaufbau
- Nach dem Abschluss meldete sich die Schule bei mir. Sie baten darum, das Programm an die aktuelle Klasse anzupassen.
- Der Code war jedoch viel zu verworren, und weil sowohl die Schülerliste als auch die Sitzordnung hartkodiert waren, entschied ich mich für einen Neuaufbau, um ein wartbares Projekt zu schaffen.
- Struktur
- Backend: Damit alle Schülerdaten vollständig auf dem Client verarbeitet werden, fungiert das Backend nur als eine Art „Game Server“, der lediglich Daten weitergibt.
- Node.JS
- Socket.IO
- Frontend – Admin: Verwaltet sämtliche Schülerdaten und steuert den gesamten Ablauf des Spiels. Dieser Bildschirm wurde für eine Umgebung entworfen, in der er auf einem TV angezeigt wird.
- SvelteKit
- Socket.IO
- Frontend – Schüler: Ist über das Backend mit dem Admin verbunden und sendet bzw. empfängt Daten.
- SvelteKit
- Socket.IO
- Backend: Damit alle Schülerdaten vollständig auf dem Client verarbeitet werden, fungiert das Backend nur als eine Art „Game Server“, der lediglich Daten weitergibt.
- Damit sich Sitzordnung und Schülerliste leicht anpassen lassen, wurde ein Editor mit benutzerfreundlicher UI eingeführt.
Szenario
- Auf der Admin-Seite wird „Online-Sitzordnung“ gestartet und eine Datei mit den Schülerdaten hochgeladen. Dadurch wird ein neuer „Raum“ erstellt, und ein QR-Code erscheint, über den sich die Schüler verbinden können.
- Die Schüler scannen den QR-Code mit ihren jeweiligen Geräten und treten dem Spiel bei. Auf der Admin-Seite lässt sich der Verbindungsstatus der Schüler überprüfen und verwalten.
- Wenn das Spiel auf der Admin-Seite gestartet wird, erscheint auf der Schüler-Seite der Bildschirm zur „Sitzplatzwahl“. Stimmen sie für ihren gewünschten Platz ab, wird dies auf der Admin-Seite protokolliert.
- Sobald alle Schüler abgestimmt haben, zeigt die Admin-Seite das Ergebnis an.
- Schüler, die für denselben Platz gestimmt haben, spielen vor Ort ein kurzes Spiel gegeneinander.
- Schere, Stein, Papier, Würfel, Minigame usw.; das liegt im Ermessen der Lehrkraft.
- Der Schüler, der das Spiel gewinnt, erhält den entsprechenden Platz.
- Das wird wiederholt, bis alle Schüler einen Platz zugewiesen bekommen haben.
Rückblick
- Um transparent offenzulegen, dass keine Schülerdaten gesammelt oder genutzt werden, wurde das Projekt als Open Source veröffentlicht.
- Da es für den Einsatz in Schulen gedacht ist, war es am schwierigsten, das System so zu entwerfen, dass es auf möglichst viele Ausnahmesituationen reagieren kann.
- Wenn bei einem Schüler während des Spiels die Verbindung abbricht, wird eine Wiederverbindung versucht; falls das scheitert, kann er nach erneutem Beitritt an derselben Stelle weitermachen.
- Wenn ein Schüler fehlt, kann das Spiel auch ohne seine Teilnahme fortgesetzt werden.
- Wenn ein Schüler zu spät kommt, kann er auch mitten im Spiel noch beitreten.
- Wenn sich jemand als ein anderer Schüler ausgibt, kann diese Person aus dem Raum entfernt werden.
- Damit das System auch in verschiedenen Klassen genutzt werden kann, wurde eine benutzerfreundliche Anleitung erstellt und auf YouTube veröffentlicht.
- Da noch Ferienzeit ist, konnte ich das Ergebnis des Projekts bisher noch nicht sehen; deshalb freue ich mich nun sogar auf das Frühlingssemester, auf das ich sonst nie gewartet hätte.
- Wenn Sie Lehrkräfte in Ihrem Umfeld haben, teilen Sie es bitte mit ihnen. Vielen Dank.
4 Kommentare
In Chrome erhöht sich der Zähler nicht, auch wenn man die Namen der Schüler hinzufügt.
Es wäre gut, wenn man statt aller Namen nur Nummern verwenden könnte, da es mühsam sein kann, alle Namen einzutragen.
Süß, haha
Ich sehe zwar ein paar kleinere Punkte, die man noch verbessern könnte, aber ich werde es mal mit Lehrkräften in meinem Umfeld teilen.
Eine lustige Idee!