Netzwerk-Labor · Doku Vorführ-Fassung – Kiosk-Demo (60 Minuten) Zum Spiel Online

Vorführ-Fassung – Kiosk-Demo (60 Minuten)

Auftrag des Nutzers (31.10.2026): „ließe sich netlab so einrichten dass es ne 1 stündige demo version ist?" — gewählt wurde im Gespräch die Vorführ-/Kiosk-Variante: nach 60 Minuten automatisch zurück auf einen frischen Spielstand, gedacht für Beamer, Messe oder einen Rechner im Computerraum, an dem mehrere Besucher nacheinander spielen.

Was es geworden ist. Eine eigene Auslieferungsdatei Programm/Netzwerk-Labor-Demo.html, gebaut aus der fertigen Einzeldatei. Das normale Spiel bleibt byte-gleich; es wird nur gelesen. Der Spielstand der normalen Fassung auf demselben Rechner bleibt unberührt, weil die Vorführ-Fassung einen eigenen Speicherplatz benutzt. Kurz: python tools/kiosk.py → fertig.

1 · Warum nicht im Spielcode

Die Vorführ-Fassung ist eine Betriebsart der Auslieferung, keine Spielfunktion. Drei Gründe für den Weg über das Werkzeug statt über src/:

  1. Kein Risiko für das Spiel. Kein Modul, keine Datenform, kein Testhaken ändert sich; die 878 Tests und die Simulation bleiben unberührt. Der normale Bau ist und bleibt die Grundlage — die Demo entsteht nur, wenn jemand sie ausdrücklich baut.
  2. Die Rücksetzung braucht keine Spiel-API. Sie löscht den eigenen Speicher vor dem Start der Spielskripte und lädt die Seite neu. Das Spiel merkt davon nichts und kann sich auch nicht dagegen wehren (kein Sonderfall in Spiel, store oder UI).
  3. Ein Spielstand pro Rechner bleibt heil. Der eigene Speicherplatz ist die Voraussetzung dafür, dass eine Vorführdatei auf demselben Rechner nicht den privaten Spielstand der normalen Fassung löscht.

2 · Aufbau (zwei Einschübe, drei Ersetzungen)

WasWo im BauDateiZweck
Vorlaufim <head>, vor allen Spielskriptentools/kiosk/vorlauf.jsentscheidet vor dem Laden des Spielstands: neuer Besuch = frisch; Neuladen (F5) = behalten; Stunde abgelaufen = frisch. Setzt den Startzeitpunkt.
Anzeigenach dem Spiel, vor dem Lizenzblocktools/kiosk/anzeige.jsChip „Vorführung · 47 Min" unten, nach Ablauf die Karte „Vorführung beendet" und dann Neuladen.
Speicherplatz3 Stellen in der Einzeldateitools/kiosk.py, ERSETZUNGENaus "netzwerk-labor" wird "netzwerk-labor-vorfuehrung" — eigener Speicher.

Die drei Stellen des Speicherplatzes sind nicht optional:

  1. const SCHLUESSEL = "netzwerk-labor"; (src/plattform/plattform-browser.js) — Lesen/Schreiben.
  2. window.localStorage.getItem("netzwerk-labor") (src/kern/basis.js, „Frühstart") — füllt den Speicher bevor der Lernmotor lädt.
  3. e.key !== "netzwerk-labor" (src/ui/start.js) — Fenster-Wächter (zwei Fenster auf einem Stand).

Dieser Befund hat die Bauform gerettet: Der erste Messlauf war 21/22 — „Neuladen (F5) hält den Fortschritt" war rot. Ursache: Die Ersetzung kannte nur Stelle 1; der Frühstart in kern/basis.js las weiter den leeren normalen Speicher, hielt den Stand für „keiner da" und schrieb beim ersten Speichern einen frischen Stand über den Vorführ-Speicher. Ergebnis: Rücksetzung bei jedem Neuladen statt nach 60 Minuten. Erst nach der zweiten Ersetzung war der Lauf 22/22 grün. Die Format-Kennung "format": "netzwerk-labor" für Export/Import bleibt absichtlich unangetastet — die gehört zum Dateiformat, nicht zum Speicher.

3 · Gemessen (Edge headless über file://, 31.10.2026, Fassung 2.5.1)

python tools/kiosk.py --messen baut zwei Probefassungen (9 s und 60 Minuten), startet Edge headless über file:// (der Weg eines Doppelklicks) und misst:

FallMesswert
StartChip sichtbar, „Vorführung · 0:09", unterer Rand 635 px; frischer Stand 0 € / Stufe 1
Restzeit läuft7.922 → 6.620 ms
Fortschritt gesetzt4.242 € im Vorführ-Speicher, localStorage["netzwerk-labor"] = null
60-Minuten-Fassung: 999 € gesetztsteht im Vorführ-Speicher (26.895 B)
Neuladen (F5)999 € und Stufe 3 bleiben; Sitzung "1", Startzeit unverändert
Neues Fenster (neuer Browserstart)frischer Stand 0 € / Stufe 1 — der vorherige Fortschritt ist weg
Ablauf (9-s-Probe)Karte „Vorführung beendet", danach Neuladen: 0 € / 0 Ruf / Stufe 1 / 0 erledigt; neue Stunde mit Restzeit 5.629 ms
normaler Speicherin allen Läufen localStorage["netzwerk-labor"] = null (unberührt)
JS-/Konsolenfehler0 in beiden Läufen
GrundlageNetzwerk-Labor.html und docs/index.html vor/nach dem Bau byte-gleich

Bilder: Nachweise/vorfuehrung/kiosk-chip.png und kiosk-ruecksetzung.png (nicht versioniert).

Der ausgelieferte Bau: Programm/Netzwerk-Labor-Demo.html — 3.591.584 B, SHA256 17690c49779f20f3…c3461a81, 0 Außenverweise, Lizenzblock enthalten, Titel „Netzwerk-Labor – Vorführung". python tools/kiosk.py --pruefen und python tools/einfach.py --pruefen sind grün; tools/starttest.py meldet 0 JS-Fehler, drei geladene Schriften, 3.393 CSS-Regeln (dieselben 47 Knöpfe wie die normale Fassung).

4 · Verhalten im Betrieb

5 · Grenzen — bewusst und benannt

6 · Dateien und Befehle

tools/kiosk.py                 Bau, Prüfung, Messung; Kopfkommentar = Bedienungsanleitung
tools/kiosk/vorlauf.js         Einschub 1: Speicher, Sitzung, Startzeit
tools/kiosk/anzeige.js         Einschub 2: Chip, Rücksetzung, Messhaken (window.__vorfuehrung)
Programm/Netzwerk-Labor-Demo.html   Erzeugnis (nicht versioniert, wie die .exe)
Programm/LIESMICH-Demo.txt     kurze Anleitung neben der Datei
python tools/kiosk.py                        # bauen (60 Minuten) -> Programm/Netzwerk-Labor-Demo.html
python tools/kiosk.py --minuten 45           # andere Dauer
python tools/kiosk.py --pruefen DATEI        # Struktur prüfen
python tools/kiosk.py --messen               # Verhalten in Edge headless messen (~1 Minute)

Bau und Bedienung stehen auch in Bauen.md (Abschnitt „Die Vorführ-Fassung (Kiosk, 60 Minuten)").

7 · Offen (nicht Teil dieses Auftrags)