Billard Scoreboard Dokumentation v4.2

Diese Dokumentation enthält alle Schritte zur Installation sowie Erklärungen zur Tischansteuerung, UI-Logik, Training-Features und OBS-Integration.

Neu in Version 4.2:

1 Voraussetzungen

2 System-Installation

sudo apt update
sudo apt install nginx php8.3-fpm php8.3-sqlite3 -y

3 Ordnerstruktur

/var/www/billard/ ├── index.php # Haupt-Anwendung ├── api.php # Backend API ├── monitor_de.php # Live-Monitor (Deutsch) ├── monitor_en.php # Live-Monitor (Englisch) ├── obs_small.php # OBS Overlay klein (Style 1) ├── obs_small_2.php # OBS Overlay klein (Style 2) ├── obs_small_3.php # OBS Overlay klein (Style 3) ├── obs_small_4.php # OBS Overlay klein (Style 4) ├── obs_big.php # OBS Overlay groß (Style 1) ├── obs_big_2.php # OBS Overlay groß (Style 2) ├── obs_big_3.php # OBS Overlay groß (Style 3) ├── obs_big_4.php # OBS Overlay groß (Style 4) ├── help_de.html # Dokumentation (Deutsch) ├── help_en.html # Documentation (English) ├── scoreboard_logo.svg # Logo ├── billiard_data.db # SQLite Datenbank ├── tables.json # Live-Tischdaten ├── config.php # Konfiguration (Master-PIN, OBS_INTERVAL) │ ├── /obs/ # OBS Textdateien (auto-generiert) │ ├── table1_player1.txt │ ├── table1_score1.txt │ └── ... │ ├── /assets/ │ ├── /css/ │ │ └── styles.css # Komplettes CSS │ └── /js/ │ ├── app.js # Basis-Logik │ ├── game.js # Spiel-Funktionen │ └── training.js # Training-Funktionen │ ├── /logos/ # Vereins-Logos für OBS │ ├── BC Berlin.png │ ├── BC Bremen.png │ └── [Vereinsname].png │ ├── /EO/ # Equal Offense Bilder │ └── EO_*.svg │ └── /regeln/ # Regel-Grafiken (SVG) ├── /8ball/ │ └── 8ball_1.svg # 8-Ball Aufbau ├── /9ball/ │ └── 9ball_1.svg # 9-Ball Aufbau ├── /10ball/ │ └── 10_ball.svg # 10-Ball Aufbau └── /14_1/ └── Aufbau_[1-7]_[1-2].svg # 14/1 Wiederaufbau-Beispiele
sudo mkdir -p /var/www/billard/assets/css
sudo mkdir -p /var/www/billard/assets/js
sudo mkdir -p /var/www/billard/logos

4 Rechte vergeben

Achtung: SQLite ist eine Datei. PHP muss im gesamten Ordner schreiben dürfen.
sudo chown -R www-data:www-data /var/www/billard
sudo chmod -R 775 /var/www/billard

oder z.B.:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 775 /var/www/html

je nachdem wo die Dateien liegen.

5 Nginx Konfiguration

Konfigurationspfad: /etc/nginx/sites-available/default

server {
    listen 80;
    root /var/www/billard;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }
}
sudo nginx -t
sudo systemctl restart nginx

6 URL-Übersicht

AnsichtURLBeschreibung
Scoreboard http://[IP]/ Haupt-Anwendung für Spieler
Monitor (DE) http://[IP]/monitor_de.php Live-Anzeige aller Tische (Deutsch)
Monitor (EN) http://[IP]/monitor_en.php Live-Anzeige aller Tische (Englisch)
OBS Small http://[IP]/obs_small.php?Tisch=1 OBS Overlay klein - Style 1
OBS Small 2 http://[IP]/obs_small_2.php?Tisch=1 OBS Overlay klein - Style 2 (schwarze Scores, roter Streifen)
OBS Small 3 http://[IP]/obs_small_3.php?Tisch=1 OBS Overlay klein - Style 3 (blaue Scores)
OBS Small 4 http://[IP]/obs_small_4.php?Tisch=1 OBS Overlay klein - Style 4 (Bordeaux/Maroon)
OBS Big http://[IP]/obs_big.php?Tisch=1 OBS Overlay groß - Style 1
OBS Big 2 http://[IP]/obs_big_2.php?Tisch=1 OBS Overlay groß - Style 2 (geteilte Streifen, Logos)
OBS Big 3 http://[IP]/obs_big_3.php?Tisch=1 OBS Overlay groß - Style 3 (Logos, blaue Scores)
OBS Big 4 http://[IP]/obs_big_4.php?Tisch=1 OBS Overlay groß - Style 4 (Bordeaux/Maroon, Logos)
Hilfe (DE) http://[IP]/help_de.html Diese Dokumentation (Deutsch)
Help (EN) http://[IP]/help_en.html Documentation (English)

7 Tisch-Steuerung via URL

ParameterVerhalten
index.php Freie Auswahl: Tisch 1-8 wählbar im Setup
index.php?Tisch=0 Admin-Modus: Tisch-Auswahl ausgeblendet
index.php?Tisch=1 Fixer Modus: Tisch fest vorgegeben (1-8)

Farbschema via URL NEU

Das Farbschema kann direkt über einen URL-Parameter gesetzt werden. Sowohl deutsche als auch englische Bezeichnungen werden akzeptiert:

Parameter (DE)Parameter (EN)Farbschema
?theme=gelb ?theme=yellow Standard (Gelb/Gold)
?theme=blau ?theme=blue Blau/Cyan
?theme=gruen ?theme=green Grün
?theme=weiss ?theme=white Hell/Light Mode

Sprache via URL NEU

Die Sprache kann direkt über einen URL-Parameter gesetzt werden:

ParameterSprache
?lang=de Deutsch
?lang=en Englisch
Tipp: Parameter können kombiniert werden, z.B. http://[IP]/?Tisch=1&theme=blau&lang=en

8 OBS Studio Integration NEU

Einrichtung in OBS

  1. In OBS: Quellen → + → Browser
  2. Name eingeben (z.B. "Scoreboard Tisch 1")
  3. URL eingeben: http://[SERVER-IP]/obs_big.php?Tisch=1
  4. Breite: 1400 (big) oder 700 (small)
  5. Höhe: 150 (big) oder 100 (small)
  6. "Benutzerdefiniertes CSS" leer lassen
  7. "Aktualisieren wenn Szene aktiv" aktivieren

Empfohlene Größen

VersionBreiteHöheVerwendung
obs_small.php 700 px 100 px Kompakte Anzeige, Ecke des Streams
obs_small_2.php 700 px 120 px Getrennte Felder, schwarze Scores, roter Streifen
obs_small_3.php 700 px 120 px Getrennte Felder, blaue Scores
obs_small_4.php 500 px 120 px Bordeaux/Maroon Design, kompakt
obs_big.php 1400 px 150 px Vollbreite, unterer Bildschirmrand
obs_big_2.php 1400 px 180 px Geteilte Streifen (Name/Verein), Logos, rote Akzente
obs_big_3.php 1400 px 150 px Logos, blaue Scoreboxen
obs_big_4.php 1200 px 150 px Bordeaux/Maroon Design, Logos, gelbe Akzente

Vereins-Logos einrichten

Logos werden automatisch angezeigt, wenn eine PNG-Datei mit dem exakten Vereinsnamen existiert:

# Logo-Ordner erstellen
sudo mkdir -p /var/www/billard/logos

# Logos hochladen (Beispiele)
/var/www/billard/logos/BC Berlin.png
/var/www/billard/logos/BC Bremen.png
/var/www/billard/logos/Imperium.png
Tipp: Logo-Dateien sollten quadratisch sein (z.B. 200x200 px) mit transparentem Hintergrund (PNG). Der Dateiname muss exakt dem Vereinsnamen entsprechen!
Problemlösung OBS: Falls das Scoreboard in OBS nicht vollständig angezeigt wird:

