Files
dogfather-universe/workspace/buehne.html
T
DogFatherGitandClaude Opus 5 96eff525d0 Die Einweisung gibt es jetzt auch fuer Team Dogi -- vier Fassungen, 106 Karten
Filipe hat den Bauplan "Willkommen & Anleitung -- Einweisung je Rolle"
(27 Seiten, Stand 06.10.2026) geschickt: pruefen, perfektionieren und
auf der Crew-Seite umsetzen.

AUSGANGSMESSUNG, bevor etwas angefasst wurde:

    agentur  creator 18 · manager 22 · scout 21 · spicy 23 Karten
    crew     0 Karten -- die Schnittstelle antwortete 404 "nicht_hier"

Die Seite lud also, war aber leer. Baulich vorbereitet war sie schon:
Alle drei Inhaltstabellen tragen `haus` mit UNIQUE (haus, rolle,
kachel), und die Aussaat nimmt das Haus als Parameter.

WAS JETZT DA IST

  gast   14 Karten (5 Muss, 4 Regelmaessig, 5 Bedarf)
  modi   29 Karten (7 / 7 / 15)
  linke  29 Karten (7 / 7 / 15)
  hand   34 Karten (8 / 7 / 19)

Jede Zahl entspricht Kapitel 13 des Bauplans. Dazu je Rolle
Leitgedanke, drei Saetze, fuenf Erste Schritte, "Nicht deins",
Rhythmus und Fragen -- woertlich aus Kapitel 06 bis 09.

VOR DEM SCHREIBEN ABGEGLICHEN, nicht danach: Ein Skript prueft jede
Karte gegen die echte Kachelliste der Rolle. Ergebnis fuer alle vier
Fassungen: Kartenzahl wie im Plan, jede Karte trifft eine Kachel,
jede Kachel hat eine Karte, keine doppelt.

ZWEI KACHELN AUF EINER SEITE. Auf der Crew-Adresse fuehren "Chat"
(das Team) und "Rudel-Chat" (`?raum=treff`) beide auf chat.html.
`schluesselVonZiel` behielt nur `b` -- beide ergaben denselben
Schluessel, und damit konnten sie keine eigenen Karten haben, obwohl
der Bauplan ihnen verschiedene Einordnungen gibt (fuer die rechte
Hand: Team-Chat Muss, Rudel-Chat nur bei Bedarf). Jetzt wird auch
`raum` unterschieden. Auf der Agenturadresse gibt es nur eine
Chat-Kachel; dort aendert sich nichts.

DAS HAUS KOMMT AUS DER ADRESSE, nicht aus der angesehenen Rolle.
`const HAUS = "agentur"` ist einer Funktion gewichen. Nimmt DogFather
die Sicht einer anderen Rolle ein, wechselt er die ROLLE, nicht die
ADRESSE -- wer hier `req.sicht` naehme, bekaeme auf der Crew-Adresse
Agenturinhalte, sobald eine Sicht gesetzt ist.

`FASSUNGEN` stand an zehn Stellen fest und haette die Crew ueberall
abgewiesen. Jetzt `fassungenFuer(haus)` -- eine Funktion statt zweier
Listen an zehn Stellen.

Neue Zeilenart `vorweg` fuer "Drei Dinge vorweg" (nur die Community,
Bauplan Kapitel 04). Fehlt die Liste bei einer Rolle, wird nichts
eingetragen -- kein Sonderfall noetig.

Eigene Datei fuer die Crew-Inhalte: anleitung-tabellen.js traegt
schon die Agenturfassungen und ist 856 Zeilen lang. Getrennte Dateien
sind hier dasselbe Prinzip wie getrennte Haeuser.

pruef-anleitung 125 -> 127. Fuenf Zeilen darin verteidigten den alten
Zustand ("ein Modi bekommt die Anleitung nicht, erwartet 404") -- sie
sind mitgewandert statt stehenzubleiben. Dazu eine neue Gegenprobe
zur Haustrennung: In der Crew-Fassung darf keine Agenturkachel
vorkommen.

Datenbank vorher gesichert und zurueckgelesen (integrity_check,
84 Karten).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-06 16:29:38 +02:00

70 lines
3.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bühne – das laufende Video</title>
<!-- ======================================================================
DAS LAUFENDE VIDEO ALS BROWSER-QUELLE (28.09.2026)
Zeigt das Video, das gerade in der Reaction läuft — auf dieselbe
Sekunde wie bei allen anderen. Sonst nichts: kein Chat, keine
Kameras, keine Bedienung, kein Rand.
WARUM DIE EIGENE KAMERA HIER NICHT DRIN IST: Sie ist in OBS
direkt als Gerät verfügbar, in besserer Qualität und frei in
Größe und Lage. Den Umweg über den Browser zu nehmen hieße,
Qualität gegen nichts einzutauschen — und die Größe wäre dann
festgelegt statt frei.
Sind GÄSTE im Bild, kommen deren Kameras über eine
Direktverbindung an, und die braucht eine angemeldete Seite.
Dafür gibt es den Bühnenmodus der Reaction-Seite
(`reaktion.html?nur=buehne`), der als Fenster aufgenommen wird.
In OBS: Quelle → Browser → diese Adresse, 1920 × 1080,
„Steuerung anzeigen" aus.
====================================================================== -->
<style>
html, body {
margin: 0; padding: 0;
background: #000;
height: 100%; overflow: hidden;
font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
}
#platz { position: fixed; inset: 0; }
#platz iframe { width: 100%; height: 100%; border: 0; display: block; }
/* ==== BEI „NUR KAMERA" GEHT DAS BILD AUS ========================
Sonst läge im Stream ein stehengebliebenes YouTube-Bild unter
den Kameras — und Filipe sähe es nicht, weil er in OBS auf
seine Szene schaut und nicht auf die Quelle.
`visibility` UND NICHT `display`. Ein Spieler, den man aus dem
Seitenaufbau nimmt, hört auf zu dekodieren; beim Zurückschalten
müsste er erst wieder an die richtige Stelle springen, und das
sehen dann alle. So läuft er weiter, nur eben unsichtbar, und
ist in derselben Sekunde wieder da. */
body[data-bild="aus"] #platz { visibility: hidden; }
/* Was zu sehen ist, wenn gerade nichts läuft. Schwarz und still --
eine Beschriftung stünde im Stream. Nur bei einem falschen
Schlüssel gibt es einen Hinweis, denn den sieht man sonst nie. */
.obs-fehler {
position: fixed; left: 16px; top: 16px;
padding: 10px 14px; border-radius: 10px;
background: rgba(140, 20, 30, .9); color: #fff; font-size: 14px;
}
</style>
<!-- DIE WERBEEINBLENDUNG. Dieselbe Datei wie in der Reaction-Seite:
Zwei Fassungen altern unterschiedlich, und dann sieht der Stream
anders aus als das, worueber geredet wird. -->
<link rel="stylesheet" href="assets/css/werbung.css?v=202610061629" />
</head>
<body class="obs-buehne">
<div id="platz"></div>
<script src="assets/js/werbung.js?v=202610061629" defer></script>
<script src="assets/js/buehne.js?v=202610061629" defer></script>
</body>
</html>