đ§ 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)
- 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.
- 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â.
- Nie stecken bleiben. Es gibt immer einen nĂ€chsten Schritt: Hinweisleiter bis zum vorgefĂŒhrten Lösungsweg, danach ein Wiederholungsticket.
- Klein anfangen, jederzeit aufhören. 60 Sekunden bis zum ersten Erfolg. Ein Ticket darf 1 Minute oder 25 Minuten dauern, gespeichert wird laufend.
- Bedienung darf nie das Hindernis sein. RĂŒckgĂ€ngig immer, keine Pflicht-Dialoge, sofortige RĂŒckmeldung (§ 7).
3 · Der Loop
3.1 Drei Zeitskalen
| Skala | Dauer | Was passiert | Neben der Wirkung |
|---|---|---|---|
| Mikro | 30â120 s | Mini-Ticket in der Leiste (Config-Zeile finden, Log lesen, Ablauf ordnen, Ausgang vorhersagen) | Lernmotor-Einheit, kleiner Euro-Betrag |
| Meso | 10â25 min | Ein 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 |
| Makro | Wochen | Kunden wachsen, neue Stufen, PrĂŒfungstage (AP1/AP2-Simulation als âZertifizierungâ), Playbook-Slots | Freischaltungen |
3.2 Ticketarten
| Art | Start | Ziel | Dauer |
|---|---|---|---|
| Störung | Netz steht, etwas ist kaputt (injizierter Fehler, § 8) | Symptom beheben, KollateralschĂ€den vermeiden | 1â8 min |
| Projekt | Kundenbrief mit Anforderungen, leere FlĂ€che | Netz planen und bauen; Abnahmetests laufen | 10â25 min |
| Wartung | Vertragskunde meldet Ereignis (Idle-Schicht) | wie Störung, mit Frist | 1â5 min |
| Mini | Schnappschuss (Diagramm, Log oder Config-Ausschnitt) | eine Frage in < 2 min, in der Leiste spielbar (nur Maus) | 0,5â2 min |
| PrĂŒfungstag | Gemischter Satz, Zeitlimit, keine Hilfen | Note 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)
| Stufe | Beispielkunde | Neue GerÀte | Neue Fertigkeiten (lab.*) |
|---|---|---|---|
| 1 Azubi | Friseursalon: 3 PCs, 1 Router | PC, Router, Switch (einfach) | IP/Maske/Gateway, Ping lesen, âgleiches Netz?â, ARP sehen |
| 2 Geselle | SchreibbĂŒro: 10 PCs, Drucker, Server | Server, Switch (verwaltbar) | kleines Subnetting, DHCP, DNS, Ports, TCP-Handshake |
| 3 | Arztpraxis: Verwaltung / Behandlung / GĂ€ste | â | VLAN, Trunk, Router-on-a-Stick, ACL |
| 4 | Autohaus: 2 Standorte | Internet-Wolke | statische und Default-Route, RĂŒckroute, NAT/PAT, Port-Weiterleitung |
| 5 | Mittelstand mit DMZ | Firewall | Zonen, DMZ, Regelwerk, Port-Security |
| 6 (spĂ€ter) | Storage und Cloud | NAS/SAN | passend 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
- Abnahme = automatische Tests aus dem Ticket (âKasse erreicht Serverâ, âGast erreicht Server nichtâ, ânichts, was vorher ging, ist kaputtâ). Letzteres ist echtes Change-Management (Regressionstest) und ein hĂ€ufiger PrĂŒfungsfehler.
- Sterne (1â5): gelöst, Hilfen genutzt, KollateralschĂ€den, nicht gespeichert. Tempo zĂ€hlt nur als kleiner Bonus.
- Neustart-Test (AP2): Die Abnahme âzieht am Ende den Steckerâ und lĂ€dt die gespeicherte Konfiguration. Wer nicht gespeichert hat, verliert die Ănderung, genau wie in echt (RAM gegen NVRAM, siehe § 6). Bei Einstieg nur ein Warnhinweis.
- Live-Auftragsliste: Bei Einstieg laufen die Abnahmetests im Hintergrund weiter, und jede Anforderung springt auf â, sobald sie erfĂŒllt ist. Das fĂŒhlt sich wie ein Quest-Log an. Bei AP2 gibt es das nicht, nur âAbnahme anfordernâ.
- Wirtschaft bewusst dĂŒnn: Euro kaufen Playbook-Slots, Kundenakquise, PrĂŒfungsgebĂŒhren und Aussehen. Kernwerkzeuge werden nie hinter Geld versteckt (Simulation, Inspektor, Konsole, Hilfe). Ruf ist kein Zahlungsmittel und öffnet nur Kundenstufen.
4 · Hilfe, wenn man nicht weiterkommt
| Stufe | Was | Kosten |
|---|---|---|
| 0 | Symptom und Ziel stehen immer sichtbar (Auftragsliste) | frei |
| 1 | Fehlersuche-Leiter: Checkliste von unten nach oben (Link â VLAN â IP/Maske â Gateway â Route â ACL/Dienst). Du hakst ab, was du geprĂŒft hast | frei |
| 2 | Werkzeuge wie im Betrieb: Ping, Traceroute, show-Befehle, Simulation mit Ereignisliste. Sie zeigen, wo es hÀngt, nur so genau wie die echten Werkzeuge | frei |
| 3 | Frage des Seniors: âWas passiert, wenn PC-B den Server anpingt: welche Adresse fragt er per ARP?â | frei, Sterne â0 |
| 4 | Bereich markieren: GerĂ€t oder Schnittstelle leuchtet auf | œ Stern |
| 5 | Konkreter Hinweis: welches Feld oder welcher Befehl | œ Stern |
| 6 | Lö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 ist | 1 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
- Ereignisgesteuerte Simulation auf Frame-Ebene mit virtueller Zeit. Ein Lauf erzeugt eine Trace (Liste von Ereignissen) als reine Daten. Die OberflĂ€che spielt die Trace nur ab (Play, Schritt, Tempo, ZurĂŒckspulen). Das trennt Rechnen und Anzeigen und macht Golden-Tests einfach.
- Kein Modul darf DOM oder Zeit anfassen.
sim/lĂ€uft im Browser und (wenn Node da ist) headless. - Realzeit gegen Simulationsmodus wie in Packet Tracer: derselbe Lauf, einmal nur das Ergebnis, einmal Schritt fĂŒr Schritt.
- Ereignis-Budget je Lauf (Startwert 5 000). Wird es gerissen (z. B. Layer-2-Schleife ohne STP), meldet die Simulation âBroadcast-Sturm erkanntâ und bricht sauber ab. Das ist selbst ein Lernfall.
- Jede KonfigurationsÀnderung verwirft die alte Trace. Config ist Daten (JSON); running und startup getrennt gehalten.
5.2 GerÀte und Verhalten
| GerÀt | Verhalten (v1) |
|---|---|
| PC / Server | Schnittstelle 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 |
| Switch | MAC-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 |
| Router | Schnittstellen 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 |
| Firewall | Vereinfachte Zonen (innen, auĂen, DMZ), Regeltabelle, zustandsbehaftet (RĂŒckverkehr erlaubt), NAT; im Editor herstellerneutral, Konsole nur in GrundzĂŒgen |
| Internet | Kulisse: ISP-Router mit Default-Route und einigen öffentlichen Servern |
5.3 Protokollumfang
- v1: Ethernet, ARP, VLAN/802.1Q, IPv4, ICMP, UDP, TCP (vereinfacht: Handshake SYN â SYN/ACK â ACK, Daten, FIN, RST bei geschlossenem Port; kein Staukontroll-Modell), DHCP (Discover/Offer/Request/Ack), DNS (einfache Abfrage), ACL, NAT/PAT.
- spĂ€ter (Phase 6): STP (vereinfacht), LACP, Port-Security, IPv6, dynamisches Routing (RIP oder OSPF, jeweils groĂ), Bandbreite und Latenz.
- bewusst nicht: WLAN-Funk, QoS, echte IOS-Feinheiten, Leistungssimulation.
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:
| Code | Wo | Kernaussage | Fertigkeit |
|---|---|---|---|
LINK_DOWN | Port | Kein Link: Kabel fehlt, Port abgeschaltet oder Gegenstelle aus | lab.link |
ARP_NO_REPLY | Host | Im eigenen Netz antwortet niemand: falsche IP, Maske oder VLAN? | lab.arp |
DROP_VLAN | Switch | Frame in VLAN 20, Zielport in VLAN 10; VLANs gehen nie ineinander ĂŒber | lab.vlan |
TRUNK_NOT_ALLOWED | Trunk | VLAN 20 ist auf dem Trunk nicht erlaubt | lab.trunk |
NO_GATEWAY | Host | Ziel in anderem Netz, aber kein Standardgateway | lab.gateway |
GW_WRONG_SUBNET | Host | Gateway liegt nicht im eigenen Netz | lab.gateway |
NO_ROUTE | Router | Keine Route zum Zielnetz (ICMP Destination unreachable) | lab.route |
NO_RETURN_ROUTE | Router | Hinweg ok, Antwort findet zurĂŒck keinen Weg (Symptom: Timeout) | lab.route |
TTL_EXPIRED | Router | Routing-Schleife, TTL erreicht 0 | lab.ttl |
ACL_DENY | Router/FW | Regel Nr. X verwirft; Reihenfolge zÀhlt | lab.acl |
NAT_MISSING | Router | Private Adresse im Internet nicht routbar; NAT fehlt oder inside/outside vertauscht | lab.nat |
DUP_IP | Host | Adresskonflikt | lab.ip |
DHCP_NO_OFFER | Host | Kein DHCP-Server erreichbar (VLAN oder Relay); Windows nimmt eine 169.254.x.x-Adresse (APIPA) | lab.dhcp |
PORT_CLOSED | Server | RST: kein Dienst lauscht auf dem Port | lab.ports |
STORM | Netz | Ereignis-Budget gerissen: Schleife ohne STP | lab.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
- Belege vor Einbau. Jeder Lehrtext und jedes IOS-Verhalten wird an einer Quelle belegt (Cisco-Dokumentation, RFC, CCNA-Lehrbuch oder Vault-Notiz). Was nicht belegt ist, wird vereinfacht und im Spiel als âIOS-Ă€hnlichâ gekennzeichnet, nicht erfunden.
- Realistische Eigenheiten, zuschaltbar: Erstes Ping ĂŒber den Router verliert oft das erste Paket (ARP wird noch aufgelöst; IOS zeigt
.!!!!). RAM gegen NVRAM (Neustart verliert Ungespeichertes). Lernfall aus dem Unterricht vom 29.09.: VLAN-Datenbank (vlan.dat) im Flash ĂŒberlebtwrite erase. Vor Einbau prĂŒfen, fĂŒr welche Plattformen genau das gilt; in deiner Notiz steht âRouterâ, die VLAN-Datei gehört nach meinem Wissen zum Switch. - Kein Cisco-Bildmaterial. Eigene, neutrale Symbole, kein Markenlogo, keine IOS-Abbilder. Die Konsole heiĂt âIOS-Ă€hnlichâ.
6 · Konsole (IOS-Àhnlich)
Cisco-AusfĂŒhrlichkeit ist ausdrĂŒcklich gewĂŒnscht, also von Anfang an mit dabei (ab Phase 2).
- Modi und Prompts:
Router>âRouter#âRouter(config)#â(config-if)#,(config-subif)#,(config-vlan)#,(config-line)#. - Bedienung: eindeutige Kurzformen (
sh ip int br),?zeigt die Optionen an der Stelle, Tab vervollstĂ€ndigt,no-PrĂ€fix,doin der Konfiguration, Verlauf mit Pfeil hoch/runter. Fehler im Stil% Invalid input detected at '^' marker.,% Incomplete command.,% Ambiguous command: "âŠ". - Befehle (v1):
hostname,enable/enable secret,interface/interface range,ip address,no shutdown,description,vlan,switchport mode access|trunk,switchport access vlan,switchport trunk allowed vlan/native vlan,ip route,ip default-gateway,ip dhcp pool/ip helper-address,access-list/ip access-list,ip nat inside|outside/ip nat inside source âŠ,show running-config|startup-config|ip interface brief|interfaces trunk|vlan brief|mac address-table|ip route|arp|version|flash:,ping,traceroute,copy running-config startup-config,write memory/erase startup-config/write erase,delete flash:vlan.dat,reload. - Eine Quelle der Wahrheit. GUI und Konsole Ă€ndern dasselbe Config-Objekt.
running-configwird daraus erzeugt (feste, an IOS angelehnte Reihenfolge). Jede GUI-Ănderung zeigt den Konsolenbefehl dazu (âentspricht:ip address 10.0.0.1 255.255.255.0â) mit âIn Konsole ĂŒbernehmenâ. So lernt man die CLI ganz nebenbei. - Einstieg: die Konsole schlĂ€gt auf Wunsch den nĂ€chsten Befehl vor, erklĂ€rt jeden in einer Zeile und bietet
?-Hilfe mit ErklÀrung. - Host-Terminal (Windows-artig):
ipconfig,ping,arp -a,nslookup,tracert.
7 · Bedienung (UX-Regeln fĂŒr Opus)
Grundsatz: Wer 10 Minuten damit spielt, hat nie gegen die OberflÀche gekÀmpft.
FlÀche
- SVG-ZeichenflÀche mit Raster-Einrasten, Zoom mit Mausrad, Verschieben mit Ziehen auf leerer FlÀche,
F= alles einpassen, âAufrĂ€umenâ (Auto-Layout). - GerĂ€teleiste links: Ziehen oder erst anklicken, dann auf die FlĂ€che klicken. Doppelklick auf leere FlĂ€che öffnet eine Schnellauswahl.
- Verkabeln: Ăber dem GerĂ€t erscheinen die Port-Punkte. Ziehen vom Punkt (oder vom GerĂ€t) zum ZielgerĂ€t, das Spiel wĂ€hlt den nĂ€chsten freien passenden Port; nur bei Mehrdeutigkeit (Shift, oder Ablegen auf einen Port-Punkt) wird gefragt. Kabelart (gerade/gekreuzt) entfĂ€llt: Auto-MDI-X ist heute Standard, im Einstieg einmal erklĂ€rt.
- Farben mit Text: Link grĂŒn/orange/rot plus Symbol; VLAN-Farbe am Port plus Nummer; Trunk mit Doppelstrich. Nie nur Farbe.
- Ebenen (Umschalter): Physik · VLAN · IP-Netze · MAC-Tabellen · Routen. Standard: IP-Netze, d. h. jedes Subnetz als farbige Zone um seine GerĂ€te, sodass âgleiches Netz?â sofort sichtbar ist.
- Ping-Gummiband: Ping-Werkzeug (Taste
P), vom GerĂ€t A auf GerĂ€t B ziehen, Ergebnis als Toast, Paket fliegt entlang des Wegs, âIn Simulation öffnenâ.
Inspektor (rechts, beim Antippen eines GerĂ€ts) mit Reitern Ăbersicht · Schnittstellen · VLAN/Routing (je nach GerĂ€t) · Dienste · Konsole
- Live-PrĂŒfung beim Tippen (â10.0.0.5/24 liegt nicht im Netz von Gateway 10.0.1.1â), keine Fehler erst nach Speichern.
- Zeile âentspricht: âŠâ (§ 6).
Simulation (unten)
- Ereignisliste (eine Zeile je Etappe, mit Grundcode und Klartext), Filter nach Protokoll, Klick auf Zeile leuchtet das GerÀt auf.
- PDU-Inspektor: aufklappbare OSI-Schichten, geĂ€nderte Felder gegenĂŒber der vorigen Etappe hervorgehoben (MAC wechselt an jedem Router, IP nicht, TTL â1).
- Play, Schritt, Tempo, ZurĂŒckspulen.
Komfort
- RĂŒckgĂ€ngig/Wiederholen fĂŒr alles (Befehlsmuster im Modell), Snapshots, âTicket zurĂŒcksetzenâ mit BestĂ€tigung.
- Autospeichern nach jeder Ănderung.
- Befehlspalette
Strg+K(GerĂ€t springen,ping A B, Ebene wechseln). - TastenkĂŒrzel auf Rechnern, TrefferflĂ€chen â„ 44 px,
prefers-reduced-motionrespektieren. Desktop zuerst (Programm); die Browser-Fassung ist Zugabe, Handy nur zum Lesen. - Keine Pflicht-Dialoge bei Routinehandlungen. Fehlermeldungen erklÀren, sie schimpfen nicht.
- Kein schwebendes Fenstersystem (Aufwand, Bedienrisiko): Desktop-Metapher nur als Andock-Leiste (Postfach · Labor · Wiki · Kunden · Lernkarte · Shop), jede App fĂŒllt die FlĂ€che.
- Leistung: 60 GerĂ€te, Ziehen bleibt flĂŒssig.
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
- Auf diesem Rechner geprĂŒft (30.09.2026): Rust 1.97.1 (
cargo,rustc), Visual Studio 2022 Community, WebView2-Runtime 154, Python 3.14, Git, Docker und WSL2 mit Ubuntu 26.04 (WSLg, also mit Linux-Fenstern) sind da. Node fehlt. Die App selbst braucht es nicht; als TestlĂ€ufer wird es nach deiner Freigabe installiert (§ 9.8). Nicht geprĂŒft: ob die C++-Arbeitslast von Visual Studio installiert ist (Opus merkt es beim ersten Build). In der WSL-Ubuntu fehlt alles (keingcc,cargo,node,pkg-config, WebKitGTK). Auchtauri-cliist nicht installiert (cargo install tauri-cli --version "^2"). - Warum Tauri: kleines Programm (nutzt die vorhandene WebView statt eines mitgelieferten Chromium), natives Tray-Symbol, Autostart, Fenstersteuerung, und die Spielhalle-Technik (schlichtes JS,
bauen.py) bleibt. Die OberflĂ€che braucht kein npm: Tauri lĂ€dt den gebauten Ordner,app.withGlobalTauriliefert die API als Objektwindow.__TAURI__(vor Einbau in der aktuellen Doku prĂŒfen). - Rust bleibt dĂŒnn (Fenster, Tray, Speichern, Autostart, Einzelinstanz; grob unter 500 Zeilen). Alle Spiellogik ist JavaScript.
- Alternative Electron: bringt Chromium mit (deutlich gröĂer, im Leerlauf mehr Speicher), rendert dafĂŒr auf allen Systemen gleich. Nur wĂ€hlen, wenn WebKitGTK unter Linux zu viele Darstellungsprobleme macht. Der Kern ist durch die Schnittstelle in § 9.2 austauschbar.
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.
| Funktion | Windows 11 | Linux X11 / KDE | Linux Wayland (GNOME) |
|---|---|---|---|
| Immer im Vordergrund per Programm | ja | ja | nein, Sache des Compositors |
| Fenster selbst positionieren und andocken | ja | ja | nein |
| Durchsichtiges, rahmenloses Fenster | ja | ja, mit Compositor | meist ja |
| Tray-Symbol | ja | ja | nur mit AppIndicator-Erweiterung |
| Globaler Hotkey | ja | ja (X11) | eingeschrÀnkt oder nein |
| Klick-durchlÀssig im Ruhezustand | ja | meist | unklar |
| Vollbild oder PrÀsentation erkennen | ja (Windows-Schnittstelle) | X11 möglich | nein |
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
- Windows:
cargo tauri builderzeugt eine einzelneNetzwerk-Labor.exe. Sie braucht die WebView2-Runtime (Windows 11 hat sie, Ă€ltere Systeme eventuell nicht). Ohne Signatur zeigt Windows SmartScreen (âWeitere Informationen â Trotzdem ausfĂŒhrenâ); das steht in der LIESMICH fĂŒr die Klasse. - Linux: in der WSL-Ubuntu bauen. Vorher Entwicklungspakete installieren (
build-essential,pkg-config,libwebkit2gtk-4.1-dev,libgtk-3-dev,librsvg2-dev,libayatana-appindicator3-dev,libssl-dev, dazu Rust ĂŒberrustup; Paketnamen auf Ubuntu 26.04 mitapt-cacheprĂŒfen). Ergebnis: AppImage und tar.gz. Nach meinem Wissen braucht ein AppImage auf neueren Ubuntu-Versionenlibfuse2oder den Start mit--appimage-extract-and-run. Alternativ Docker. - Kein Cross-Kompilieren: jedes System baut nativ.
- Browser-Fassung:
bauen.py --paketerzeugt wie bei der SpielhalleSTART.htmlin einer ZIP, derselbe Kern ohne Fensterfunktionen. - Aktualisieren: neu verteilen. Die Version steht in der Kopfzeile, der Spielstand wird migriert.
9.6 GrundsÀtze
sim/undcli/haben keinen DOM-Zugriff, keinen direkten Zugriff auf Zeit oder Zufall (Zufall nur mit ĂŒbergebenem Seed).- Config ist reine Daten. Jede UI-Aktion geht ĂŒber einen Befehl im Modell (RĂŒckgĂ€ngig und Autospeichern gratis). Ereignisse (
ereignis.js) statt direkter Aufrufe zwischen UI und Spiel. - Zeigerereignisse statt HTML5-Drag-and-Drop (in WebKitGTK oft holprig, und fĂŒr den Editor ohnehin besser). Konservatives CSS, SichtprĂŒfung auf beiden Engines (WebView2 = Chromium, WebKitGTK = Safari-Engine).
- Schriften lokal (woff2), keine externen Anfragen. Zeit ĂŒber Zeitstempel-Differenz, nicht durch ZĂ€hlen von Ticks.
- Tests:
tests.htmllĂ€uft in der HĂŒlle oder im Browser (Vorbild Spielhalle) und headless mit Node (tests/run.js, nur eingebautesnode:test/assert, keine npm-Pakete). Kein Bundler, kein TypeScript: Sim und Konsole bleiben schlichtes JavaScript mit JSDoc-Typen, damitbauen.pyals Werkzeug reicht.
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.
| Zustand | Was |
|---|---|
| Tray | Kein 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 |
| Leiste | Rahmenlos, klein, am Rand, Standard 55 % deckend. Maus darĂŒber: voll deckend und Aufklappen zum Mini-Panel. Nach 5 s ohne Maus wieder zu |
| Voll | Normales Fenster mit Rahmen: Labor, Postfach, Kunden, Wiki, Lernkarte |
Regeln
- 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).
- 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).
- 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.
- 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.
- 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. - Eine Instanz. Ein zweiter Start holt die Leiste nach vorn, statt ein zweites Programm zu öffnen.
- Autostart nur auf ausdrĂŒckliche Wahl. Er startet dann still im Tray.
- 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)
| Werkzeug | Wo | WofĂŒr | Nötig? |
|---|---|---|---|
tauri-cli (cargo install tauri-cli --version "^2") | Windows und WSL | Bauen und Entwicklungsmodus | ja |
| Visual Studio âDesktopentwicklung mit C++â | Windows | Linker fĂŒr Rust | nur falls es fehlt (beim ersten Build prĂŒfen) |
Node.js LTS (winget install OpenJS.NodeJS.LTS) | Windows (WSL bei Bedarf) | headless Tests | empfohlen |
build-essential pkg-config libwebkit2gtk-4.1-dev libgtk-3-dev librsvg2-dev libayatana-appindicator3-dev libssl-dev und rustup | WSL-Ubuntu | Linux-Build | ja fĂŒr Linux (Paketnamen prĂŒfen) |
xdotool, wmctrl | WSL-Ubuntu | X11-Fensterverhalten prĂŒfen (immer oben, Position) | optional |
| Ubuntu-GNOME-VM (Hyper-V, in Windows 11 Pro enthalten), bei Bedarf KDE-VM | Windows | echte Linux-Desktops testen, je ISO einige GB | optional, 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)
- 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).
- Rechnungsgegenprobe: Subnetzrechnung des Labors gegen Python
ipaddress(wie bei der Spielhalle, 0 Abweichungen). - TicketprĂŒfung: jede Lösung besteht, jeder Fehler scheitert mit dem erwarteten Grundcode (§ 8.2).
- CLI-PrĂŒfung: je Befehl eine Ausgabe-Erwartung, AbkĂŒrzungen, Fehlermeldungen, Modi.
- Durchspiel-Lauf: ein Skript spielt in der OberflÀche Ticket 1 bis N automatisch durch (wie
testlauf.jsder Spielhalle). - SichtprĂŒfung: je Phase im echten Programm auf Windows und Linux, Bildschirmfotos, Leiste und Vollansicht, Dunkel- und Hellmodus.
- Leerlaufmessung: CPU und Speicher in Tray und Leiste (
tools/messen.ps1unter Windows,psunter 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.
| Phase | Inhalt | Abnahme (Klick-Ablauf) |
|---|---|---|
| 0 HĂŒlle und Grundlage | Tauri-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, Messung | Netzwerk-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â6 | Ticket â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 VLAN | IOS-Parser, Switch- und Router-Konsole, ?/Tab/Kurzformen, running/startup, reload, VLAN, Trunk, Router-on-a-Stick, 15 weitere Tickets, âentspricht: âŠâ-Zeile | Arztpraxis-Projekt (3 VLANs) per Konsole und per Panel lösbar; nicht gespeicherte Ănderung geht nach reload verloren |
| 3 Dienste | DHCP, DNS, ACL, NAT/PAT, Server, Firewall (vereinfacht), TCP-Handshake-Ansicht | Autohaus-Projekt mit 2 Standorten und Internet, NAT-Fehlersuche, SYN â SYN/ACK â ACK im PDU-Inspektor sichtbar |
| 4 Karriere | Postfach, Kunden, Euro/Ruf, Stufen, Abnahme mit Sternen, Neustart-Test, Injektor-Generator, Wiki-Links, PrĂŒfungstag | Ein Arbeitstag von Postfach bis Abnahme; generiertes Ticket besteht die TicketprĂŒfung |
| 5 Idle | WartungsvertrÀge, Playbooks (an FÀlligkeit gekoppelt), Offline-Bericht, Mini-Tickets und Leisteninhalt, Unterrichtsmodus, Ruhe-Schalter, Vollbild-Ausblendung | Mini-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 Ausbau | STP, LACP, Port-Security, IPv6, RIP/OSPF, Storage-Kunden (NAS/SAN), Story-Bögen | je 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
| Risiko | GegenmaĂnahme |
|---|---|
| Die Simulation lehrt etwas Falsches | Golden-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 an | Nutzertest nach Phase 1, UX-Regeln aus § 7 sind Abnahmekriterien |
| Idle wird zum Klickspiel ohne Lernen | Können-Tor: Playbooks nur ab âsicherâ, pausiert bei FĂ€lligkeit; Euro kauft nie Kernwerkzeuge |
| Spielstand beschÀdigt oder gelöscht | Atomares Schreiben, 5 rotierende Sicherungen, Export/Import (§ 9.3) |
| Lernstand von Programm und Browser-Spielhalle getrennt | Export/Import; optional Spielhalle als Fenster im selben Programm (ungeprĂŒft), § 8.3 |
| Cisco-Marke | eigene 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ĂŒhrrechte | Anleitung 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 leer | Phase 0 allein, Installationen mit RĂŒckfrage (Adminrechte), Build im Hintergrund |
13 · Entscheidungen (Standard gilt, auĂer du widersprichst)
- 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â.
- Desktop-Programm mit Tauri 2 fĂŒr Windows (
.exe) und Linux (AppImage/Binary), schlichtes JavaScript, kein Node. Browser-Fassung als Zugabe. - Ein Fenster, zwei Ansichten (Leiste und Voll) plus Tray, statt mehrerer Fenster.
- Standard der Leiste: halbdurchsichtig, am Rand, ohne Ton und ohne Fokusklau, Autostart aus.
- Fiktion: Ein-Mann-Systemhaus, Kunden fiktiv, Mentorfigur namenlos (âSeniorâ).
- Konsole von Anfang an (Phase 2), kein âspĂ€ter vielleichtâ.
- Export/Import von Spielstand und Lernstand als Datei: ja (jetzt selbstverstÀndlich, weil das Programm ohnehin in Dateien speichert).
- Dynamisches Routing (RIP/OSPF) erst in Phase 6. Windows-AppBar nur als spÀtere Idee.
- 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.