9 Spielzeit & Header-Anzeige NEU v4.2

Während eines laufenden Spiels werden im Header die Disziplin und die laufende Spielzeit angezeigt.

Funktionen

Tipp: Die Spielzeit wird auch an die OBS-Textdateien übermittelt (als Startzeit).

10 OBS Textdateien NEU v4.2

Zusätzlich zu den Browser-Overlays werden automatisch einzelne TXT-Dateien im Ordner /obs/ generiert. Diese können als Browser-Quellen in OBS eingebunden werden.

Verfügbare Dateien pro Tisch

DateiInhaltBeispiel
table1_discipline.txtDisziplin14/1
table1_raceto.txtRace to100
table1_player1.txtSpieler 1 NameMax Mustermann
table1_player2.txtSpieler 2 NameJohn Doe
table1_club1.txtVerein Spieler 1BC Berlin
table1_club2.txtVerein Spieler 2BC Bremen
table1_score1.txtPunkte Spieler 142
table1_score2.txtPunkte Spieler 238
table1_innings1.txtAufnahmen Spieler 112
table1_innings2.txtAufnahmen Spieler 211
table1_highseries1.txtHöchstserie Spieler 115
table1_highseries2.txtHöchstserie Spieler 29
table1_series1.txtLaufende Serie Spieler 13
table1_series2.txtLaufende Serie Spieler 20
table1_gd1.txtGD Spieler 13.50
table1_gd2.txtGD Spieler 23.45
table1_starttime.txtStartzeit14:30:00
table1_matchtime.txtSpielzeit (HH:MM)01:23
table1_balls.txtBall-Zählung (One Pocket / Bank Pool)5/8 - 3/8

Einrichtung in OBS (Browser-Quelle)

Die empfohlene Methode ist die Verwendung einer Browser-Quelle mit dem Plugin xObsBrowserAutoRefresh:

  1. Plugin xObsBrowserAutoRefresh installieren
  2. In OBS: Quellen → + → Browser
  3. URL eingeben: http://[SERVER-IP]/obs/table1_score1.txt
  4. Breite/Höhe nach Bedarf anpassen
  5. Benutzerdefiniertes CSS für die Textformatierung eintragen:
body {
    color: #ffffff;
    font-family: "Arial";
    font-size: 40px;
    font-weight: bold;
    text-shadow: 2px 2px 4px #000000;
    overflow: hidden;
}
  1. Rechtsklick auf die Browser-Quelle → Filter
  2. Über + den Filter "Browser Auto-refresh" hinzufügen
  3. Intervall auf 15 Sekunden stellen
Tipp: Über das CSS können Schriftart, Größe, Farbe und Schatten frei angepasst werden. Jede Textdatei kann als eigene Browser-Quelle mit individuellem Styling eingebunden werden.
Hinweis: Die Dateien werden alle 15 Sekunden aktualisiert (konfigurierbar über OBS_INTERVAL in config.php). Der Ordner /obs/ wird automatisch erstellt.
matchtime: Zeigt die verstrichene Spielzeit im Format HH:MM (ohne Sekunden). Wird nur bei laufendem Spiel berechnet, sonst "-".
balls: Zeigt die Ball-Zählung nur bei One Pocket und Bank Pool Disziplinen (z.B. "5/8 - 3/8"). Bei allen anderen Disziplinen wird "-" ausgegeben.
Tipp: Die Textdateien sind ideal für individuelle OBS-Layouts, bei denen Name, Score und Statistiken frei positioniert werden sollen.

11 Winner-/Wechselbreak

Bei 8-Ball, 9-Ball und 10-Ball kann im Setup der Break-Modus gewählt werden:

ModusVerhalten
Wechselbreak Der Anstoß wechselt nach jeder Aufnahme (+ oder -) zum anderen Spieler
Winnerbreak Der Gewinner eines Racks behält den Anstoß (wechselt nur bei +)

