Esports-Turnierbaum mit Doppel-K.-o. erstellen
Verwandeln Sie eine geordnete Teamliste in einen vollständigen Doppel-K.-o.-Turnierbaum, ohne Runden von Hand zu zeichnen.
Im Browser ausführen – kostenlos
Der Generator übernimmt die Reihenfolge als Setzliste, erweitert das Feld auf die nächste Zweierpotenz, vergibt erforderliche Freilose und liefert verknüpfte Sieger- und Verliererrunden. Jeder spätere Platz nennt das Spiel und Ergebnis, aus dem er gespeist wird. Das große Finale enthält zudem das bedingte Reset-Spiel, falls der Finalist der Verliererrunde das erste Titelspiel gewinnt. Das deterministische Ergebnis eignet sich für Turniersoftware, Übertragungsgrafiken, Anmeldesysteme und die Kontrolle vor einem Esports-Event.
Setzliste vorbereiten und Freilose verstehen
Geben Sie die Teams von der stärksten bis zur schwächsten Setzposition ein. Der erste Name erhält Setzplatz eins, der zweite Platz zwei und so weiter; der Generator mischt diese Rangfolge niemals zufällig. Jeder Name muss sichtbaren Text enthalten und unabhängig von Groß- und Kleinschreibung eindeutig sein, da nicht unterscheidbare Teilnehmer die Ergebniszuordnung mehrdeutig machen würden. Ein Doppel-K.-o.-Feld lässt sich am besten als Zweierpotenz darstellen: Sechs Teams belegen acht Plätze, während acht unverändert bleiben. Leere Plätze erscheinen als ausdrückliche Freilosobjekte und nicht als erfundene Gegner. Die kanonische Platzierung trennt die stärksten gesetzten Teams möglichst lange. Ein Team mit Freilos rückt ohne Spiel weiter, doch der Platz der ersten Runde bleibt erhalten, damit Kennungen und nachgelagerte Verweise stabil sind. Das hilft besonders bei einer ungeraden Meldezahl oder wenn ein später Rückzug das geplante Teilnehmerfeld verkleinert.
Verknüpfungen der Sieger- und Verliererrunde lesen
Die Ausgabe gliedert winners_bracket und losers_bracket in nummerierte Runden. Erstrundenspiele enthalten gesetzte Teams oder Freilose. Spätere Spiele enthalten Quellenobjekte, weil ihre Teilnehmer von Ergebnissen abhängen: kind bestimmt, ob ein Sieger oder Verlierer einzieht, match bezeichnet das vorherige Spiel und slot bewahrt die Seite der neuen Paarung. Niederlagen aus der Siegerrunde speisen die Verliererrunde stufenweise. Dazwischen verkleinern Konsolidierungsrunden das verbleibende Feld, bevor die nächste Gruppe hinzukommt. So scheidet ein Team erst nach seiner zweiten sportlichen Niederlage aus. Kennungen wie W2M1 und L3M2 sind deterministisch. Ihre Anwendung kann Ergebnisse unter diesen Schlüsseln speichern, Quellen nach Spielende auflösen und die Struktur als Liste, klassischen Turnierbaum oder Sendegrafik darstellen. Die Struktur beschreibt nur den Verlauf; sie sagt keine Sieger voraus und erfindet keine Spielstände.
Meisterschaft abwickeln und Ergebnis integrieren
Das Objekt grand_final enthält das erste Titelspiel und ein bedingtes Reset-Spiel. In GF1 trifft der ungeschlagene Finalist auf den Überlebenden der Verliererrunde. Gewinnt der ungeschlagene Teilnehmer, endet das Turnier, weil sein Gegner nun zweimal verloren hat. Gewinnt der Finalist der Verliererrunde, haben beide eine Niederlage und GF2 entscheidet unter gleichen Bedingungen über den Titel. Die ausdrückliche Bedingung verhindert den häufigen Fehler, nur ein Finale einzuplanen. Speichern Sie zur Integration die gesamte Antwort als Turnierdefinition und ergänzen Sie in Ihrem System Termine, Server, Ergebnisse und Status anhand der stabilen Spielkennungen. Lösen Sie eine Quelle erst nach dem endgültigen Abschluss des referenzierten Spiels auf und behandeln Sie Freilose nach Ihrem Regelwerk. Der Generator nutzt kein Netzwerk und speichert keine Teamliste. Im Browser ist er kostenlos; für automatisierte Anmeldung oder Eventverwaltung gilt bei einer API-Anfrage der angezeigte Grundpreis von $0.002.
Anwendungsfälle
Online-Qualifikation setzen
Wandeln Sie die Meldeliste in verknüpfte Runden um, auch wenn die endgültige Anzahl Freilose erfordert.
Turnierbaum für eine Übertragung erstellen
Steuern Sie Grafiken mit stabilen Spielkennungen und Quellen, ohne jede Runde manuell neu zu verbinden.
Turniersoftware initialisieren
Speichern Sie zuerst die deterministische Struktur und ergänzen Sie danach Termine, Spielstände, Karten und Status.
Häufige Fragen
Wie viele Teams werden benötigt?
Erforderlich sind mindestens vier eindeutige, nicht leere Teamnamen; höchstens 64 Teams sind zulässig.
Wie werden die Teams gesetzt?
Die Eingabereihenfolge ist die Setzliste. Das erste Team erhält Platz eins; die kanonische Anordnung trennt die Favoriten.
Was geschieht, wenn die Teamzahl keine Zweierpotenz ist?
Das Feld wächst auf die nächste Zweierpotenz, und ungenutzte Plätze werden als ausdrückliche Freilose markiert.
Enthält der Turnierbaum ein Reset-Finale?
Ja. GF2 findet nur statt, wenn der Finalist der Verliererrunde den ungeschlagenen Finalisten in GF1 besiegt.
Plant das Werkzeug Spielzeiten oder bestimmt es Sieger?
Nein. Es liefert Struktur und Fortschrittsquellen; Termine, Spielstände und Entscheidungen verwaltet Ihr System.
Was kostet eine API-Anfrage?
Der Grundpreis je API-Anfrage beträgt $0.002. Im Browser können Sie den Turnierbaum kostenlos erzeugen.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}'const res = await fetch("https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "sports.esports_bracket_seed_matchups",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |