Nächster Showdown

Hier begann die intensivere Arbeit an der lokalen Tournament Engine.
Beispiel:
Team A
│
└── FREILOS
↓
Runde 2Ein lokales Turnier sollte auch dann korrekt funktionieren, wenn die Teilnehmerzahl keine Zweierpotenz ist.
v12 hat die Freiloslogik weiter ausgebaut.
Beispiel:
Team A 1
TBD 0
→ Team A gewinnt automatischDamit wurde die Grundlage für die spätere Unterscheidung zwischen:
gelegt.
v13 ergänzte die Möglichkeit, Freilose bewusst über das Adminpanel zu setzen.
Im Adminpanel konnte für ein Match ein Freilos gesetzt werden.
Dabei galt:
Ein Freilos ist nur möglich, wenn genau ein Teilnehmer vorhanden ist.
Also:
Team A
TBD→ Freilos möglich
aber:
Team A
Team B→ kein Freilos
Damit konnte der Admin ein lokales Turnier auch manuell korrigieren, ohne direkt die Datenbank bearbeiten zu müssen.
Hier wurde die Bracket-Logik für Double Elimination weiterentwickelt.
TBD bleibt bestehen, solange die entsprechende Quelle noch nicht entschieden istBesonders wichtig:
Winners Match
│
├── Gewinner → nächstes Winners Match
│
└── Verlierer → Lower BracketEin noch nicht abgeschlossener Zuliefer-Match darf nicht einfach als fertiger Teilnehmer behandelt werden.
Das war die Grundlage für die späteren next_match-/next_loser_match-Verbindungen.
Hier ging es erstmals klar um die Darstellung.
Das Bracket sollte nicht mehr alles in einer gemeinsamen Fläche darstellen.
Gewünscht war:
WINNER BRACKET
────────────────────────
LOWER BRACKET
────────────────────────Das war der erste konkrete Schritt zur späteren vollständigen Trennung der beiden Bracket-Bereiche.
Winner- und Lower-Bracket wurden zu zwei vollständig getrennten HTML-/DOM-Bereichen.
Gewünschte Struktur:
┌───────────────────────────────────────┐
│ WINNERS BRACKET │
│ │
│ Match Match Match Final │
└───────────────────────────────────────┘
┌───────────────────────────────────────┐
│ LOWER BRACKET │
│ │
│ Match Match Match │
└───────────────────────────────────────┘Die Double-Elimination-Struktur sollte nicht mehr wie ein einzelner riesiger Bracket-Baum wirken.
v21 war ein weiterer Zwischenstand auf dem Weg zur eigentlichen getrennten Bracket-Ausgabe.
wurden zunehmend als unterschiedliche Bracket-Bereiche bzw. Phasen behandelt.
Hier wurde die Trennung noch konsequenter.
🏆 Winners Bracket
↓
🔻 Losers Bracket
↓
🏆 Grand FinalDie Matches wurden anhand von Informationen wie:
stage
identifier
match namezugeordnet.
Dadurch konnte unterschieden werden:
Die Anpassungen sollten sowohl für:
funktionieren.
Die Daten waren zu diesem Zeitpunkt bereits tatsächlich getrennt vorhanden.
Beispielsweise wurde bei einem Double-Elimination-Test festgestellt:
31 Winners Matches
30 Losers Matches
1 Grand FinalDas Problem war jetzt nicht mehr primär die Datenstruktur, sondern die korrekte visuelle Darstellung und Verbindung dieser Matches.
Jetzt wurde es wirklich sichtbar.
Damit war die Trennung nicht mehr nur ein CSS-/Layout-Konzept.
v24 war ein sehr wichtiger technischer Schritt.
Die Brackets wurden anhand echter Routingdaten verbunden:
next_match_id
next_slot
next_loser_match_id
next_loser_slotWinner Match 1
↓
Winner Match 3Loser Match 1
↓
Loser Match 3Die Position eines Teams wurde nicht mehr einfach anhand seiner visuellen Position geraten.
Das System wusste tatsächlich:
Gewinner dieses Matches geht in diesen Slot des nächsten Matches.
Die erste Version der neuen Linien war optisch nicht zufriedenstellend:
Deshalb wurde die Darstellung in v26 wieder korrigiert.
v26 war zunächst unser stabiler Bracket-Baseline-Stand.
Dieser Stand wurde von dir ausdrücklich als zufriedenstellend bestätigt.
Unterstützung für lokale Turniere wurde weiter ausgebaut:
Integration in den Nexpell Eventcalendar.
Aktive Bridge:
challonge/nexpell-eventcalendar-bridge.phpLokales Turnier:
/de/page/eventsystem/1Challonge-Turnier:
→ externe Challonge-Seite
Hier wurde der Adminbereich grundlegend verbessert.
Gruppenphase und KO konnten zu stark miteinander gekoppelt erzeugt werden.
GRUPPENPHASEwird separat erzeugt.
KO-PHASEwird erst freigeschaltet, wenn die Gruppenphase vollständig beendet ist.
75 / 112→ Gruppenphase aktiv
KO-PHASE
🔒 GESPERRTNach:
112 / 112→ KO wird freigeschaltet.
Neue Statusdarstellung:
Beim Testen wurde ein wichtiger Fehler entdeckt.
Ein zukünftiges Match:
Team A
TBDwurde teilweise als Freilos interpretiert.
Dadurch konnte ein Freilos über mehrere Runden weitergereicht werden, obwohl der vorgelagerte Matchpfad noch offen war.
Jetzt gilt:
TBD ≠ Freilos
Ein Match bleibt offen, wenn der zweite Teilnehmer noch aus einem nicht abgeschlossenen Match kommen kann.
Beispiel:
R1
Team A vs Team B
↓
OFFEN
R2
Team C vs TBD
↓
OFFENErst wenn der Zulieferpfad tatsächlich entschieden ist, kann das System prüfen, ob es sich um ein echtes Freilos handelt.
Die Checkbox:
bestehende KO-Phase ersetzen
wurde standardmäßig deaktiviert.
Damit muss der Admin bewusst entscheiden, wenn eine vorhandene KO-Phase ersetzt werden soll.
Das ist unser aktueller Stand. 👍
Hier wurde der letzte große Fehler aus den Tests behoben.
Bei:
6 Gruppen
×
2 Qualifikanten
=
12 Teamswurde der KO-Baum zuvor nicht vollständig aufgebaut.
Es fehlten spätere Matchplätze.
Der Generator baut jetzt den vollständigen Zielbaum.
Bei 12 Qualifikanten:
12 Qualifikanten
↓
16er Bracket
↓
8 Achtelfinals
↓
4 Viertelfinals
↓
2 Halbfinals
↓
1 FinaleDie fehlenden vier Plätze werden als echte Freilose behandelt.
Wichtig:
12 Qualifikanten
+
4 echte Byes
=
16er BracketWenn ein späterer Teilnehmer noch aus einem offenen Match kommt:
TBDbleibt er auch wirklich:
TBDund das Match wird nicht vorzeitig als Freilos abgeschlossen.
Damit ist die Entwicklung inzwischen ungefähr:
v10
│
├─ öffentliche Team-/Turnieransicht
│
v11
├─ lokale Bracket-Freilose
│
v12
├─ automatische Bye-Matches
│
v13
├─ manuelle Freilose im Adminpanel
│
v14
├─ Lower-Bracket-Zulieferung
│
v15
├─ Bracket-/Match-Stabilisierung
│
v16
├─ bestehende Match-/Freilosbasis
│
v17
├─ Winner + Lower untereinander
│
v18
├─ Bracket-Layout-Zwischenstand
│
v19
├─ Vorbereitung getrennte Bereiche
│
v20
├─ Winners/Losers getrennte DOM-Bereiche
│
v21
├─ weitere Trennung der Bracket-Phasen
│
v22
├─ Winners / Losers / Grand Final Zuordnung
│
v23
├─ separate Renderer
│
v24
├─ echtes Match-Routing
│
v25
├─ sichtbare Loser-Verbindungen
│
v26
├─ stabiler Bracket-Renderer
├─ Local Tournament Engine
└─ Eventcalendar-Integration
│
v27
├─ Gruppenphase separat generieren
└─ KO erst nach Gruppenabschluss
│
v28
├─ TBD ≠ Freilos
└─ KO-Replacement standardmäßig deaktiviert
│
v29
├─ vollständiger KO-Baum
├─ 12 → 16 korrekt
├─ 4 echte Freilose
└─ TBD bleibt bis zur Entscheidung offen