Netzwerk-Labor · Doku 🖧 Konzept – Netzwerk-Labor (Arbeitstitel) Zum Spiel Online

🖧 Konzept – Netzwerk-Labor (Arbeitstitel)

âŹ†ïž Netzwerk-Labor · Auftrag fĂŒr Opus: Opus-Auftrag – Netzwerk-Labor

1 · Worum es geht

Du fĂŒhrst ein Ein-Mann-Systemhaus. Kunden schicken Tickets: „Das Kassen-WLAN kommt nicht auf den Server“, „Baut uns ein Netz fĂŒr zwei Abteilungen“. Du löst sie in einem Netzwerk-Simulator, in dem GerĂ€te wirklich Pakete verschicken, verwerfen und beantworten – mit Diagramm, Konfig-Panels und einer Cisco-Ă€hnlichen Konsole. Wer Tickets löst, verdient Geld und Ruf, schaltet grĂ¶ĂŸere Kunden frei und lĂ€sst RoutinefĂ€lle spĂ€ter von Playbooks (Automatisierung) erledigen. Eine schmale, ruhige Leiste am Bildschirmrand hĂ€lt das Ganze am Laufen, ohne im Weg zu sein.

Zielgruppe: du und deine Klasse (FISI-Umschulung, AP1/AP2). EigenstĂ€ndiges Desktop-Programm fĂŒr Windows (.exe) und Linux (AppImage/Binary), das sich still verhĂ€lt (§ 9.7). Als Zugabe gibt es eine Browser-Fassung als Einzeldatei ohne Fensterfunktionen, praktisch zum Teilen, wie bei der FISI-Spielhalle.

2 · FĂŒnf SĂ€ulen (Leitplanken fĂŒr jede Entscheidung)

  1. Können ist die WĂ€hrung. Fortschritt hĂ€ngt an der Beherrschung im Lernmotor, nicht an Klicks. Automatisieren darf nur, was du auf Stufe „sicher“ beherrschst.
  2. Die Simulation ist echt. Jede Antwort des Spiels lĂ€sst sich aus Paketen herleiten (ARP, MAC-Tabelle, TTL, ACL-Treffer). Nie „weil das Skript es so will“.
  3. Nie stecken bleiben. Es gibt immer einen nĂ€chsten Schritt: Hinweisleiter bis zum vorgefĂŒhrten Lösungsweg, danach ein Wiederholungsticket.
  4. Klein anfangen, jederzeit aufhören. 60 Sekunden bis zum ersten Erfolg. Ein Ticket darf 1 Minute oder 25 Minuten dauern, gespeichert wird laufend.
  5. Bedienung darf nie das Hindernis sein. RĂŒckgĂ€ngig immer, keine Pflicht-Dialoge, sofortige RĂŒckmeldung (§ 7).

3 · Der Loop

3.1 Drei Zeitskalen

SkalaDauerWas passiertNeben der Wirkung
Mikro30–120 sMini-Ticket in der Leiste (Config-Zeile finden, Log lesen, Ablauf ordnen, Ausgang vorhersagen)Lernmotor-Einheit, kleiner Euro-Betrag
Meso10–25 minEin Arbeitstag: 3–5 Tickets, davon ein Projekt oder eine Störung im Labor. Abschluss: „Heute dran“ als Bereitschaftsdienst (fĂ€llige Wiederholungen als Wartungs-Tickets getarnt)Ruf, Euro, Sterne der Kunden
MakroWochenKunden wachsen, neue Stufen, PrĂŒfungstage (AP1/AP2-Simulation als „Zertifizierung“), Playbook-SlotsFreischaltungen

3.2 Ticketarten

ArtStartZielDauer
StörungNetz steht, etwas ist kaputt (injizierter Fehler, § 8)Symptom beheben, KollateralschĂ€den vermeiden1–8 min
ProjektKundenbrief mit Anforderungen, leere FlĂ€cheNetz planen und bauen; Abnahmetests laufen10–25 min
WartungVertragskunde meldet Ereignis (Idle-Schicht)wie Störung, mit Frist1–5 min
MiniSchnappschuss (Diagramm, Log oder Config-Ausschnitt)eine Frage in < 2 min, in der Leiste spielbar (nur Maus)0,5–2 min
PrĂŒfungstagGemischter Satz, Zeitlimit, keine HilfenNote nach IHK-SchlĂŒssel (vorhanden in der Spielhalle)25 min

Vorhersage vor dem Test: Bei Einstieg und AP1 fragt das Spiel optional „Wird der Ping klappen?“, bevor die Simulation lĂ€uft. Erst raten, dann sehen: das ist einer der stĂ€rksten Lerneffekte und kostet kaum Aufwand.

3.3 Karriere-Stufen (Freischaltung ĂŒber Ruf und Können)