Ablauf

  1. Im Setup Disziplin wählen (8-Ball, 9-Ball oder 10-Ball)
  2. Break-Modus auswählen (Wechselbreak oder Winnerbreak)
  3. Beim Klick auf SPIEL STARTEN erscheint das Popup "Wer beginnt mit dem Anstoß?"
  4. Spieler auswählen - der aktive Spieler wird mit schwarzem Rahmen markiert
  5. Bei REMATCH wird erneut gefragt, wer beginnt
Tipp: Bei Spielende werden alle Eingabe-Buttons deaktiviert. Nur Undo und Restart bleiben aktiv.

12 Hilfe-Buttons (Regeln & Aufbau)

Alle Disziplinen (14/1, 8-Ball, 9-Ball, 10-Ball) haben einen Hilfe-Button (blaues Fragezeichen) in der Steuerungsleiste.

Inhalte pro Disziplin

DisziplinSeitenBesonderheiten
14/1 Endlos 5 Regelseiten + 7 Beispiele Wiederaufbau-Beispiele mit Vorher/Nachher-SVGs
8-Ball 4 Regelseiten Aufbaubild (SVG) direkt auf der "Aufbau & Anstoß"-Seite
9-Ball 4 Regelseiten Aufbaubild (SVG) direkt auf der "Aufbau & Anstoß"-Seite
10-Ball 4 Regelseiten Aufbaubild (SVG) direkt auf der "Aufbau & Anstoß"-Seite
Tipp: Die Aufbau-SVGs liegen im Ordner /regeln/. Das Popup ist scrollbar und hat Vor/Zurück-Buttons zur Navigation.

13 GD (Gesamtdurchschnitt)

Der GD (Gesamtdurchschnitt = Punkte / Aufnahmen) wird bei 14/1-Spielen an mehreren Stellen angezeigt:

OrtAnzeigeBeschreibung
Laufendes Spiel GD: X.XX Live-GD in der Stats-Zeile unter dem Score (Aufn | Serie | HS | GD)
Spielerbilanz Bester GD: X.XX Höchster jemals erreichter GD auf der Spielerkarte
Champions Bester GD Neue Champion-Karte für den Spieler mit dem höchsten GD
Historie Aufnahmen: X / HS: X / GD: X.XX GD pro Spieler in jedem 14/1-Eintrag der Spielhistorie
Berechnung: GD = Punkte / Aufnahmen (auf 2 Dezimalstellen gerundet). Der beste GD wird bei Spielende automatisch gespeichert.

14 14/1 Verlauf (Spieler-Statistik)

Jeder Spieler hat nun ein Verlaufsdiagramm für seine 14/1 Spiele. Das Diagramm zeigt die Entwicklung von Höchstserie und GD über die letzten 20 Partien.

So öffnest du den Verlauf

  1. Navigiere zur Spieler-Datenbank
  2. Klicke auf eine Spielerkarte
  3. Im Popup auf "14/1 Verlauf" (blauer Button) klicken

Diagramm-Erklärung

ElementFarbeY-AchseBeschreibung
Höchstserie Grün Links (0-100) Beste Serie pro Spiel
GD Blau Rechts (0-20) Gesamtdurchschnitt pro Spiel
X-Achse - - Letzte 20 Spiele (-20 bis 0)

Statistik-Box

Unter dem Diagramm werden folgende Werte angezeigt:

Tipp: Der Verlauf zeigt nur 14/1-Spiele. Bei Spielern ohne 14/1-Historie erscheint "Keine 14/1 Spiele gefunden."

15 Mehrsprachigkeit (i18n)

Das Scoreboard unterstützt nun vollständige Mehrsprachigkeit. Die Sprache kann jederzeit in der Sidebar umgeschaltet werden.

Unterstützte Sprachen

SpracheCodeDatei
Deutschde/assets/lang/de.json
Englischen/assets/lang/en.json

Sprachwechsel

  1. Sidebar öffnen (Burger-Menü)
  2. Unten auf DE oder EN klicken
  3. Die gesamte UI wird sofort übersetzt
Tipp: Die Spracheinstellung wird im Browser gespeichert und beim nächsten Besuch automatisch wiederhergestellt.

16 14/1 Live-Aufnahmen

