🟢 v3.22 NETSCHOCK läuft — jetzt ausprobieren: netschock.de Browser genügt · kein Download · Feedback an ralf@rbag.eu 📖 Spielanleitung

Elektronisches Würfelspiel — ein „Schocken-Gerät“

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 ;-)

Warum zwei Entwicklungszweige?

Die Umsetzung gliedert sich in zwei parallele Zweige, die unterschiedliche Ziele verfolgen:

Hintergrund der Aufspaltung

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.

ESP-Hardware — erste Gehversuche

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.

1. Komplettes Spiel — LED-Matrix + Browser + Bots
2. NETSCHOCK-Box — Würfelfunktionalität
v

Was sich daraus ergibt

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.

Barrierefreies Würfeln

Die Box ersetzt den Würfelbecher für Personen mit motorischen Einschränkungen — einfach zu bedienen, ohne Heben oder Schütteln.

🏠

Lokaler Standalone-Client

Die Box funktioniert autark: Würfeln ohne Netzwerk, ohne Smartphone, ohne weitere Infrastruktur — einfach einschalten und spielen.

🌐

Netzwerk-Client

Die Box nimmt als vollwertiger Client an einem Netzwerkspiel teil — mit Mitspielern irgendwo im Internet, über den NETSCHOCK-Server.

🤖

KI-Gegner

Auch ganz ohne menschlichen Mitspieler spielbar: zunächst mit Internetverbindung gegen einen oder mehrere KI-Gegner — bald auch rein lokal, ohne Router.

Zweig A — µC-Hardware-Lösung

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.

Hardware-Spezifikationen

µControllerESP32 NodeMCU
Display (A)4× MAX7219 8×8
Display (B)2× MAX7219 8×8
LEDs gesamt128 / 256
StromversorgungUSB Powerbank
KommunikationESP-NOW
BusSPI Daisy-Chain
Kosten/Gerätca. 20 €

Bedienelemente

Ein Gerät, ein Kippschalter, fünf Taster:

  • SW1Master / Spieler — Kippschalter beim Einschalten
  • BTN1Würfeln
  • BTN2Würfel 1 sperren / freigeben
  • BTN3Würfel 2 sperren / freigeben
  • BTN4Würfel 3 sperren / freigeben
  • BTN5Aufdecken

Display-Entwurf A — 4× 8×8 (Luxusvariante)

Display-Entwurf B — 2× 8×8 (kompakte Variante)

Warum Minimal-Hardware als ersten Schritt?
Bevor Platinen gefräst, Gehäuse gedruckt und Displays verbaut werden, ist ein Praxistest sinnvoll: Sind die Würfelaugen auf 3×3 Pixeln sofort erkennbar? Reicht die Stapel-Anzeige? Sind die Taster ergonomisch sinnvoll platziert? Funktioniert ESP-NOW zuverlässig in Umgebungen mit vielen WLAN-Netzen?
Dieser Aufbau ermöglicht genau diesen Test — mit handelsüblichen Breakout-Modulen, ohne Eigenfertigung. Bewährt er sich, kann eine aufwändigere Variante folgen: größere Displays, eigene Platine, 3D-gedrucktes Gehäuse.

Browser-Simulation der Hardware

Die folgenden Simulationen zeigen das LED-Display-Verhalten beider Entwürfe im Browser — ohne echte Hardware. Würfeln, sperren, aufdecken, Wertung berechnen.

Entwurf A — 4× 8×8 Matrix Luxusvariante

Würfelauge
Scheibe
Verbl. Würfe
Rolle
Gesperrt
Würfeln
Sperren
Stapel 13 /13
Rolle

Entwurf B — 2× 8×8 Matrix Kompaktvariante

Würfelauge
Scheibe
Verbl. Würfe
Rolle
Würfeln
Sperren
Stapel 13
Rolle

Entwurf C — NeoPixel 16×16 Kandidat

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.

16×16 NeoPixel · 256 RGB-LEDs
Würfelauge
Scheibe
Verbl. Würfe
Rolle
Gesperrt
Würfeln
Sperren
Stapel 13 /13
Rolle

Zweig B — NETSCHOCK Server v3.22 — IN ENTWICKLUNG

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.

🚧 In Entwicklung NETSCHOCK v3.22
Der Server läuft und ist spielbar — wird aber noch getestet und laufend angepasst. Sourcen folgen nach Stabilisierung.
C++ / uWebSockets statt Node.js
📱ESP32 mit AP + STA-Modus
🤖Neue serverseitige Bot-KI
🏠Multi-Room (Linux)
🔋Batterie-ADC & OLED
🔍Debug-Modus mit fixen Würfeln

Plattformen

🧲

ESP32 (Arduino)

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.

🖥

Linux (nativ)

Permanenter Server, uWebSockets als Event-Loop, statische Dateien werden direkt ausgeliefert. Beide Plattformen teilen denselben src/-Code.

👥