StufeBeispielkundeNeue GerÀteNeue Fertigkeiten (lab.*)
1 AzubiFriseursalon: 3 PCs, 1 RouterPC, Router, Switch (einfach)IP/Maske/Gateway, Ping lesen, „gleiches Netz?“, ARP sehen
2 GeselleSchreibbĂŒro: 10 PCs, Drucker, ServerServer, Switch (verwaltbar)kleines Subnetting, DHCP, DNS, Ports, TCP-Handshake
3Arztpraxis: Verwaltung / Behandlung / GĂ€ste–VLAN, Trunk, Router-on-a-Stick, ACL
4Autohaus: 2 StandorteInternet-Wolkestatische und Default-Route, RĂŒckroute, NAT/PAT, Port-Weiterleitung
5Mittelstand mit DMZFirewallZonen, DMZ, Regelwerk, Port-Security
6 (spĂ€ter)Storage und CloudNAS/SANpassend zu Karriere – Storage & Cloud

Bewusst nur 7 GerÀtetypen: PC (auch als Laptop/Drucker-Skin), Server, Switch, Router, Firewall, Internet, spÀter NAS. Die Tiefe steckt im Verhalten, nicht in der Auswahl.

3.4 Die Idle-Schicht (Leiste und WartungsvertrÀge)

WartungsvertrĂ€ge. Jeder Kunde mit Vertrag bringt Euro pro Stunde, solange seine Ampel grĂŒn ist. In unregelmĂ€ĂŸigen AbstĂ€nden (Startwert: etwa eine Störung je 20–40 min und Kunde, Warteschlange höchstens 5) kommt ein Ereignis ins Postfach, gezogen aus dem Ticketpool passend zu Kunde und deinem Können. Frist 60 min echte Zeit. Überschreitung: Ampel gelb, dann rot, in Rot fließt kein Geld, bis behoben. Kein Fortschritt geht verloren, niemand kĂŒndigt.

Playbooks (Automatisierung). Jede Fertigkeit ab Stufe 3 („sicher“) lĂ€sst sich als Playbook kaufen (Euro, begrenzte Slots). Es löst Routinetickets dieser Art automatisch fĂŒr 60 % Ertrag, ohne Lernwirkung. Ist die Fertigkeit im Lernmotor fĂ€llig (L.istFaellig), ist das Playbook „veraltet“ und pausiert, bis du die Wiederholung gemacht hast. So bindet das Spiel Idle-Einkommen an Spaced Repetition, statt es zu umgehen. Passives Einkommen soll höchstens etwa ein Drittel dessen erreichen, was aktives Spielen bringt (Balancing-Ziel, Startwerte im Spiel justierbar).

Offline-Bericht. Beim Öffnen: „WĂ€hrend du weg warst: 3 Wartungen automatisch, 2 Tickets warten, Kunde Praxis MĂŒller ist rot.“ Zeit zĂ€hlt höchstens 8 h.

Leiste. Die Leiste ist die Kompaktansicht des Programms: rahmenlos, klein (etwa 300 × 56 px, aufgeklappt 320 × 300 px – 220 px reichten im Test fĂŒr ein Mini-Ticket nicht), am Bildschirmrand, halbdurchsichtig. Sie zeigt Kunden-Ampeln, Euro pro Stunde, Ruf und die Zahl offener Tickets, aufgeklappt ein Mini-Ticket. Neue Tickets erscheinen nur als ZĂ€hler und Punkt (Leiste und Tray-Symbol), ohne Ton, ohne Pop-up, ohne Fokus. AusfĂŒhrlich in § 9.7.

Unterrichtsmodus. Ein Schalter „Heute im Unterricht: 
“ (Thema aus L.THEMEN/Fertigkeiten, z. B. VLAN oder TCP). Mini-Tickets und Ereignisse ziehen dann bevorzugt dazu passende Fertigkeiten, ruhige Darstellung, keine Animation und kein Ton.

3.5 Abnahme und Belohnung

4 · Hilfe, wenn man nicht weiterkommt

StufeWasKosten
0Symptom und Ziel stehen immer sichtbar (Auftragsliste)frei
1Fehlersuche-Leiter: Checkliste von unten nach oben (Link → VLAN → IP/Maske → Gateway → Route → ACL/Dienst). Du hakst ab, was du geprĂŒft hastfrei
2Werkzeuge wie im Betrieb: Ping, Traceroute, show-Befehle, Simulation mit Ereignisliste. Sie zeigen, wo es hÀngt, nur so genau wie die echten Werkzeugefrei
3Frage des Seniors: „Was passiert, wenn PC-B den Server anpingt: welche Adresse fragt er per ARP?“frei, Sterne −0
4Bereich markieren: GerĂ€t oder Schnittstelle leuchtet aufœ Stern
5Konkreter Hinweis: welches Feld oder welcher Befehlœ Stern
6Lösung vorfĂŒhren: Schritte laufen mit Kommentar im GUI/CLI ab (kein bloßer Text). Danach legt das Spiel ein Wiederholungsticket in den Lernmotor (hilfe:true), das spĂ€ter selbst zu lösen ist1 Stern, kein Scheitern

