1. Cel

Stworzenie uniwersalnego systemu do obsługi turniejów dartowych, który może być wykorzystany zarówno do pojedynczej imprezy, jak i do różnych formatów rozgrywek.

2. Turniej jest konfigurowalny

Turniej nie ma jednego z góry ustalonego schematu.

Typ turnieju powstaje z predefiniowanych klocków/faz, które można:

  • wybierać,
  • konfigurować,
  • łączyć,
  • pomijać,
  • a w razie potrzeby wykorzystywać wielokrotnie.

Przykładowo:

Round Robin → Classification → Seeding → Playoff → Final

albo:

Round Robin → Classification → Main Playoff → Lucky Losers → Secondary Playoff → Final

Gotowe typy turniejów będą jedynie szablonami złożonymi z tych klocków.

3. Liczba zawodników jest zmienna

System od początku musi obsługiwać różne liczby uczestników:

30 → 50 → 200 → więcej

Nie zakładamy konkretnej liczby zawodników ani wielkości drabinki.

Przypadki takie jak:

  • nieparzysta liczba zawodników,
  • liczba niepasująca do liczby grup,
  • konieczność zastosowania bye,

są normalnymi przypadkami systemu, a nie błędami.

4. Zasady ustala organizator

System nie wymyśla zasad turnieju.

Organizator podczas konfiguracji określa m.in.:

  • format,
  • liczbę grup,
  • liczbę zawodników w grupie,
  • liczbę zawodników awansujących,
  • zasady rozstawienia,
  • zasady tie-break,
  • sposób kwalifikacji,
  • format kolejnych faz,
  • zasady gry.

Po rozpoczęciu turnieju ustalone zasady powinny być odpowiednio chronione przed przypadkowymi zmianami.

5. Konfigurowalność nie może komplikować obsługi

System ma być elastyczny, ale domyślne wartości mają pozwalać na szybkie rozpoczęcie meczu.

Użytkownik, który chce po prostu rozegrać standardowy mecz, nie powinien przeklikiwać kilkunastu ustawień.

Model:

wartości domyślne ↓ preset ↓ zasady turnieju ↓ ewentualne ustawienia fazy/meczu

Czyli:

„Chcę po prostu zagrać” → minimum kliknięć.

6. Rozstawienie jest osobnym, wielokrotnie używanym mechanizmem

Rozstawienie nie jest jednorazową czynnością na początku turnieju.

Może wystąpić:

  • przed pierwszą fazą,
  • po Round Robin,
  • przed Playoff,
  • przed kolejną drabinką,
  • przed dowolną fazą, która tego wymaga.

Rozstawienie może być:

ręczne — organizator zaznacza zawodników,

lub w przyszłości:

automatyczne — np. na podstawie rankingu.

Rozstawienie jest związane z konkretną fazą/przejściem, a nie na stałe z zawodnikiem.

7. Ranking i tie-break są elementami zasad

System musi być przygotowany na sytuacje, w których standardowe kryteria nie pozwalają jednoznacznie ustalić kolejności.

Przykład:

A = 6 pkt, +8 B = 6 pkt, +8 C = 6 pkt, +8

Organizator wybiera sposób rozstrzygnięcia.

Domyślna metoda: złoty leg.

Inne metody mogą być dodawane jako opcje. gdzieś wyżej wymieniliśmy te opcje - dodajmy je od razu

8. System turniejowy i system gry są rozdzielone

Turniej określa:

kto, z kim, kiedy i w jakiej fazie gra.

Klocek gry określa:

jak przebiega sam mecz i jak liczony jest wynik.

Podstawowym klockiem gry będzie:

01

z domyślnym presetem:

501 / Straight In / Double Out zrobiłbym straight i straight, a opcje double dodał obok jako przyciski

Parametry będą jednak konfigurowalne, m.in.:

  • 301 / 501 / 701 / ...
  • Straight In / Double In,
  • Straight Out / Double Out,
  • legi,
  • sety,
  • limit rund,
  • zasady bust,
  • statystyki.

9. Jeden silnik danych — wiele interfejsów

System ma być przygotowany do obsługi przez:

  • organizatora,
  • sędziego,
  • publiczny interfejs,
  • telebim,
  • a później tablety przy tarczach.

Tablet nie będzie osobnym systemem. Będzie kolejnym interfejsem korzystającym z tego samego silnika gry i tych samych danych.

10. System ma być rozwijany etapami

Najpierw powstaje rdzeń logiczny, później interfejsy dodatkowe.

Priorytet:

klocki turniejowe ↓ mecze ↓ silnik gry ↓ wyniki ↓ interfejs organizatora/sędziego ↓ live / telebim ↓ tablety ↓ rejestracja online

11. Fabrik jest narzędziem realizacji, nie definicją systemu

Najpierw definiujemy model działania systemu, a dopiero potem przekładamy go na Joomla + Fabrik.

Nie dopasowujemy logiki turnieju do ograniczeń narzędzia, jeśli można tego uniknąć.