Multi-Room

Mehrere parallele Räume, jeder mit eigenem Spielzustand. ESP32 kann sich als Remote-Raum beim Linux-Server anmelden (Tunnel via MiniWS.h).

🤖

Bot-KI

Regelbasiert, serverseitig: hält Einsen, dreht Sechser um, wägt Stehen vs. Weiterwürfeln anhand Kombination und Gegner-Würfe ab.

Spielmodi

🔀

Mehrspielermodus

2–8 Spieler im selben Raum. Jeder auf seinem Gerät. Menschliche Spieler und Bots flexibel kombinierbar.

👁

Zuschauermodus

URL ohne Namensparameter öffnen — Spielstand beobachten ohne aktive Teilnahme.

Architektur v3.22

KernC++ / Arduino-Framework
ProtokollWebSocket (JSON)
Version3.22
Spieler/Raum2 – 8
PlattformenESP32 · Linux
RäumeMulti-Room (Linux)

Server starten (Linux)

# Bauen make -j4 # Starten (Standard-Port 8082) ./netschock 8082 # Debug-Modus (fixe Würfelwerte per WS) ./netschock 8082 --debug NETSCHOCK Server v3.22 Port: 8082 — http://localhost:8082

Tastatur-Shortcuts

Leertastewürfeln
Aaufdecken
Enterfertig / blind stehen
1 / 2 / 3Würfel festhalten
USechser umdrehen
Quellcode-Freigabe: Der Server läuft und wird aktiv weiterentwickelt — die Sourcen sind noch nicht freigegeben. Die Web-Version des Clients ist auf Codeberg einsehbar. Hardware- und Server-Sourcen folgen nach Abschluss der Testphase.

Aus der Werkstatt — Entwicklungsfotos

Von der ersten Verkabelung auf dem Steckbrett bis zu den fertigen Anzeigen. Bilder anklicken zum Vergrößern.

Heltec V3 mit erster 8x8 Matrix
Heltec LoRa V3 + erste 8×8 Matrix Tag 1 — Steckbrett, Kabel, erster Test
MAX7219 Verkabelung
MAX7219 Modul — Verkabelung Heltec V3 kopfüber im Steckbrett, Daisy-Chain vorbereitet
Erste leuchtende Würfel
Es leuchtet — erste Würfelergebnisse Würfel 6-5-2 · OLED: Sp.1 [1/3] · Normal
Kleine Würfel 1x1 Pixel
Kleiner Modus — 1×1 Pixel Augen Alle drei Würfel matrixübergreifend auf zwei 8×8 Modulen
Kleiner Modus im Spiel
Kleiner Modus im Betrieb Würfel 6, 3, 2 · OLED: Sp.1 [2/3] · Scheiben: 0 · Normal
Großer Modus, dritter Wurf
Großer Modus — dritter Wurf Würfel 6, 5, 5 · OLED: [3/3] · Aufdecken
Alle vier 8x8 Matrizen aktiv
Alle vier Matrizen — großer Modus Würfel 6, 2, 3 · OLED: Sp.1 [2/3] · Normal · Würfeln
Testmodus große Würfel
Matrix-Testmodus GROSS Würfel 3, 2, 1 · hohe Helligkeit · 2px Abstand
OLED Hauptmenü
OLED-Display — Hauptmenü Anzeige beim Einschalten · Spieler: 0 · Bereit

Regelwerk

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.

Der Wurf

Jeder Spieler hat bis zu 3 Würfe. Nach jedem Wurf drei Möglichkeiten:

Die Sechser-Regel

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.

Wertungsreihenfolge

RangBezeichnungWürfelKonsequenz
1.Schock-aus1 · 1 · 1Spieler scheidet aus dieser Runde aus
2.Schock1 · 1 · XVerlierer bekommt X Scheiben — höherer X gewinnt
3.GeneralX · X · XVerlierer bekommt X Scheiben — höherer X gewinnt
4.StraßeX · X+1 · X+22 Scheiben — höhere Straße gewinnt
5.Normalhoch · mittel · niedrig1 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.

Spielverlauf

Offenes Regelwerk: Die Spielregeln sind in der Software als modifizierbare Ablauflogik implementiert. Regionale Varianten und Hausregeln lassen sich anpassen, ohne den Server-Code ändern zu müssen.

📖 Vollständige Spielanleitung →

Entwicklungshistorie

Was in den ersten sechs Wochen entstand — von den ersten Lötversuchen bis zur laufenden Netzwerkversion.

13.–16. April Phase 1 µC-Hardware-Standalone

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.

~21. April Phase 2 Browser-Standalone-Spiel

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.

20.–23. April Phase 3 Netzwerkspiel — Node.js / Socket.io

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.8v3.1.0.

25.–26. April Phase 4 Webpräsenz & Umbenennung

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.

Mai 2026 Phase 5 C++-Neukern — NETSCHOCK v3.22

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.

Roadmap