ZusĂ€tzlich: Nachschlagen verlinkt kontextabhĂ€ngig in die Vault-Notiz (nicht bei AP2). Snapshots und RĂŒckgĂ€ngig machen jede Änderung folgenlos. Nach 4 min ohne Fortschritt bietet der Senior einmal je Ticket Hilfe an, ablehnbar, kein Nörgeln. Die Diagnosetiefe hĂ€ngt vom Niveau ab: bei Einstieg erklĂ€rt jede verworfene Frame-Zeile den Grund in Klartext, bei AP2 steht dort nur, was das GerĂ€t selbst melden wĂŒrde.

5 · Simulation (das HerzstĂŒck)

5.1 Prinzip

5.2 GerÀte und Verhalten

GerÀtVerhalten (v1)
PC / ServerSchnittstelle mit IP, Maske, Gateway, DNS, DHCP-Client; ARP-Cache mit Ablauf; ICMP Echo; kleines Terminal (ipconfig, ping, arp -a, nslookup, tracert); Dienste am Server: DHCP, DNS, HTTP, Dateidienst
SwitchMAC-Lernen und Altern (Cisco-Standard 300 s), Fluten unbekannter Ziele und Broadcasts, VLAN-Datenbank, Access- und Trunk-Ports (802.1Q, Native VLAN), Ports abschaltbar, Verwaltungsadresse
RouterSchnittstellen und Subinterfaces (encapsulation dot1Q), Routingtabelle (verbunden, statisch, Default), ARP, ICMP-Fehler (Netz unerreichbar, TTL abgelaufen), ACL (standard/erweitert, in/out, erste Übereinstimmung gewinnt), NAT (statisch, PAT/overload), DHCP-Server und ip helper-address
FirewallVereinfachte Zonen (innen, außen, DMZ), Regeltabelle, zustandsbehaftet (RĂŒckverkehr erlaubt), NAT; im Editor herstellerneutral, Konsole nur in GrundzĂŒgen
InternetKulisse: ISP-Router mit Default-Route und einigen öffentlichen Servern

5.3 Protokollumfang

5.4 GrĂŒnde-Katalog

Jedes Verwerfen und jeder Fehlschlag trÀgt einen Grundcode, dazu einen Lehrtext (kurz bei Einstieg, knapp bei AP2), eine Fertigkeit lab.* und eine Quelle (Vault-Notiz oder RFC). Ausschnitt:

CodeWoKernaussageFertigkeit
LINK_DOWNPortKein Link: Kabel fehlt, Port abgeschaltet oder Gegenstelle auslab.link
ARP_NO_REPLYHostIm eigenen Netz antwortet niemand: falsche IP, Maske oder VLAN?lab.arp
DROP_VLANSwitchFrame in VLAN 20, Zielport in VLAN 10; VLANs gehen nie ineinander ĂŒberlab.vlan
TRUNK_NOT_ALLOWEDTrunkVLAN 20 ist auf dem Trunk nicht erlaubtlab.trunk
NO_GATEWAYHostZiel in anderem Netz, aber kein Standardgatewaylab.gateway
GW_WRONG_SUBNETHostGateway liegt nicht im eigenen Netzlab.gateway
NO_ROUTERouterKeine Route zum Zielnetz (ICMP Destination unreachable)lab.route
NO_RETURN_ROUTERouterHinweg ok, Antwort findet zurĂŒck keinen Weg (Symptom: Timeout)lab.route
TTL_EXPIREDRouterRouting-Schleife, TTL erreicht 0lab.ttl
ACL_DENYRouter/FWRegel Nr. X verwirft; Reihenfolge zÀhltlab.acl
NAT_MISSINGRouterPrivate Adresse im Internet nicht routbar; NAT fehlt oder inside/outside vertauschtlab.nat
DUP_IPHostAdresskonfliktlab.ip
DHCP_NO_OFFERHostKein DHCP-Server erreichbar (VLAN oder Relay); Windows nimmt eine 169.254.x.x-Adresse (APIPA)lab.dhcp
PORT_CLOSEDServerRST: kein Dienst lauscht auf dem Portlab.ports
STORMNetzEreignis-Budget gerissen: Schleife ohne STPlab.stp

Der Unterschied zwischen Timeout (verworfen, still) und Destination unreachable (jemand meldet es) ist selbst PrĂŒfungsstoff und wird sichtbar gemacht.

5.5 AuthentizitÀt und Belege

