20eSportsGamingcommunity since 2010

03

October

2026

Organisation

Eventsystem Changelog v10-v29

News created by: STEVEE STEVEE - Status: 03.10.2026 17:06

20ESPORTS Eventsystem – vollständiger Changelog v10 → v29


v10 – Öffentliche Teamansicht erweitert

Teamseite

  • Öffentliche Teamansicht deutlich erweitert
  • Teamkopf integriert
  • Teamname / Teaminformationen
  • Mitgliederübersicht
  • Rollen der Mitglieder
  • Plattform / Land der Mitglieder
  • Turnierhistorie des Teams

Turnierhistorie

  • Teilnahmen an Turnieren werden angezeigt
  • Platzierungen
  • Siege
  • Spiele
  • Turniernamen anklickbar

Navigation

  • Turnier-/Teamnavigation bleibt innerhalb des bestehenden Eventsystem-/iframe-Kontexts
  • Kein unnötiges Öffnen neuer Tabs

Sicherheit

  • Öffentliche Teaminformationen sichtbar
  • Verwaltungsfunktionen weiterhin geschützt

Darstellung

  • Responsive Anpassungen
  • CSS für die öffentliche Teamansicht erweitert

v11 – Lokale Bracket-Freilose

Hier begann die intensivere Arbeit an der lokalen Tournament Engine.

Neu

  • Freilose bei lokalen Single-Elimination-Brackets
  • Freilose werden in Runde 1 verteilt
  • Bye-Teams werden automatisch in die nächste Runde weitergeleitet

Beispiel:

Team A
  │
  └── FREILOS
        ↓
      Runde 2

Ziel

Ein lokales Turnier sollte auch dann korrekt funktionieren, wenn die Teilnehmerzahl keine Zweierpotenz ist.


v12 – Bye-Matches / automatische Gewinner

v12 hat die Freiloslogik weiter ausgebaut.

Neu

  • Matches mit nur einem Teilnehmer werden als mögliche Bye-Matches erkannt
  • Bye-Matches können im Adminpanel/API verarbeitet werden
  • Ein einzelner Teilnehmer kann automatisch als Sieger gesetzt werden
  • Score kann entsprechend gesetzt werden

Beispiel:

Team A   1
TBD      0

→ Team A gewinnt automatisch

Wichtig

Damit wurde die Grundlage für die spätere Unterscheidung zwischen:

  • echtem Freilos
  • normalem Match
  • noch unbekanntem Teilnehmer

gelegt.


v13 – Manuelle Freilose

v13 ergänzte die Möglichkeit, Freilose bewusst über das Adminpanel zu setzen.

Neu

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

Hintergrund

Damit konnte der Admin ein lokales Turnier auch manuell korrigieren, ohne direkt die Datenbank bearbeiten zu müssen.


v14 – Double-Elimination / Lower-Bracket-Zulieferung

Hier wurde die Bracket-Logik für Double Elimination weiterentwickelt.

Neu

  • Lower-Bracket-Matches bekommen ihre Teilnehmer aus den richtigen vorherigen Matches
  • Verlierer eines Winners-Bracket-Matches werden in das entsprechende Lower-Bracket-Match geleitet
  • TBD bleibt bestehen, solange die entsprechende Quelle noch nicht entschieden ist

Besonders wichtig:

Winners Match
      │
      ├── Gewinner → nächstes Winners Match
      │
      └── Verlierer → Lower Bracket

TBD-Logik

Ein 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.


v15 – Bracket-/Match-Logik weiter stabilisiert

  • Die lokale Match-/Bracket-Engine wurde weiter stabilisiert
  • die vorher eingeführte Bye- und Matchlogik blieb erhalten
  • die Entwicklung ging anschließend stärker in Richtung der visuellen Trennung von Winners und Lower Bracket

v16 – Match-/Freiloslogik als Basisstand


v17 – Winners und Lower Bracket untereinander

Hier ging es erstmals klar um die Darstellung.

Neu

