Сетка, три формата и кнопка «аннулировать»
Турнир на TurnList был карточкой с датой и регламентом. Теперь это турнир.
Три формата
При создании турнира выбирается система: олимпийка на вылет, швейцарка или круговая. Больше пока не будет — эти три закрывают почти всё, что реально играют.
Посев в олимпийке берётся из ладдера: у кого есть рейтинг, тот выше, остальные идут в порядке регистрации. Если участников не степень двойки, верхние сеяные получают проход без игры — так и должно быть, но обычно про это забывают и первый тур превращается в лотерею.
В круговой все играют со всеми, туры разводятся методом круга. В швейцарке пары следующего тура зависят от результатов текущего, поэтому туры добавляются по одному, кнопкой. Повторных пар движок избегает, пока есть кого поставить; бай уходит тому, кто ещё не сидел.
Сетка живая
На странице турнира теперь висит карта сетки. Всем видно, кто с кем и с каким счётом. Организатору — тапаешь по имени победителя, вписываешь счёт, сохраняешь. Победитель сам уезжает в следующий круг, дерево перерисовывается.
Отдельной админки для этого нет специально. Организатор стоит в зале с телефоном, и страница турнира — то место, где он и так находится.
Право вести сетку даёт не роль, а список организаторов конкретного турнира. Организатор — обычный игрок, которого назначили на одно событие. Организаторов может быть несколько, первый в списке считается ведущим и его контакт видят игроки.
Кстати про список: раньше организатор выбирался из выпадашки со всеми аккаунтами платформы. На одной площадке это нормально, на десяти это способ уронить страницу. Теперь там поиск.
Аннуляции
Спрашивали, надо ли уметь отменять матч посреди турнира. Надо, и я рад, что мы сделали это сразу, а не когда таблица уже поедет.
Как это устроено. Таблица никогда не хранится — она считается из результатов каждый раз, когда её показывают. Поэтому:
- В круговой отмена результата и есть весь пересчёт. Убрали матч, таблица пересобралась.
- В швейцарке то же самое, но следующие туры сносятся: их разводили по таблице, которая этот результат учитывала. Организатор разводит их заново.
- В олимпийке победитель уже уехал наверх, иногда и дальше. Его вынимают из следующего матча и отменяют всё, что из этой ошибки выросло.
Исправление результата работает так же. Если поставили не того победителя и потом исправили, прошлый победитель из следующего круга исчезнет. Иначе там оказались бы оба.
Координаты площадок
У площадки появилось поле с координатами. Пока оно ни на что не влияет — это задел под проверку «ты правда стоишь у стола, а не ставишь себя в очередь из дома».
Заодно на странице стола появилась мягкая плашка с просьбой разрешить геопозицию. Показывается только там, где координаты у площадки заполнены, и только если браузер ещё ничего не решил. Один раз отказался — больше не спросим.
Важное: сейчас позиция никуда не отправляется и нигде не сохраняется. Мы читаем её один раз, чтобы браузер показал свой запрос, и тут же выбрасываем. Спрашиваем заранее ровно потому, что когда проверка появится, спрашивать будет уже неудобно — человек будет стоять у стола и хотеть играть, а не читать диалоги.
Жеребьёвка
Сетка не появляется — её проводят. Организатор жмёт «Провести жеребьёвку», и у всех, кто в этот момент смотрит страницу турнира, участники разлетаются по слотам по одному. Без перезагрузки, у всех сразу.
Результаты тоже прилетают всем живьём. Сетку смотрят вместе, стоя в зале, — логично, чтобы у всех на экране было одно и то же.
Кто ведёт сетку, тот не играет
Организатор турнира — это назначение на одно событие, а не должность. И тут появилось правило, которое мне кажется единственно честным: кто может менять результаты, тот за них не соревнуется.
Обычный организатор — лицо турнира и контакт для вопросов. Сетку он не трогает, и ровно поэтому спокойно играет наравне со всеми. Если организатор ещё и модератор — он ведёт сетку и в турнире не участвует. Админ может всё, включая и то и другое; пока админ ровно один, я готов за это отвечать лично.
Турнир занимает стол
У турнира теперь есть стол. С момента начала и до конца обычная очередь на нём стоит: никого не вызываем, никого не штрафуем за неявку, новых не пускаем. Кто уже стоял — видит, что происходит, и кнопку выйти.
Это не пауза. Пауза — это действие модератора: её надо поставить, потом не забыть снять, и она пишет в журнал, что кто-то что-то сделал. А тут никто ничего не делал, просто идёт турнир. Включается само в момент старта, снимается само, когда турнир закончился.