Auf Basis eines ESP32-Mikrocontrollers und MAX7219 LED-Matrizen.
Ziel: ein kompaktes, netzwerkfähiges Gerät, das den physischen Würfelbecher ersetzt
und dabei die Spiellogik vollständig abbildet — inklusive Stapelverwaltung,
Regelauswertung und Mehrspielerbetrieb.
Das war die Idee — die praktische Umsetzung führte dann zu etwas gaaanz anderem ;-)
Die Umsetzung gliedert sich in zwei parallele Zweige, die unterschiedliche Ziele verfolgen:
Ein einfacher „elektronischer Würfelbecher“ ist hardwareseitig schnell realisiert. Wenn man aber einen leistungsfähigen Mikrocontroller mit integrierter Netzwerkhardware einsetzt, bietet es sich an, Aufgaben wie Stapelverwaltung und Regelauswertung zentral an diesen zu übergeben — anstatt sie redundant in jedes Gerät zu implementieren.
Das Kriterium ist dabei aber nicht die Redundanz, die schon lästig genug wäre. Entscheidend ist: Läuft das Spiel nur lokal auf den einzelnen Clients, kann jeder Spieler seine eigenen JS-Variablen auslesen — und verändern. Also muss eine zentrale, neutrale Instanz her, die das Würfeln übernimmt und das Ergebnis verbindlich an alle Teilnehmer verteilt.
Voraussetzung dafür ist eine stabile, ausreichend getestete Spiellogik. Daher entstand zunächst die Netzwerkversion als Software-Fundament — mit Single-Player-Modus und Mixed-Mode (menschliche Spieler und KI-Gegner gemischt). Erst auf dieser Basis wird die Firmware für den Mikrocontroller entwickelt.
Sourcen: Die Quellcodes beider Zweige sind noch nicht vollständig veröffentlicht.
Für die Hardware soll erst noch eine halbwegs stabile Version fertig werden —
insbesondere wegen der noch offenen Hardwareauswahl.
Den Quellcode des Clients lädt jeder Spieler automatisch auf sein Gerät herunter.
Der Quellcode des Servers ist z. Zt. noch nicht frei verfügbar, da er noch auf
Schwachstellen, Fehler und Lücken getestet wird.
Die ersten Experimente mit LED-Matrix-Anzeigen auf dem ESP32 — bevor die Software das Projekt überholte.
Zwei Prototypen-Aufnahmen aus der Entwicklung: zunächst die Grundfunktionalität einer schnell in der Bastelecke zusammengeklebten NETSCHOCK-Box, die die Würfelfunktionalität kurz zeigt — und dann ein komplettes Spiel (1. Hälfte) mit 2 LED-Matrix-Clients, einem Browser-Client und 2 Bots.
Die NETSCHOCK-Box ist mehr als ein Prototyp: Sie ist ein elektronischer Würfelbecher — gedacht auch für Menschen mit motorischen Einschränkungen, die einen herkömmlichen Würfelbecher nicht heben können und damit von solchen Spielen praktisch ausgeschlossen sind. Ein Knopfdruck genügt.
Der Hardware-Zweig setzt auf einen ESP32 NodeMCU als zentralen Mikrocontroller. Das Gerät bringt WiFi, Bluetooth und das ESP-NOW-Protokoll für direkte Peer-to-Peer-Kommunikation zwischen den Spielgeräten mit — ohne Router, ohne zusätzliche Infrastruktur. Als Display kommen MAX7219 LED-Matrizen (8×8 Pixel) zum Einsatz, verbunden über SPI-Daisy-Chain.
Ein Gerät, ein Kippschalter, fünf Taster:
Die folgenden Simulationen zeigen das LED-Display-Verhalten beider Entwürfe im Browser — ohne echte Hardware. Würfeln, sperren, aufdecken, Wertung berechnen.
256 adressierbare RGB-LEDs auf einer 16×16 Matrix. Jeder Würfel belegt einen 5×5-Bereich, Augen als 1×1 Pixel. Rechts: Stapel- und Statusanzeige. Kein OLED — alles auf einer Fläche.
NETSCHOCK v3.22 ist spielbar — eine laufende Instanz ist unter netschock.de erreichbar. Der Server wird derzeit aktiv getestet und laufend erweitert. Die Sourcen sind noch nicht freigegeben.
Läuft als WLAN-Access-Point, verbindet sich optional als STA ins Heimnetz. Optionales OLED-Display (Heltec V3), Batterie-ADC, Ladestatus. Standalone ohne weitere Infrastruktur.
Permanenter Server, uWebSockets als Event-Loop, statische Dateien werden direkt ausgeliefert. Beide Plattformen teilen denselben src/-Code.
Mehrere parallele Räume, jeder mit eigenem Spielzustand. ESP32 kann sich als Remote-Raum beim Linux-Server anmelden (Tunnel via MiniWS.h).
Regelbasiert, serverseitig: hält Einsen, dreht Sechser um, wägt Stehen vs. Weiterwürfeln anhand Kombination und Gegner-Würfe ab.
2–8 Spieler im selben Raum. Jeder auf seinem Gerät. Menschliche Spieler und Bots flexibel kombinierbar.
URL ohne Namensparameter öffnen — Spielstand beobachten ohne aktive Teilnahme.
Laufende Instanz von NETSCHOCK v3.22 — direkt im Browser spielbar, kein Download erforderlich. Einfach Namen eingeben, Raum erstellen, Link an Mitspieler schicken — oder KI-Gegner hinzufügen.
Smartphones: QR-Code scannen → sofort mitspielen.
Von der ersten Verkabelung auf dem Steckbrett bis zu den fertigen Anzeigen. Bilder anklicken zum Vergrößern.
Jeder Spieler würfelt reihum. Wer die schlechteste Wertung hat, erhält Scheiben aus dem Stapel. Wer alle 13 Scheiben hat, verliert die Runde. Nach zwei Runden — oder im Finale — steht der Gesamtverlierer fest.
Jeder Spieler hat bis zu 3 Würfe. Nach jedem Wurf drei Möglichkeiten:
Wer in einem einzigen Wurf zwei oder drei Sechsen würfelt, darf umdrehen — aber nur bis zum zweiten Wurf:
Sechsen dürfen nur umgedreht werden, wenn sie alle aus dem gleichen Wurf stammen.
| Rang | Bezeichnung | Würfel | Konsequenz |
|---|---|---|---|
| 1. | Schock-aus | 1 · 1 · 1 | Spieler scheidet aus dieser Runde aus |
| 2. | Schock | 1 · 1 · X | Verlierer bekommt X Scheiben — höherer X gewinnt |
| 3. | General | X · X · X | Verlierer bekommt X Scheiben — höherer X gewinnt |
| 4. | Straße | X · X+1 · X+2 | 2 Scheiben — höhere Straße gewinnt |
| 5. | Normal | hoch · mittel · niedrig | 1 Deckel — höhere Zahl gewinnt |
Bei Gleichstand verliert der Nachleger (wer später in der Runde dran war). General 6 kann — wenn nicht letzter Wurf — umgedreht werden. Schock 2 schlägt General 6, die Scheibenanzahl richtet sich nach dem Schock-Wert.
Was in den ersten sechs Wochen entstand — von den ersten Lötversuchen bis zur laufenden Netzwerkversion.
Erste Versuche auf dem Heltec LoRa V3 (ESP32) und dem ESP8266:
MAX7219 LED-Matrizen per SPI-Daisy-Chain, OLED-Statusanzeige, fünf Taster.
Der Weg war holprig — SPI-Konflikte mit der LoRa-Hardware, Bit-Bang-Timing-Probleme,
mehrere Neustarts. Parallel entstanden Würfeldarstellungen in zwei Modi (groß / klein),
ein LED-Matrix-Pixeltest und erste Experimente mit NeoPixel als Displayalternative.
Ergebnis: Arduino-Firmware SW_VERSION 65, lauffähig auf ESP8266.
Ein vollständiges Schocken-Spiel als einzelne HTML-Datei — ohne Server, ohne Installation.
Solo gegen KI oder Hot-Seat mit mehreren Spielern am selben Gerät.
In dieser Phase wurde die gesamte Spiellogik (Wertung, Stapelverwaltung, Schock-aus,
Rundenverlierer, Finale) entwickelt und auf Herz und Nieren geprüft.
Mehrere Bugfixes: schockAusGesamt-Tracking, Stapel-Überläufe,
Deckel-Übergabe erst nach Bestätigung.
Aus der bewährten Spiellogik wurde ein echter Mehrspielserver:
Node.js + Socket.io, serverseitiges Würfeln, bis zu 10 Spieler pro Raum,
KI-Gegner, Reconnect-Unterstützung, Zuschauermodus.
Der Weg von Single-Room zu Multi-Room war ein eigenständiges Teilprojekt
(rooms[id]-Architektur, Query-String-Routing).
Version v3.0.8 → v3.1.0.
Aufbau dieser Projektseite (SSI-Struktur, Browser-LED-Simulatoren für beide Display-Entwürfe, Regelkorrektur). Das Netzwerkspiel wurde von „SCHOCKEN“ in NETSCHOCK umbenannt — eigener Namensraum, klare Trennung vom Hardware-Projekt. Aktueller Stand: NETSCHOCK Server v3.1.0.
Die Node.js-Basis wurde durch einen nativen C++-Kern ersetzt: uWebSockets
als Event-Loop, ArduinoJson für die JSON-Serialisierung. Beide Plattformen
(ESP32 + Linux) teilen denselben src/-Code über eine HAL-Schicht
(hal.h). Neu: serverseitige Bot-KI (botEntscheide()),
TCP-Server für Hardware-Clients, Multi-Room-Betrieb auf Linux, ESP32-Tunnel als
Remote-Raum, Batterie-ADC und OLED-Statusanzeige. Debug-Modus mit fixen Würfeln
per WebSocket-Nachricht. Aktuelle Version: NETSCHOCK v3.22.