Das Bracket sollte nicht mehr alles in einer gemeinsamen Fläche darstellen.

Gewünscht war:

WINNER BRACKET
────────────────────────


LOWER BRACKET
────────────────────────

Layout

  • Winners Bracket oben
  • Lower Bracket darunter
  • primär Layoutänderung

Das war der erste konkrete Schritt zur späteren vollständigen Trennung der beiden Bracket-Bereiche.


v18 – Bracket-Darstellung weiter angepasst


v19 – Vorbereitung auf getrennte Bracket-Bereiche


v20 – Winners / Lower als getrennte Bereiche

Neu

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             │
└───────────────────────────────────────┘

Jeder Bereich

  • eigener Rahmen
  • eigene Bracket-Fläche
  • eigener horizontaler Scrollbereich
  • unabhängig vom jeweils anderen Bereich

Ziel

Die Double-Elimination-Struktur sollte nicht mehr wie ein einzelner riesiger Bracket-Baum wirken.


v21 – Bracket-Struktur weiter vorbereitet

v21 war ein weiterer Zwischenstand auf dem Weg zur eigentlichen getrennten Bracket-Ausgabe.

  • Winners
  • Losers
  • Grand Final

wurden zunehmend als unterschiedliche Bracket-Bereiche bzw. Phasen behandelt.


v22 – Winners / Losers / Grand Final getrennt vorbereiten

Hier wurde die Trennung noch konsequenter.

Zielstruktur

🏆 Winners Bracket

       ↓

🔻 Losers Bracket

       ↓

🏆 Grand Final

Technische Grundlage

Die Matches wurden anhand von Informationen wie:

stage
identifier
match name

zugeordnet.

Dadurch konnte unterschieden werden:

  • Winners-Bracket-Matches
  • Losers-Bracket-Matches
  • Grand Final

Aktive und archivierte Turniere

Die Anpassungen sollten sowohl für:

  • aktives Turnier
  • archiviertes Turnier

funktionieren.

Übergang zu v23

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 Final

Das Problem war jetzt nicht mehr primär die Datenstruktur, sondern die korrekte visuelle Darstellung und Verbindung dieser Matches.


v23 – Winners und Losers tatsächlich getrennt gerendert

Jetzt wurde es wirklich sichtbar.

Neu

  • eigener Winners-Bracket-Renderer
  • eigener Losers-Bracket-Renderer
  • separate Darstellung der beiden Brackets
  • Grand Final separat

Damit war die Trennung nicht mehr nur ein CSS-/Layout-Konzept.


v24 – Echtes Match-Routing

v24 war ein sehr wichtiger technischer Schritt.

Match-Verbindungen

Die Brackets wurden anhand echter Routingdaten verbunden:

next_match_id
next_slot

next_loser_match_id
next_loser_slot

Winners

Winner Match 1
       ↓
Winner Match 3

Losers

Loser Match 1
       ↓
Loser Match 3

Ergebnis

Die 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.


v25 – Losers-Bracket-Verbindungen

Neu

  • Verbindungen zwischen Winners und Losers besser dargestellt
  • Loser-Routing visualisiert
  • Matchlinien anhand der Routingdaten gezeichnet

Problem

Die erste Version der neuen Linien war optisch nicht zufriedenstellend:

  • unterschiedliche Linienfarben
  • Loser-Linien teilweise zu schwach
  • insgesamt weniger übersichtlich

Deshalb wurde die Darstellung in v26 wieder korrigiert.


v26 – Stabiler Bracket-Stand + Eventcalendar

v26 war zunächst unser stabiler Bracket-Baseline-Stand.

Bracket

Behoben

  • SVG wurde nicht mehr vom Bracket-Container abgeschnitten
  • horizontale Verbindungen funktionieren über die gesamte Bracket-Breite
  • Scrollbereich korrekt
  • Matchlinien wieder neutral
  • Winners-/Losers-Verbindungen verständlich
  • keine unnötigen unterschiedlichen Linienfarben