6 · Konsole (IOS-Àhnlich)

Cisco-AusfĂŒhrlichkeit ist ausdrĂŒcklich gewĂŒnscht, also von Anfang an mit dabei (ab Phase 2).

7 · Bedienung (UX-Regeln fĂŒr Opus)

Grundsatz: Wer 10 Minuten damit spielt, hat nie gegen die OberflÀche gekÀmpft.

FlÀche

Inspektor (rechts, beim Antippen eines GerĂ€ts) mit Reitern Übersicht · Schnittstellen · VLAN/Routing (je nach GerĂ€t) · Dienste · Konsole

Simulation (unten)

Komfort

Optik: dunkler „Leitstand“-Look, gleiche Schriften wie die Spielhalle (Atkinson Hyperlegible, Bricolage Grotesque, JetBrains Mono, lokal eingebettet), eigene flache Symbole.

8 · Daten

8.1 Ticket-Format (Skizze)

{ id:"t-salon-01", art:"stoerung", stufe:"E",            // E | AP1 | AP2
  kunde:"salon", titel:"Drucker nicht erreichbar",
  briefing:"Hallo, seit heute Morgen 
",
  skills:["lab.gateway","lab.arp"],
  netz:{ geraete:[
], links:[
] },                      // Topologie und Config (running und startup)
  fehler:[{ injektor:"gw-falsch", auf:"pc-kasse", param:{
} }],
  ziele:[{ typ:"erreichbar", von:"pc-kasse", nach:"drucker" },
         { typ:"blockiert",  von:"gast", nach:"server", proto:"tcp", port:445 }],
  hilfen:{ frage:[
], bereich:[
], konkret:[
] },
  loesung:[ { gerÀt:"r1", befehl:"ip route 10.0.2.0 255.255.255.0 10.0.1.2" } ],
  erklaerung:"
", quelle:"[[04-AP1-Netzwerk]]",
  lohn:{ euro:40, ruf:1 } }

8.2 Fehlerinjektoren (Grundlage fĂŒr unbegrenzten Nachschub)

Handgeschriebene Kernaufgaben (etwa 30 fĂŒr den Start) plus prozedurale Varianten: Adressen, VLAN-IDs und Namen werden gewĂŒrfelt, ein Injektor (kleine Funktion, die einen bekannten Fehler in ein gesundes Netz setzt) bricht etwas. Jeder Injektor trĂ€gt eine Fertigkeit und Lehrtext-Codes.

Erste Injektoren: falsche Maske, falsches Gateway, VLAN-Mismatch, Trunk ohne erlaubtes VLAN, Native-VLAN-Mismatch, Port abgeschaltet, Route fehlt, RĂŒckroute fehlt, ACL-Reihenfolge, NAT inside/outside vertauscht, doppelte IP, falscher DNS, DHCP-Pool zu klein, Ungespeichert nach Neustart, Kabel im falschen Port, Schleife ohne STP.

Pflicht: FĂŒr jedes generierte Ticket prĂŒft ein automatischer Test, dass (a) die Lösung alle Ziele erfĂŒllt und (b) der Fehler die erwarteten Ziele mit dem erwarteten Grundcode bricht.

8.3 Lernmotor-Anbindung

Wiederverwenden, nicht neu bauen: src/lernmotor.js (L.skill, L.ueben(id, ok, {hilfe, sicher}), L.fehler, L.istFaellig, L.faelligeIds, L.themaStand) und das store-Muster aus src/kern.js. bauen.py des Labors zieht den Lernmotor zur Bauzeit aus ../FISI-Spielhalle/src/ (ein Lernmotor, keine Kopie). Fertigkeiten heißen lab.*, Thema "Netzwerk". Der Lernmotor bleibt unverĂ€ndert; store bekommt im Labor einen Speicher-Adapter (§ 9.3).

Lernstand-BrĂŒcke. Programm und Browser-Spielhalle haben getrennte Speicher. ZusammenfĂŒhren geht per Export/Import-Datei. Die Spielhalle brĂ€uchte dazu einen Import-Knopf, den sie bisher bewusst nicht hat (nur bauen, wenn du es willst). UngeprĂŒfte Alternative fĂŒr spĂ€ter: die Spielhalle als Fenster im selben Programm öffnen (gleicher Ursprung, gleicher Speicher).

Spielstand (Euro, Ruf, Kunden, Playbooks, offene Tickets, Config je Ticket) in eigenem SchlĂŒssel labor, versioniert (v:1) mit Migration.

9 · Technik und Desktop-HĂŒlle

9.1 Entscheidung: Tauri 2 mit schlichtem JavaScript

9.2 Aufbau