Während eines 14/1-Spiels kann jederzeit eine Übersicht aller bisherigen Aufnahmen angezeigt werden.

So öffnest du die Übersicht

  1. Während eines 14/1-Spiels
  2. Klicke auf den History-Button (Uhr-Symbol) in der Steuerungsleiste
  3. Ein Popup zeigt alle bisherigen Aufnahmen mit Punkten und Zwischenständen

Angezeigte Informationen

SpalteBeschreibung
Aufn.Nummer der Aufnahme
Punkte (links)Punkte von Spieler 1 in dieser Aufnahme
StandAktueller Zwischenstand nach der Aufnahme
Punkte (rechts)Punkte von Spieler 2 in dieser Aufnahme
Tipp: Ideal zur Kontrolle während des Spiels und für Schiedsrichter.

17 Neue Disziplinen

Rotation

61 Punkte-Spiel mit der 3-Foul-Regel. Verliert ein Spieler 3 Fouls in Folge, verliert er das Spiel.

One Pocket

Kugeln in die eigene Tasche versenken. Standardziel: 8 Kugeln.

Bank Pool 9-Ball

Nur Bankshots erlaubt. Ziel: 5 Kugeln.

Bank Pool 15-Ball

Nur Bankshots mit allen 15 Kugeln. Ziel: 8 Kugeln.

Doppel-Modi

8-Ball, 9-Ball und 10-Ball können als Doppel (2 vs 2) gespielt werden. Die Teamnamen werden automatisch kombiniert.

18 Equal Offense Training

Pool 14/1 Level (1-4)

LevelFehlerGDZielMaximum
Level 124120150
Level 216120150
Level 3012120150
Level 4017170200
Level 4 - Besonderheiten (v3.5):

9-Ball Level (1-3)

LevelFehlerStartbälleZielMaximum
Level 1244090
Level 2166090
Level 3099090

Bowlliards NEU

Bowling-Wertung auf dem Pooltisch. Einzelspieler-Training mit klassischer Bowling-Punkteberechnung.

EigenschaftWert
Frames10
Kugeln pro Frame10
Max. Versuche pro Frame2 (Frame 10: bis zu 3)
Maximalpunktzahl300 (12 Strikes)

Wertung

ErgebnisSymbolPunkte
StrikeX (rot)10 + nächste 2 Würfe
Spare/ (blau)10 + nächster 1 Wurf
OpenZahlSumme der versenkten Kugeln

10. Frame Sonderregeln

Tipp: Die Bowling-Scorecard zeigt alle 10 Frames mit laufenden Summen. Der aktive Ball wird hervorgehoben.

19 PIN-System

PIN-TypStandardVerwendung
Master-PIN 12345 Spieler verwalten, Stats löschen, History-Einträge löschen
Spieler-PIN 000000 Training starten
Achtung: Master-PIN ändern in assets/js/app.js (Zeile 7): masterPin: "12345"

20 API-Endpunkte

EndpunktBeschreibung
api.php?action=load Alle Spielerdaten laden
api.php?action=save Daten speichern (POST)
api.php?action=get_tables Live-Tischdaten für Monitor/OBS
api.php?action=update_table Tisch-Update senden (POST)

21 Fehlersuche

ProblemLösung
HTTP 500 Schreibrechte prüfen (Schritt 4)
OBS zeigt nichts Browser-Quelle Breite erhöhen, CSS leer lassen
Logo nicht sichtbar Dateiname muss exakt dem Vereinsnamen entsprechen
Training-Buttons reagieren nicht Browser-Konsole (F12) prüfen, training.js vollständig?
Debug-Befehle:
sudo tail -f /var/log/nginx/error.log - Fehler-Log

22 Backup

# Backup erstellen
cd /var/www
sudo tar -czf billard-backup-$(date +%Y%m%d).tar.gz billard/

# Backup wiederherstellen
sudo tar -xzf billard-backup-20250127.tar.gz

Version History


Pro Billiard Scoreboard System v4.2 | Entwickelt für Billard-Spieler