Dieser Stand wurde von dir ausdrücklich als zufriedenstellend bestätigt.


Local Tournament Engine

Unterstützung für lokale Turniere wurde weiter ausgebaut:

  • Single Elimination
  • Double Elimination
  • Gruppenphase
  • Round Robin
  • Freilose
  • Winner-Weiterleitung
  • Loser-Weiterleitung
  • Match-Routing

Eventcalendar

Integration in den Nexpell Eventcalendar.

Bridge

Aktive Bridge:

challonge/nexpell-eventcalendar-bridge.php

Verhalten

Lokales Turnier:

/de/page/eventsystem/1

Challonge-Turnier:

→ externe Challonge-Seite

Zusätzlich

  • Eventcalendar erkennt Turnier-Events
  • interne Marker werden aus der öffentlichen Darstellung entfernt
  • bestehende normale Eventcalendar-Einträge bleiben normale Events

v27 – Phasen getrennt generieren

Hier wurde der Adminbereich grundlegend verbessert.

Vorher

Gruppenphase und KO konnten zu stark miteinander gekoppelt erzeugt werden.

Jetzt

Phase 1

GRUPPENPHASE

wird separat erzeugt.

Phase 2

KO-PHASE

wird erst freigeschaltet, wenn die Gruppenphase vollständig beendet ist.


Beispiel

75 / 112

→ Gruppenphase aktiv

KO-PHASE
🔒 GESPERRT

Nach:

112 / 112

→ KO wird freigeschaltet.


Adminpanel

Neue Statusdarstellung:

  • Phase 1 – Gruppenphase
  • Phase 2 – KO-Phase
  • Anzahl fertiger Matches
  • Anzahl Gesamtmatches
  • aktiv / abgeschlossen / gesperrt
  • KO-Generator

v28 – Freilos und TBD sauber getrennt

Beim Testen wurde ein wichtiger Fehler entdeckt.

Problem

Ein zukünftiges Match:

Team A
TBD

wurde teilweise als Freilos interpretiert.

Dadurch konnte ein Freilos über mehrere Runden weitergereicht werden, obwohl der vorgelagerte Matchpfad noch offen war.

v28

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
      ↓
    OFFEN

Erst wenn der Zulieferpfad tatsächlich entschieden ist, kann das System prüfen, ob es sich um ein echtes Freilos handelt.


Adminpanel zusätzlich

Die Checkbox:

bestehende KO-Phase ersetzen

wurde standardmäßig deaktiviert.

Damit muss der Admin bewusst entscheiden, wenn eine vorhandene KO-Phase ersetzt werden soll.


v29 – vollständiger KO-Baum und korrekte 12 → 16 Qualifikation

Das ist unser aktueller Stand. 👍

Hier wurde der letzte große Fehler aus den Tests behoben.

Problem

Bei:

6 Gruppen
×
2 Qualifikanten
=
12 Teams

wurde der KO-Baum zuvor nicht vollständig aufgebaut.

Es fehlten spätere Matchplätze.


v29

Der Generator baut jetzt den vollständigen Zielbaum.

Bei 12 Qualifikanten:

12 Qualifikanten
       ↓
16er Bracket
       ↓
8 Achtelfinals
       ↓
4 Viertelfinals
       ↓
2 Halbfinals
       ↓
1 Finale

Vier echte Freilose

Die fehlenden vier Plätze werden als echte Freilose behandelt.

Wichtig:

12 Qualifikanten
+
4 echte Byes
=
16er Bracket

TBD bleibt TBD

Wenn ein späterer Teilnehmer noch aus einem offenen Match kommt:

TBD

bleibt er auch wirklich:

TBD

und das Match wird nicht vorzeitig als Freilos abgeschlossen.


Aktueller Stand v29

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

(6 Views)

Match Center

Der nächste Termin im Rampenlicht.

Platzhalter / Platzhalter

Nächster Showdown

20eSports CS2
VS
Platzhalter
Thu · 23:59 Uhr Platzhalter Platzhalter
Match ansehen