Netzwerk-Labor/
  bauen.py                   baut web/ (Ordner fĂŒr Tauri + Einzeldatei-Fassung), --paket = Browser-ZIP
  src/
    kern/     util.js (IP/MAC-Helfer), ereignis.js
    plattform/ plattform.js (Schnittstelle), plattform-tauri.js, plattform-browser.js
    modell/   geraete.js, konfig.js, topologie.js, befehle.js (RĂŒckgĂ€ngig)
    sim/      engine.js, frames.js, host.js, switch.js, router.js, firewall.js,
              dienste.js (DHCP/DNS/HTTP), tcp.js, gruende.js (Codes → Lehrtexte)
    cli/      parser.js (Modi, Kurzformen, ?), ios-switch.js, ios-router.js,
              ausgaben.js (show-Formate), host-terminal.js
    ui/       editor.js, inspektor.js, konsole.js, simpanel.js, pdu.js, ebenen.js, leiste.js
    spiel/    tickets.js, generator.js, injektoren.js, abnahme.js, hilfe.js,
              wirtschaft.js, wartung.js, mini.js, postfach.js
    daten/    tickets-*.js, kunden.js, lehrtexte.js
  shell/      Tauri-Projekt: src-tauri/ (Cargo.toml, tauri.conf.json, src/main.rs, icons/)
  tools/      messen.ps1 (Leerlauf messen), linux-bauen.sh
  tests/      tests.html + run.js (Node)
  web/        Build-Ausgabe (nicht versionieren)

Plattform-Schnittstelle (plattform.js): Der Kern kennt nur sie, nie Tauri direkt. Sie bietet laden(), speichern(), fenster.modus("tray"|"leiste"|"voll"), fenster.immerOben(bool), fenster.deckkraft(x), abzeichen(n, text), benachrichtigen(text), autostart(bool), datei.exportieren()/importieren() und kann(funktion). Die Browser-Fassung setzt localStorage, Tab-Titel-ZĂ€hler und Download-Link um; kann() blendet Nicht-UnterstĂŒtztes in den Einstellungen aus, mit einer Zeile BegrĂŒndung.

9.3 Speicherung

Der Lernmotor bleibt synchron (store.get/set). Deshalb: Cache mit Durchschreiben. Beim Start lĂ€dt die HĂŒlle asynchron alles in den Speicher, store.set schreibt in den Cache und stĂ¶ĂŸt ein verzögertes Schreiben an (etwa 2 s). Die Rust-Seite schreibt atomar (temporĂ€re Datei, dann umbenennen) in den Datenordner des Programms (%APPDATA% unter Windows, ~/.local/share unter Linux). Dazu 5 rotierende Sicherungen (tĂ€glich), Versionsfeld und Migration. Ist die Datei beschĂ€digt, lĂ€dt das Programm die letzte Sicherung und sagt es. Export/Import ĂŒber Dateidialog.

9.4 Was auf welchem System geht

Nach meinem Wissen, hier nicht getestet. Opus prĂŒft jede Zeile je System (unter WSLg testbar: mit GDK_BACKEND=x11 als X11 ĂŒber XWayland, ohne als Wayland; der Compositor ist aber weder GNOME noch KDE, fĂŒr echte Desktops siehe § 9.8) und trĂ€gt das Ergebnis in die Abnahme ein.

FunktionWindows 11Linux X11 / KDELinux Wayland (GNOME)
Immer im Vordergrund per Programmjajanein, Sache des Compositors
Fenster selbst positionieren und andockenjajanein
Durchsichtiges, rahmenloses Fensterjaja, mit Compositormeist ja
Tray-Symboljajanur mit AppIndicator-Erweiterung
Globaler Hotkeyjaja (X11)eingeschrÀnkt oder nein
Klick-durchlÀssig im Ruhezustandjameistunklar
Vollbild oder PrÀsentation erkennenja (Windows-Schnittstelle)X11 möglichnein

RĂŒckfall: Wo etwas fehlt, lĂ€uft die Leiste als normales kleines Fenster, das du selbst platzierst und ĂŒber das FenstermenĂŒ „immer oben“ setzt. Die Einstellungen zeigen die Funktion ausgegraut mit einem Satz BegrĂŒndung. Nichts bricht.

9.5 Bauen und Verteilen

9.6 GrundsÀtze

9.7 Verhalten am Desktop (minimal und unauffÀllig)

Ein Fenster, zwei Ansichten, dazu Tray. Die Leiste und die Vollansicht sind dasselbe Fenster, das GrĂ¶ĂŸe, Rahmen und „immer oben“ zur Laufzeit wechselt. So gibt es nur einen JavaScript-Kontext und einen Spielstand, keine Synchronisation. Zwischen Ansichten wird das DOM der Vollansicht abgebaut.

ZustandWas
TrayKein Fenster. Symbol mit Punkt bei neuen Tickets, Tooltip „2 Tickets · 38 €/h“. Linksklick blendet die Leiste ein/aus. Rechtsklick: Öffnen, Ruhe 1 h, Immer oben, Autostart, Beenden
LeisteRahmenlos, klein, am Rand, Standard 55 % deckend. Maus darĂŒber: voll deckend und Aufklappen zum Mini-Panel. Nach 5 s ohne Maus wieder zu
VollNormales Fenster mit Rahmen: Labor, Postfach, Kunden, Wiki, Lernkarte

Regeln

  1. Nie Fokus stehlen. Die Leiste erscheint ohne Aktivierung. Sie ist nur mit der Maus bedienbar, Mini-Tickets brauchen keine Tastatur (Auswahl, Anklicken, Sortieren). Ein neues Ticket Ă€ndert nur ZĂ€hler und Punkt: kein Aufspringen, kein Ton. Systembenachrichtigungen sind optional, standardmĂ€ĂŸig aus und begrenzt (höchstens eine je 30 min).
  2. Nie im Weg. Position wird pro Monitor gemerkt, bei geĂ€nderter Monitoranordnung zurĂŒck ins Sichtbare geholt. Schließen der Leiste geht ins Tray, nicht ins Beenden. „Ruhe 1 h“ blendet alles aus. Vollbild und PrĂ€sentation blenden die Leiste automatisch aus (Windows, unter Linux nur, wo möglich).
  3. Klick-durchlĂ€ssig im Ruhezustand (optional). Die Leiste lĂ€sst Mausklicks durch, außer ĂŒber ihren Bedienelementen. DafĂŒr fragt die Rust-Seite den Mauszeiger etwa 10-mal je Sekunde ab, aber nur solange die Leiste sichtbar ist.
  4. Sparsam. In Tray und Leiste wird nur bei ZustandsĂ€nderung gezeichnet. Die Uhr lĂ€uft ĂŒber Zeitstempel: ein 60-s-Timer, Sekundentakt nur bei MausberĂŒhrung. Die Simulation pausiert außerhalb des Labors. Ziel: Leerlauf ≈ 0 % CPU.
  5. Speicher, ehrlich. Auch eine leere WebView braucht im Leerlauf grob einige zehn bis ĂŒber hundert MB (unter Windows mehrere msedgewebview2-Prozesse). Wirklich winzig geht nur mit nativer OberflĂ€che. Der Kompromiss ist gewollt. Phase 0 misst und trĂ€gt die Zahlen ins Log, ohne Grenzwert zu erfinden.
  6. Eine Instanz. Ein zweiter Start holt die Leiste nach vorn, statt ein zweites Programm zu öffnen.
  7. Autostart nur auf ausdrĂŒckliche Wahl. Er startet dann still im Tray.
  8. Alles abschaltbar und gemerkt. Globaler Hotkey (Vorschlag Strg+Alt+L) blendet ein/aus. Kann die Plattform ihn nicht, bleibt der Tray-Eintrag.

Nicht in v1: Windows-AppBar (die Leiste reserviert Platz am Rand, andere Fenster schieben sich nicht darunter). Sie wĂ€re das „echt integrierte“ Verhalten, ist unter Linux aber sehr unterschiedlich und deshalb spĂ€tere Idee.

9.8 Werkzeuge installieren (du hast es erlaubt)

WerkzeugWoWofĂŒrNötig?
tauri-cli (cargo install tauri-cli --version "^2")Windows und WSLBauen und Entwicklungsmodusja
Visual Studio „Desktopentwicklung mit C++“WindowsLinker fĂŒr Rustnur falls es fehlt (beim ersten Build prĂŒfen)
Node.js LTS (winget install OpenJS.NodeJS.LTS)Windows (WSL bei Bedarf)headless Testsempfohlen
build-essential pkg-config libwebkit2gtk-4.1-dev libgtk-3-dev librsvg2-dev libayatana-appindicator3-dev libssl-dev und rustupWSL-UbuntuLinux-Buildja fĂŒr Linux (Paketnamen prĂŒfen)
xdotool, wmctrlWSL-UbuntuX11-Fensterverhalten prĂŒfen (immer oben, Position)optional
Ubuntu-GNOME-VM (Hyper-V, in Windows 11 Pro enthalten), bei Bedarf KDE-VMWindowsechte Linux-Desktops testen, je ISO einige GBoptional, erst nach deiner Antwort auf die Linux-Frage

Regeln: Phase 0 braucht nur die ersten vier Zeilen. Opus nennt vor jeder Installation mit Adminrechten (winget, sudo apt) in einem Satz, was und warum, installiert nur, was die laufende Phase braucht, und trÀgt die Versionen ins Log. Kein Signaturzertifikat und keine Cloud-Build-Dienste nötig.

10 · Tests (vor jeder Veröffentlichung grĂŒn)

  1. Golden-Traces: kanonische AblĂ€ufe als festes Soll (erster Ping im Netz = ARP-Anfrage per Broadcast, ARP-Antwort per Unicast, Echo-Anfrage, Echo-Antwort; Ping ĂŒber den Router = ARP fĂŒr das Gateway, MAC wechselt, TTL −1; MAC-Tabelle lernt, Fluten bei unbekanntem Ziel, VLAN trennt Broadcast-DomĂ€nen).
  2. Rechnungsgegenprobe: Subnetzrechnung des Labors gegen Python ipaddress (wie bei der Spielhalle, 0 Abweichungen).
  3. TicketprĂŒfung: jede Lösung besteht, jeder Fehler scheitert mit dem erwarteten Grundcode (§ 8.2).
  4. CLI-PrĂŒfung: je Befehl eine Ausgabe-Erwartung, AbkĂŒrzungen, Fehlermeldungen, Modi.
  5. Durchspiel-Lauf: ein Skript spielt in der OberflÀche Ticket 1 bis N automatisch durch (wie testlauf.js der Spielhalle).
  6. SichtprĂŒfung: je Phase im echten Programm auf Windows und Linux, Bildschirmfotos, Leiste und Vollansicht, Dunkel- und Hellmodus.
  7. Leerlaufmessung: CPU und Speicher in Tray und Leiste (tools/messen.ps1 unter Windows, ps unter Linux), Zahlen ins Log.

11 · Phasen mit Abnahmekriterien

Alle Kriterien sind sichtbare AblĂ€ufe im Browser, nicht „Modul existiert“. Ein Modul, das getestet ist, aber vom Spiel nie aufgerufen wird, zĂ€hlt als nicht erledigt.

PhaseInhaltAbnahme (Klick-Ablauf)
0 HĂŒlle und GrundlageTauri-Projekt, bauen.py (Ordner + Einzeldatei), Plattform-Schnittstelle, Speichern (atomar, Sicherungen), Ein-Fenster-Umschaltung Leiste ⇄ Voll, Tray mit Punkt, Einzelinstanz, Lernmotor eingebunden, Leerdesign, RĂŒckfall-Anzeigen, MessungNetzwerk-Labor.exe startet per Doppelklick; Linux-Fassung startet in WSLg; Leiste ⇄ Voll per Klick; ein simuliertes Ticket setzt den Tray-Punkt; Neustart behĂ€lt den Zustand; kann()-Tabelle je System ausgefĂŒllt; Leerlaufwerte im Log; tests.html grĂŒn
1 Erstes Ping (Vertikalschnitt)Editor (PC, Switch, Router), Kabel, Inspektor mit IP-Feldern, Ping-Gummiband, Sim-Kern L2/L3 (ARP, ICMP, statisches Gateway), Ereignisliste, PDU-Inspektor, Ebene IP-Netze, Undo/Autospeichern, 5 Einstiegs-Tickets, Auftragsliste live, Hilfestufen 0–6Ticket „Salon: Drucker nicht erreichbar“ ist von Anfang bis Abnahme lösbar, Trace stimmt mit Golden-Test ĂŒberein, Lösung wird vorgefĂŒhrt und erzeugt Wiederholungsticket
2 Konsole und VLANIOS-Parser, Switch- und Router-Konsole, ?/Tab/Kurzformen, running/startup, reload, VLAN, Trunk, Router-on-a-Stick, 15 weitere Tickets, „entspricht: 
“-ZeileArztpraxis-Projekt (3 VLANs) per Konsole und per Panel lösbar; nicht gespeicherte Änderung geht nach reload verloren
3 DiensteDHCP, DNS, ACL, NAT/PAT, Server, Firewall (vereinfacht), TCP-Handshake-AnsichtAutohaus-Projekt mit 2 Standorten und Internet, NAT-Fehlersuche, SYN → SYN/ACK → ACK im PDU-Inspektor sichtbar
4 KarrierePostfach, Kunden, Euro/Ruf, Stufen, Abnahme mit Sternen, Neustart-Test, Injektor-Generator, Wiki-Links, PrĂŒfungstagEin Arbeitstag von Postfach bis Abnahme; generiertes Ticket besteht die TicketprĂŒfung
5 IdleWartungsvertrÀge, Playbooks (an FÀlligkeit gekoppelt), Offline-Bericht, Mini-Tickets und Leisteninhalt, Unterrichtsmodus, Ruhe-Schalter, Vollbild-AusblendungMini-Ticket in der Leiste ohne Tastatur lösbar; Ticket kommt ohne Fokusklau und ohne Ton an; Playbook pausiert, sobald die Fertigkeit fÀllig ist
6 AusbauSTP, LACP, Port-Security, IPv6, RIP/OSPF, Storage-Kunden (NAS/SAN), Story-Bögenje Thema eigene Abnahme

Empfohlene Reihenfolge: Phase 0 allein zuerst: Stehen Windows- und Linux-Build und die Leiste, ist der Rest reine Web-Arbeit. Dann 1 → dem Nutzer 10 Minuten in die Hand geben → 2 → 3 → 4 → 5. Simulation und Konsole tragen etwa 70 % des Aufwands. Die Idle-Schicht ist dĂŒnn und kommt deshalb spĂ€t. Die Bedienung des Editors ist das grĂ¶ĂŸte Akzeptanzrisiko, also zuerst hier den Nutzertest.

12 · Risiken und ehrliche Grenzen

RisikoGegenmaßnahme
Die Simulation lehrt etwas FalschesGolden-Traces, Belege je Lehrtext, „IOS-Ă€hnlich“ kennzeichnen, Fehler ehrlich ansprechen
Umfang lĂ€uft weg (Simulation und Konsole sind groß)Phasen mit Abnahme, Vertikalschnitt zuerst, Streichliste: Firewall-Konsole, Story, OSPF
Editor fĂŒhlt sich zĂ€h anNutzertest nach Phase 1, UX-Regeln aus § 7 sind Abnahmekriterien
Idle wird zum Klickspiel ohne LernenKönnen-Tor: Playbooks nur ab „sicher“, pausiert bei FĂ€lligkeit; Euro kauft nie Kernwerkzeuge
Spielstand beschÀdigt oder gelöschtAtomares Schreiben, 5 rotierende Sicherungen, Export/Import (§ 9.3)
Lernstand von Programm und Browser-Spielhalle getrenntExport/Import; optional Spielhalle als Fenster im selben Programm (ungeprĂŒft), § 8.3
Cisco-Markeeigene Symbole, „IOS-Ă€hnlich“, keine Abbilder
Agent baut Module „daneben“Abnahme nur als sichtbarer Ablauf, Verkabelung in bauen.py prĂŒfen
Wayland/GNOME erlaubt keine Overlay-Funktionen (immer oben, Positionieren, Hotkey)RĂŒckfall auf normales kleines Fenster, ehrliche Anzeige in den Einstellungen (§ 9.4)
WebKitGTK verhĂ€lt sich anders als Chromium (Ziehen, CSS, SVG-Geschwindigkeit)Zeigerereignisse, konservatives CSS, SichtprĂŒfung auf beiden Systemen; Electron als Notausgang
Unsigniertes Programm: SmartScreen, Linux-AusfĂŒhrrechteAnleitung in der LIESMICH, Signieren spĂ€ter, falls es die Klasse stört
Speicherbedarf der WebView höher als „minimal“Vollansicht bei Leiste abbauen, messen, ehrlich berichten (§ 9.7)
Erster Build dauert lange, Linux-Umgebung ist leerPhase 0 allein, Installationen mit RĂŒckfrage (Adminrechte), Build im Hintergrund

13 · Entscheidungen (Standard gilt, außer du widersprichst)

  1. Eigenes Projekt neben der Spielhalle (von dir am 30.09. bestĂ€tigt), Lernmotor gemeinsam genutzt. SpĂ€ter erhĂ€lt die Spielhalle eine Kachel „Netzwerk-Labor“.
  2. Desktop-Programm mit Tauri 2 fĂŒr Windows (.exe) und Linux (AppImage/Binary), schlichtes JavaScript, kein Node. Browser-Fassung als Zugabe.
  3. Ein Fenster, zwei Ansichten (Leiste und Voll) plus Tray, statt mehrerer Fenster.
  4. Standard der Leiste: halbdurchsichtig, am Rand, ohne Ton und ohne Fokusklau, Autostart aus.
  5. Fiktion: Ein-Mann-Systemhaus, Kunden fiktiv, Mentorfigur namenlos („Senior“).
  6. Konsole von Anfang an (Phase 2), kein „spĂ€ter vielleicht“.
  7. Export/Import von Spielstand und Lernstand als Datei: ja (jetzt selbstverstÀndlich, weil das Programm ohnehin in Dateien speichert).
  8. Dynamisches Routing (RIP/OSPF) erst in Phase 6. Windows-AppBar nur als spÀtere Idee.
  9. Spielname offen (Arbeitstitel „Netzwerk-Labor“ fĂŒr das Werkzeug, „Systemhaus“ fĂŒr die Fiktion).

Frage an dich (nicht blockierend)

Welches Linux und welche OberflĂ€che nutzt ihr (Ubuntu/GNOME, KDE, anderes; X11 oder Wayland)? Davon hĂ€ngt ab, wie viel von § 9.4 dort wirklich funktioniert. Ohne Antwort baut Opus fĂŒr „GNOME unter Wayland“ als schwĂ€chsten Fall und lĂ€sst alles andere darĂŒber hinaus laufen.