Руководитель направления систем бизнес-аналитики BIA Technologies Станислав Воронин рассказывает, как математическая модель решает кому, когда и с кем играть в следующем сезоне, и размышляет о дивном новом будущем спорта.
Математическая оптимизация расписаний
«Ну кто додумался поставить в сетку выездную встречу с «Ювентусом» на этот вторник?! Ребята только отыграли сложнейший матч на домашнем поле!» — восклицаете вы в гневе. И напрасно: расписание составил не человек, а компьютер, и сделал он это на основе сложнейшей математической модели. Как? Сейчас расскажу.
Разумеется, речь пойдёт не о любительских соревнованиях между студенческими командами, а о составлении расписаний для высших спортивных лиг (Российская премьер-лига, итальянская Серия А, НБА, КХЛ и т.д.). Сетка для матчей такого уровня должна учитывать столько ограничений, что составить расписание вручную просто невозможно, поэтому лиги поручают это ответственное дело компьютеру.
Помимо специфических правил в разных типах турниров и видах спорта, существует ряд универсальных требований, единый для всех. Вот ключевые вводные:
1. Предпочтительно, чтобы матчи проводились по выходным или в будни по вечерам (так их увидит больше зрителей); самые зрелищные — в телевизионный прайм-тайм.
2. Нежелательно, чтобы в одно и то же время параллельно проходило несколько популярных матчей самых титулованных команд (болельщикам придётся переключаться между телеканалами).
3. Матчи следует равномерно распределять по сезону; между играми у команды должен быть перерыв не менее 48 часов (это время на отдых и подготовку спортсменов).
4. Домашние и выездные матчи должны чередоваться; нельзя проводить все домашние игры скопом в начале сезона (так как играть на родном стадионе традиционно легче, это создаст ложное ощущение превосходства).
5. Необходимо учитывать часовые пояса, джетлаги и время на переезд спортсменов из одного города/страны в другую.
6. Домашняя и выездная игры между двумя соперниками должны быть разнесены как можно дальше в расписании.
7. Необходимо учитывать уровни команд: нельзя, чтобы команда играла несколько матчей подряд с лидерами дивизиона — череда сложных игр вымотает спортсменов и поставит их в невыгодное положение перед соперниками.
8. Желательно не сводить явных фаворитов в первые две недели сезона (это сведёт на нет всю интригу).
9. Нужно учитывать занятость игроков в европейских чемпионатах: команды не любят играть с сильными соперниками прямо перед встречами еврокубков.
10. Сетка должна учитывать доступность стадионов под другие мероприятия.
Как видно по этому списку, составление расписания — это сложная эквилибристика, поиск идеального баланса между возможностями спортсменов, желаниями зрителей и максимальной финансовой выгодой для клубов и телеканалов. Правильно составленное расписание, которое учитывает все вышеуказанные условия, приносит лигам огромный доход от рекламы, трансляций и продажи билетов, поэтому создание соответствующей математической модели для планирования матчей стоит баснословных денег.
При изменении любого из этих правил или добавлении нового необходимо рассчитать, как изменится вся система в целом. Это сродни игре в шахматы: прежде чем передвинуть фигуру, нужно оценить, как изменится расклад на доске и просчитать последствия на несколько ходов вперёд. В итоге проще предоставить решение компьютеру, и математическая оптимизация сама сделает всю работу.
За календарь Российской футбольной премьер-лиги с 2019 года отвечает алгоритм, разработанный НИУ ВШЭ. Если вам интересны детали, в интервью изданию «Спорт-Экспресс» сотрудники лаборатории исследований спорта рассказали о своей методологии и российской специфике. Так, например, нежелательно проводить пять матчей в одном туре в Москве, поскольку это создаст сложности для МВД. Кроме того, в большинстве регионов страны зимой не поиграешь в футбол на открытом поле.
Искусственный интеллект vs. магия спорта
Сейчас всё больше решений в мире спорта принимается искусственным интеллектом на основе большого количества данных. И речь не только о расписании матчей. Камеры и датчики фиксируют каждое движение спортсмена, компьютер анализирует информацию и выдаёт рекомендации. Есть мнение, что в будущем вообще отпадёт необходимость в тренерском штабе: принимать решения о стартовом составе, сажать игроков на скамейку запасных, программировать режим тренировок, составлять рацион и давать тактические советы перед каждой игрой будет искусственный интеллект.
Во многих случаях компьютер действительно может заметить неочевидные взаимосвязи и предложить оптимальное решение. Вот интересный пример: защитник «Арсенала» Эктор Бельерин в начале сезона 2021/2022 перешёл на правах аренды в испанский клуб «Реал Бетис». Чтобы выбрать идеальный для себя вариант (по слухам, среди них были такие тяжеловесы как «Барселона», «Интер» и «ПСЖ») Бельерин обратился за помощью в консалтинговую фирму Analytics FC. Эксперты компании создали математическую модель специально под футболиста.
Алгоритм проанализировал множество факторов и подсказал, что текущая схема 4-3-2-1, которую предпочитает тренер «Реал Бетис», лучше всего сочетается со стилем игры Бельерина. Кроме того, данные показали, что команда нуждается в крайнем защитнике после трансфера Эмерсона, что точно не позволит Бельерину скучать на скамейке запасных. Наконец, игра в испанском клубе должна увеличить шансы футболиста на попадание в национальную сборную Испании к ближайшему Чемпионату мира. Эксперты говорят, что это первый случай в истории, когда игрок принял решение о трансфере при помощи аналитики.
Но есть и обратная сторона медали. Действительно ли мы готовы отдать на откуп ИИ принятие абсолютно всех решений? Дал бы он шанс, скажем, юному Лионелю Месси с его небольшим ростом и проблемным здоровьем, или сходу посчитал бы его бесперспективным форвардом? А хороший тренер — это просто «оптимизатор», который сравнивает статистику сутками напролёт, или харизматичный тактик, психолог и родитель в одном лице? Может ли условного Теда Лассо полностью заменить компьютер?
В 2018 году вышел документальный фильм «В поисках величия», который задавался примерно такими вопросами. Авторы поговорили с такими легендами спорта как Пеле, Уэйн Гретцки и Джерри Райс, и пришли к выводу, что искусственный интеллект лишил бы нас многих «неочевидных» звёзд. Один из примеров, приводимых в фильме, — чемпион мира по боксу Рокки Марчиано. Он был ниже большинства соперников и не обладал большим размахом рук. Но эти «недостатки» помогли ему найти свой собственный подход: он наклонялся ниже и бил в упор на короткой дистанции. Марчиано не проиграл ни одного поединка в своей карьере и считается одним из лучших боксёров в истории.
Тем не менее сейчас спорт движется в направлении всё большей автоматизации в принятии решений. Насколько это рационально — покажет время. Но мне бы всё-таки хотелось, чтобы часть решений осталась за людьми. В конце концов, мы любим спорт за человеческие моменты, красивую игру, командный дух, эпизоды невероятной удачи и «руку Бога». Если оставить выбор за компьютером, спорт перестанет быть искусством. А вы что думаете?
Турнир по круговой системе является одной из популярных схем организации соревнований как в настольных логических играх, так и во многих других подвижных видах спорта.
Чтобы определить очередность игры и цвета фигур соперников (в логических играх) используют специальные таблицы очередности игры, которые также иногда называются таблицами Бергера.
Предварительно участники турнира получают определенный номер. Затем, по соответствующей таблице, определяется участники с какими номерами встречаются друг с другом в каждом туре.
Участник, номер которого указан в таблице очередности игры первым, начинает партию. Если в турнире принимает участие нечетное количество участников, то цифра, стоящая в первом столбике вне скобок, показывает, что участник под данным номером свободен от игры в данном туре.
Турнир по круговой системе. 3 или 4 участника
| Тур | Пары участников | |
|---|---|---|
| 1 | 1 — (4) | 2 — 3 |
| 2 | (4) — 3 | 1 — 2 |
| 3 | 2 — (4) | 3 — 1 |
Турнир по круговой системе. 5 или 6 участников
| Тур | Пары участников | ||
|---|---|---|---|
| 1 | 1 — (6) | 2 — 5 | 3 — 4 |
| 2 | (6) — 4 | 5 — 3 | 1 — 2 |
| 3 | 2 — (6) | 3 — 1 | 4 — 5 |
| 4 | (6) — 5 | 1 — 4 | 2 — 3 |
| 5 | 3 — (6) | 4 — 2 | 5 — 1 |
Турнир по круговой системе. 7 или 8 участников
| Тур | Пары участников | |||
| 1 | 1 — (8) | 2 — 7 | 3 — 6 | 4 — 5 |
| 2 | (8) — 5 | 6 — 4 | 7 — 3 | 1 — 2 |
| 3 | 2 — (8) | 3 — 1 | 4 — 7 | 5 — 6 |
| 4 | (8) — 6 | 7 — 5 | 1 — 4 | 2 — 3 |
| 5 | 3 — (8) | 4 — 2 | 5 — 1 | 6 — 7 |
| 6 | (8) — 7 | 1 — 6 | 2 — 5 | 3 — 4 |
| 7 | 4 — (8) | 5 — 3 | 6 — 2 | 7 — 1 |
Турнир по круговой системе. 9 или 10 участников
| Тур | Пары участников | ||||
| 1 | 1 — (10) | 2 — 9 | 3 — 8 | 4 — 7 | 5 — 6 |
| 2 | (10) — 6 | 7 — 5 | 8 — 4 | 9 — 3 | 1 — 2 |
| 3 | 2 — (10) | 3 — 1 | 4 — 9 | 5 — 8 | 6 — 7 |
| 4 | (10) — 7 | 8 — 6 | 9 — 5 | 1 — 4 | 2 — 3 |
| 5 | 3 — (10) | 4 — 2 | 5 — 1 | 6 — 9 | 7 — 8 |
| 6 | (10) — 8 | 9 — 7 | 1 — 6 | 2 — 5 | 3 — 4 |
| 7 | 4 — (10) | 5 — 3 | 6 — 2 | 7 — 1 | 8 — 9 |
| 8 | (10) — 9 | 1 — 8 | 2 — 7 | 3 — 6 | 4 — 5 |
| 9 | 5 — (10) | 6 — 4 | 7 — 3 | 8 — 2 | 9 — 1 |
Турнир по круговой системе. 11 или 12 участников
| Тур | Пары участников | |||||
| 1 | 1 — (12) | 2 — 11 | 3 — 10 | 4 — 9 | 5 — 8 | 6 — 7 |
| 2 | (12) — 7 | 8 — 6 | 9 — 5 | 10 — 4 | 11 — 3 | 1 — 2 |
| 3 | 2 — (12) | 3 — 1 | 4 — 11 | 5 — 10 | 6 — 9 | 7 — 8 |
| 4 | (12) — 8 | 9 — 7 | 10 — 6 | 11 — 5 | 1 — 4 | 2 — 3 |
| 5 | 3 — (12) | 4 — 2 | 5 — 1 | 6 — 11 | 7 — 10 | 8 — 9 |
| 6 | (12)- 9 | 10 — 8 | 11 — 7 | 1 — 6 | 2 — 5 | 3 — 4 |
| 7 | 4 — (12) | 5 — 3 | 6 — 2 | 7 — 1 | 8 — 11 | 9 — 10 |
| 8 | (12) — 10 | 11 — 9 | 1 — 8 | 2 — 7 | 3 — 6 | 4 -5 |
| 9 | 5 — (12) | 6 — 4 | 7 — 3 | 8 — 2 | 9 — 1 | 10 — 11 |
| 10 | (12) — 11 | 1 — 10 | 2 — 9 | 3 — 8 | 4 — 7 | 5 — 6 |
| 11 | 6 — (12) | 7 — 5 | 8 — 4 | 9 — 3 | 10 — 2 | 11 — 1 |
Турнир по круговой системе. 13 или 14 участников
| Тур | Пары участников | ||||||
| 1 | 1 — (14) | 2 — 13 | 3 — 12 | 4 — 11 | 5 — 10 | 6 — 9 | 7 — 8 |
| 2 | (14) — 8 | 9 — 7 | 10 — 6 | 11 — 5 | 12 — 4 | 13 — 3 | 1 — 2 |
| 3 | 2 — (14) | 3 — 1 | 4 — 13 | 5 — 12 | 6 — 11 | 7 — 10 | 8 — 9 |
| 4 | (14) — 9 | 10 — 8 | 11 — 7 | 12 — 6 | 13 — 5 | 1 — 4 | 2 — 3 |
| 5 | 3 — (14) | 4 — 2 | 5 — 1 | 6 — 13 | 7 — 12 | 8 — 11 | 9 — 10 |
| 6 | (14) — 10 | 11 — 9 | 12 — 8 | 13 — 7 | 1 — 6 | 2 — 5 | 3 — 4 |
| 7 | 4 — (14) | 5 — 3 | 6 — 2 | 7 — 1 | 8 — 13 | 9 — 12 | 10 — 11 |
| 8 | (14) — 11 | 12 — 10 | 13 — 9 | 1 — 8 | 2 — 7 | 3 — 6 | 4 — 5 |
| 9 | 5 — (14) | 6 — 4 | 7 — 3 | 8 — 2 | 9 — 1 | 10 — 13 | 11 — 12 |
| 10 | (14) — 12 | 13 — 11 | 1 — 10 | 2 — 9 | 3 — 8 | 4 — 7 | 5 — 6 |
| 11 | 6 — (14) | 7 — 5 | 8 — 4 | 9 — 3 | 10 — 2 | 11 — 1 | 12 — 13 |
| 12 | (14) — 13 | 1 — 12 | 2 — 11 | 3 — 10 | 4 — 9 | 5 — 8 | 6 — 7 |
| 13 | 7 — (14) | 8 — 6 | 9 — 5 | 10 — 4 | 11 — 3 | 12 — 2 | 13 — 1 |
Турнир по круговой системе. 15 или 16 участников
| Тур | Пары участников | |||||||
| 1 | 1 — (16) | 2 — 15 | 3 — 14 | 4 — 13 | 5 — 12 | 6 — 11 | 7 — 10 | 8 — 9 |
| 2 | (16) — 9 | 10 — 8 | 11 — 7 | 12 — 6 | 13 — 5 | 14 — 4 | 15 — 3 | 1 — 2 |
| 3 | 2 — (16) | 3 — 1 | 4 — 15 | 5 — 14 | 6 — 13 | 7 — 12 | 8 — 11 | 9 — 10 |
| 4 | (16) — 10 | 11 — 9 | 12 — 8 | 13 — 7 | 14 — 6 | 15 — 5 | 1 — 4 | 2 — 3 |
| 5 | 3 — (16) | 4 — 2 | 5 — 1 | 6 — 15 | 7 — 14 | 8 — 13 | 9 — 12 | 10 — 11 |
| 6 | (16) — 11 | 12 — 10 | 13 — 9 | 14 — 8 | 15 — 7 | 1 — 6 | 2 — 5 | 3 — 4 |
| 7 | 4 — (16) | 5 — 3 | 6 — 2 | 7 — 1 | 8 — 15 | 9 — 14 | 10 — 13 | 11 — 12 |
| 8 | (16) — 12 | 13 — 11 | 14 — 10 | 15 — 9 | 1 — 8 | 2 — 7 | 3 — 6 | 4 — 5 |
| 9 | 5 — (16) | 6 — 4 | 7 — 3 | 8 — 2 | 9 — 1 | 10 — 15 | 11 — 14 | 12 — 13 |
| 10 | (16) — 13 | 14 — 12 | 15 — 11 | 1 — 10 | 2 — 9 | 3 — 8 | 4 — 7 | 5 — 6 |
| 11 | 6 — (16) | 7 — 5 | 8 — 4 | 9 — 3 | 10 — 2 | 11 — 1 | 12 — 15 | 13 — 14 |
| 12 | (16) — 14 | 15 — 13 | 1 — 12 | 2 — 11 | 3 — 10 | 4 — 9 | 5 — 8 | 6 — 7 |
| 13 | 7 — (16) | 8 — 6 | 9 — 5 | 10 — 4 | 11 — 3 | 12 — 2 | 13 — 1 | 14 — 15 |
| 14 | (16) — 15 | 1 — 14 | 2 — 13 | 3 — 12 | 4 — 11 | 5 — 10 | 6 — 9 | 7 — 8 |
| 15 | 8 — (16) | 9 — 7 | 10 — 6 | 11 — 5 | 12 — 4 | 13 — 3 | 14 — 2 | 15 — 1 |

Виталий Евстигнеев
По круговой системе наиболее справедливо. Провести жеребьёвку, чтобы командам достались номера от 1 до 5. И дальше расписание по таблице Бергера, причём в каждом туре одна команда будет отдыхать, ибо нечётное число.
1 тур: 2-5; 3-4.
2 тур: 1-2; 5-3.
3 тур: 3-1; 4-5.
4 тур: 1-4; 2-3.
5 тур: 5-1; 4-2.
Содержание
- Способ 1: Canva
- Способ 2: Challonge
- Способ 3: Tournament Lab
- Способ 4: GoodGame
- Вопросы и ответы
Способ 1: Canva
Canva – довольно популярный онлайн-сервис для создания дизайна, веб-публикаций, презентаций и других творческих проектов. С его помощью вполне можно создать турнирную таблицу как по готовому шаблону, изменив его под свои нужды, так и полностью с нуля.
Перейти к онлайн-сервису Canva
- Перейдите по представленной выше ссылке, чтобы открыть главную страницу сайта. На верхней панели воспользуйтесь одной из двух кнопок – «Войти» или «Зарегистрироваться». Рассмотрим второй вариант.
Сделать это можно как по электронной почте, создав новый аккаунт, так и через учетную запись Facebook или Google, что значительно проще и быстрее, а потому и было выбрано нами.
По необходимости подтвердите вход.
- Авторизовавшись в сервисе, нажмите на кнопку «Создать дизайн».
- Из списка доступных выберите нужный шаблон, подходящий для турнирной таблицы, либо, если хотите создавать ее полностью с нуля, воспользуйтесь элементом «Настраиваемый размер» и переходите к шагу №5.
Примечание: Чтобы быстрее найти нужный макет, воспользуйтесь поиском – введите зарос «Таблица» и выберите «Сравнительная таблица» или «Плакат с турнирной таблицей».
- Отметим, что предлагаемые Canva шаблоны не особо подходят для создания турнирных таблиц в привычном понимании этого термина,
в чем можно убедиться, самостоятельно ознакомившись с ними.
Поэтому все же лучше создавать такой проект с нуля, что мы и сделаем дальше.
Важно! В качестве основы проекта нами была выбрана страница с книжной ориентацией, то есть таблица будет «развиваться» вертикально – сверху вниз. Если в вашем случае предпочтителен альбомный вариант с горизонтальным «прохождением», выберите подходящий макет или создайте его самостоятельно (пункт «Настраиваемый размер» в меню).
- Прежде всего следует определиться с фоном: кликните по рабочей области, затем по отмеченной кнопке на верхней панели
и выберите понравившееся цветовое решение.
- Далее добавим графические «Элементы» – в нашем случае это фигуры.
Обратите внимание! Далее мы создадим проект из двух страниц – на первой будет список участников турнира, на второй – собственно, сама таблица. Если вам нужна только она – переходите к шагу №10 текущей инструкции, хотя для большего понимания принципов работы сервиса все же следует изучить ее полностью.
Например, выделить шапку (заголовок) можно посредством прямоугольника.
Цвет любого подобного объекта тоже легко меняется.
По желанию добавьте к проекту другие графические объекты и определите их цвет.
Перемещать их можно путем обычного перетаскивания и с помощью выполненной в виде крестика кнопки внизу, а изменять размер – посредством маркеров на углах и специальных линий по контуру.
- Теперь перейдем к добавлению текста. Алгоритм действий схож с фигурами – перейдите в соответствующую вкладку на боковой панели, выберите надпись подходящего типа и кликните по ней.
Введите желаемый текст и затем поместите его в нужное место.
Выберите понравившийся шрифт, определите его тип и цвет, размер, начертание и выравнивание.
Аналогичным образом добавьте еще надписи, если это требуется.
Примените к ним художественные эффекты,
определите расположение.
- Список участников, который в нашем примере будет находиться на первой странице, займет большую ее часть. «Добавить основной текст» можно с помощью соответствующего блока.
Для удобства работы с проектом лучше немного увеличить его масштаб, а для более детального изучения – открыть в режиме полноэкранного просмотра. На нижней панели для этого предусмотрены соответствующие кнопки.
Введите имена всех участников. Если перед первым поставить цифру «1», а в конце строчки нажать «Enter», нумерованный список продолжит создаваться автоматически.
Заполнив это поле, по необходимости измените шрифт, его цвет и другие параметры.
Так, в нашем случае изначальный текст был выровнен по центру, но лучше сместить его к левому краю.
- Помимо шаблонных графических элементов, которые добавлялись нами на шаге №6, в проект можно вставить и собственные изображения (например, логотип).
Для этого откройте вкладку «Загрузки» и воспользуйтесь в ней кнопкой «Загрузить медиа»,
затем выберите «Устройство»,
перейдите в открывшемся «Проводнике» к расположению нужного файла, выделите его и нажмите «Открыть».
Выделите загруженную картинку для ее добавления на рабочий холст,
отрегулируйте размер и расположение.
- Когда страница со списком участников турнира будет готова, воспользуйтесь расположенным вверху элементом «+»
или кнопкой «Еще 1 страница» внизу.
- Далее, используя в первую очередь линии и фигуры, потребуется создать непосредственно саму таблицу. Выберите подходящий макет, который будет основной.
В нашем примере имя каждого из участников будет писаться поверх прямоугольника. Для этого добавим первый, уменьшим, поместим его в начало листа и повторим эти действия с еще одним, чтобы получить первую пару.
Для создания следующего блока такого же размера можно просто скопировать предыдущий через контекстное меню,
а лучше сразу два, предварительно выделив, затем вставить их, поместить рядом и повторить это же,
чтобы составить «основу» первого раунда – в нашем случае это шесть пар участников. Очевидно, что в следующий (четвертьфинал) перейдет только три пары.
Обратите внимание! При изменении размеров объектов в отдельном всплывающем поле будет отображаться их высота и ширина. Ориентируясь на эти значения, можно легко создавать одинаковые фигуры.
Чтобы ускорить дальнейший процесс, выделите половину блоков с помощью мышки, скопируйте их (можно использовать сочетание клавиш «Ctrl+C»)
и вставьте («Ctrl+V»).
Поместите в нужное место и, по необходимости, измените размер, например, сделав его чуть больше.
Аналогичным образом создайте основу для следующего раунда – полуфинала (в нашем примере) и финала.
Задайте желаемый цвет для добавленных блоков – один общий или отдельный для каждого тура.
Обратите внимание! При перемещении объектов любого типа (фигуры, изображения, текст и т. д.) по рабочей области будут появляться горизонтальные и вертикальные направляющие. Они видны в те моменты, когда расположение одного элемента совпадает с другим или его центром. Ориентируясь на это, можно достичь оптимального выравнивания и симметричности.
- Следующий шаг – рисование линий, демонстрирующих, кто из участников пары победил и перешел в следующий раунд. Для этого выберите соответствующий «Элемент» в одноименной вкладке,
измените размер, ориентацию и поместите в нужное место таблицы. В меню параметров можете определить толщину и тип линии, ее цвет (не изменяется на выделенном объекте), заменить на стрелку.
Выполняя аналогичные действия,
«соедините» блоки всех участников турнира между собой.
- Теперь снова перейдем к добавлению надписей – имен.
Во вкладке «Текст» выберите «Добавить основной текст» и поместите это поле на первый блок.
Путем самостоятельного добавления новых или копирования/вставки и последующего ввода текста, создайте на «плитках» первого раунда список с именами участников. Перемещайте каждый такой блок, чтобы достичь его оптимального (правильно выровненного) расположения, для большего удобства ориентируясь на направляющие. Также не стоит забывать о возможности изменения шрифта и его параметров.
Примечание: Если турнир, для которого создается таблица, еще не начался/не закончился и/или неизвестно, кто с кем состоит в паре, можно экспортировать макет в незаполненном, пустом виде, чтобы затем заполнить его вручную (печатный вариант) или в каком-либо редакторе (электронная копия). В таком случае сразу переходите к последнему шагу текущей инструкции.
Продолжите ввод имен для следующих раундов,
пока не заполните таблицу полностью. Для более удобного ее просмотра можете свернуть боковую панель инструментов.
- Уже на данном этапе турнирную таблицу можно считать готовой, но мы рассмотрим еще некоторые возможности онлайн-сервиса Canva – вполне возможно, они помогут вам качественно улучшить проект.
- Когда создание турнирной таблицы будет завершено, по желанию осмотрите ее страницы, если таковых несколько – для этого воспользуйтесь кнопкой с их количеством на нижней панели.
Если вас интересует печатная копия проекта, а Canva предоставляет такие услуги, нажмите на кнопку «Напечатать плакаты».
Определите параметры, ознакомьтесь с условиями, стоимостью печати и доставки, и если вас все устраивает, кликните «Продолжить», после чего следуйте дальнейшим инструкциям.
Для сохранения электронной копии проекта воспользуйтесь расположенной на верхней панели кнопкой скачивания, по желанию отметьте дополнительные параметры и нажмите «Скачать».
Если требуется, вы можете изменить формат конечного файла. Имейте в виду, что для печатной продукции лучше оставить предложенный по умолчанию PDF, но если вы, например, планируете заполнять изначально пустую таблицу в каком-нибудь графическом редакторе, можно выбрать PNG или JPG.
«Сохраните» файл в удобном месте на диске ПК, указав в «Проводнике» предпочтительное расположение и по желанию изменив имя.
Примечание: Если планируется публикация таблицы в вебе (например, на личном сайте или в социальной сети), по завершении процедуры экспорта сервисом будет предложено «Получить ссылку для общего доступа».
Для того чтобы оценить результат, откройте созданную турнирную таблицу в совместимой программе. Так, для PDF подойдет любой браузер.
Решение озвученной в заголовке статьи задачи с помощью онлайн-сервиса Canva нельзя назвать простым, но таким образом можно создать ровно то, что вы захотите, самостоятельно оформив каждый элемент проекта.
Способ 2: Challonge
Функциональность онлайн-сервиса Challonge сосредоточена на создании турнирных таблиц и управлении ними. Преимущество этого инструмента над другими — открытая регистрация для пользователей с возможностью им самим управлять исходом матча, подтверждая или опровергая итог. Для всех желающих зарегистрированных юзеров открывается и возможность голосовать за каждую пару или конкретного игрока.
Перейти к онлайн-сервису Challonge
- Для получения полного доступа к Challonge потребуется зарегистрироваться или авторизоваться, воспользовавшись расположенными сверху кнопками.
- Войдите при помощи аккаунта в социальной сети, чтобы ускорить процесс создания профиля и автоматически получить логин.
- После открытия главной страницы учетной записи щелкните по кнопке «Создать турнир».
- Выберите себя или другого человека в качестве организатора, задайте название турнира, используйте сгенерированную или собственную ссылку для доступа и добавьте желаемое описание, задействовав присутствующие средства форматирования текста.
- Еще одна из особенностей Challonge — возможность указать компьютерную игру или вид спорта. Для этого начните вводить название в соответствующем поле.
- Укажите подходящий предложенный вариант или полностью допишите название, если оно отсутствует во встроенном списке.
- Выберите один из пяти типов турниров, отметив маркером соответствующий пункт. Обязательно задайте его формат, ведь от этого и будет зависеть автоматическое формирование групп. При необходимости включите матч за 3-е место.
- Single Elimination (олимпийская система или плей-офф). Игрок вылетает из турнира после первого же поражения, не попадает в сетку лузеров и не имеет права на восстановление.
- Double Elimination (турнирная система с выбыванием после двух поражений). После первого поражения игрок попадает в список лузеров и играет с другими проигравшими. В некоторых случаях у победителя этой сетки не получается выйти к победителям главной для борьбы за 1, 2 место и он сражается только за третье.
- Round Robin (круговая система). Каждый соревнуется с каждым. Победные места определяются по количеству набранных очков побед, поражений и ничьих. В компьютерных играх такая система применяется крайне редко.
- Swiss (швейцарская система). Останавливаться детально на этой системе не будем, а уточним лишь то, что она применяется в интеллектуальных играх, то есть шашках или шахматах, и организатор сам выбирает количество туров, по которым определяется победитель.
- Ниже на странице настраивается регистрация участников. Вы можете самостоятельно предоставить список игроков или позволить им задействовать форму регистрации, чтобы они лично включали себя в таблицу. В обязательном порядке укажите и дату начала турнира с отведенным временем для подтверждения участия.
- В «Прогнозы и голосования» активируйте функцию прогнозов и голосов для зарегистрированных учетных записей, если это нужно.
- Дополнительно ознакомьтесь и с «Advanced Options»: здесь есть мелкие настройки, относящиеся к внешнему виду таблицы и ее генерации. При готовности остается только кликнуть на «Сохранить и продолжить», чтобы завершить создание турнира.
- Вся основная информация о текущем турнире будет отображаться на отдельной панели. Здесь вы видите количество игроков, формат, вид спорта или компьютерную игру, дату проведения, время начала, а также можете скопировать ссылку для перехода.
- Используйте следующий блок с вкладками, чтобы переключаться для настройки определенных параметров. Например, сначала выберите «Участники».
- Добавьте список либо каждого игрока отдельно, присвоив электронную почту или логин в системе. При добавлении пачкой учитывайте и правила оформления, а затем подтвердите действие, щелкнув по «Массовое добавление».
- Список участников был создан. До момента начала турнира его можно редактировать и применять случайное ранжирование.
- Переключитесь на «Сетка», чтобы просмотреть текущее состояние матчей.
- Все участники были распределены по парам автоматически. Кому пары на хватило, сразу же перешел во второй тур.
- При необходимости редактируйте название раундов и изменяйте строку «Лучший из», чтобы указать, сколько матчей нужно выиграть для победы в паре.
Важно отметить самые главные типы турниров, чтобы у начинающих пользователей не возникло вопросов по поводу выбора подходящего:

Турнир будет автоматически начат в заявленное время сразу после того, как нужное количество участников подтвердит готовность. Теперь вы можете самостоятельно управлять счетом или поручить это самим парам на доверительном основании. Если они сами выберут неправильный исход матча или вы захотите дать кому-то техническое поражение, вернитесь к сетке и отредактируйте пару.
Способ 3: Tournament Lab
Этот онлайн-сервис подойдет тем пользователям, кому неудобна реализация в виде регистрации каждого пользователя, подтверждением их участия, а также не нужны расширенные настройки таблицы. В Tournament Lab турнир создать немного проще, ведь количество действий сокращается.
Перейти к онлайн-сервису Tournament Lab
- Откройте главную страницу Tournament Lab и нажмите на «Создать турнир».
- В обязательно порядке нужно пройти процедуру регистрации, чтобы сохранять турниры в профиле. Для этого используйте вход через Facebook или VK.
- Нажмите на «Загрузить лого», чтобы выбрать картинку, символизирующую само мероприятие.
- Добавьте для него название и при необходимости описание, которое бы характеризовало турнир.
- Если хотите указать, где будет проводиться турнир и во сколько, добавьте дополнительную секцию. В ней может храниться разная информация.
- Присвойте ей и состояние. Например, мы добавили «Готово», обозначив, что турнир уже запущен.
- В Tournament Lab доступна олимпийская или круговая система проведения турнира. Выберите одну из них, кликнув левой кнопкой мыши по плитке. Отметьте маркером «Матч за 3-е место», если его необходимо проводить.
- Начните добавление участников. Здесь могут находиться их ники, названия стран, команд, городов или просто имена, что зависит от типа мероприятия. В дополнительных сведениях укажите номер участника или, например, количество его побед.
- Редактируйте таблицу до сохранения сетки, чтобы случайно не добавить лишнего участника.
- После сохраните турнир для дальнейшего редактирования или переходите к формированию таблицы.
- В новой вкладке откроется готовая сетка. Участники будут распределены в случайном порядке.
- Нажмите по одной из пар, чтобы редактировать матч. Укажите счет и выберите победителя. Заполните строку с дополнительными сведениями, если это требуется.
- Результат сразу же отобразится в сетке, а победитель перейдет в следующий тур.

Поделитесь ссылкой на сетку в социальных сетях или отправьте конкретному пользователю, если хотите чтобы другие тоже следили за продвижением мероприятия (никто кроме вас не может редактировать состояние матчей).
Способ 4: GoodGame
Платформа для геймеров GoodGame позволяет не только запускать стримы и следить уже за идущими турнирами: всем зарегистрированным пользователям здесь разрешается сформировать сетку самостоятельно для проведения любительских соревнований.
Перейти к онлайн-сервису GoodGame
- Создать сетку можно и без предварительной регистрации в GoodGame, но тогда вы не получите всех возможностей по ее управлению, поэтому авторизуйтесь в существующем профиле или создайте новый.
- Далее заполните строку с названием турнира, выберите тип сетки, количество призовых мест и задайте BestOf (лучший из) для матча за третье место.
- Самое время сгенирировать список участников. Разработчики дали детальное описание, какие параметры указываются в скобках, чтобы задать флаг, фракцию или расу. Используйте «Случайный посев», если хотите получить рандомную связку противников.
- По завершении всех настроек нажмите на «Сохранить и продолжить».
- У вас есть сформированная сетка с ссылкой на нее. Редактируйте BestOf еще до того, как сами матчи будут начаты.
- Наведите курсор на одну из пар, где нажмите «Редактировать матч» для выбора результатов.
- Укажите счет и время, когда была сыграна пара, а затем сохраните изменения.
- Перемещение игроков и формирование последующих сеток после итогов будет произведено в автоматическом режиме.

Нескучный матчмейкинг без дисбаланса и очередей: практическое руководство
Время на прочтение
7 мин
Количество просмотров 11K
Матчмейкинг является главной составляющей большинства современных многопользовательских игр. Стоит разработчику несерьёзно к нему отнестись, как окажется, что новички регулярно сталкиваются в бою с профессионалами, а некоторым игрокам приходится ждать вечность только для того, чтобы попасть в матч. Кроме того, его сложно тестировать и анализировать перед запуском, ведь необходимо учесть множество факторов. Как игроки распределяются территориально? Как долго они готовы ждать своей очереди? Какой пинг оптимален для комфортной игры? Эти и другие факторы влияют на качество работы матчмейкинга.
Под катом мы сначала обсудим общую практику подбора битв в мультиплеерных играх, а затем поделимся собственным опытом организации матчмейкинга для War Robots.
Какие выбрать критерии?
Так что же определяет хороший матчмейкинг? Конечно, это зависит от платформы и жанровых особенностей игры, но, как правило, разработчики руководствуются следующими критериями:
- непродолжительное время ожидания;
- низкий пинг;
- минимальная разница в опыте, умениях и прогрессе игроков: здесь может учитываться опыт игры как в целом, так и для конкретного класса, если в игре есть на них деление;
- противопоставление друг другу пати ― заранее собранных групп игроков, нацеленных на слаженную работу;
- одновременное начало матча для всех игроков.
Возможны и другие требования, например:
- подобрать игроков, говорящих на одном языке;
- учитывать результаты последних матчей игрока, а также коэффициент соответствия рейтингу: если игрок проиграл последние несколько матчей, возможно, он сейчас просто не в форме, и некоторое время ему стоит давать оппонентов попроще;
- производить матчмейкинг с учётом состава команд: если в одной команде недостаёт, например, танка или хилера, подыскивать ей в противники команду с тем же составом;
- собирать вместе троллей, ливеров и гриферов, чтобы не мешали другим игрокам;
- разнообразить состав игроков, чтобы одни и те же люди не встречались в разных матчах слишком часто;
- собирать вместе игроков, использующих голосовой чат.
Далеко не всегда удаётся удовлетворить одновременно всем этим требованиям. Более того, большое число требований всегда идёт вразрез со стремлением достичь малого времени ожидания. Даже если игра пользуется большим успехом, и каждую минуту в ожидании матча находятся сотни людей, на выполнение некоторых требований всё ещё может не хватить времени. Например, если вам захочется найти для одной команды австралийцев в соперники другую удовлетворяющую требованиям команду австралийцев, время ожидания может увеличиться кардинально.
В связи с этим из всех желаемых требований необходимо выбрать наиболее важные для конкретного проекта. Сокращение этого списка приведёт к лучшему соответствию оставшимся требованиям и меньшему времени ожидания.
Также при разработке многопользовательских игр стоит помнить, что добавление различных игровых режимов разбивает базу игроков на несколько очередей и тем самым приводит к увеличению времени ожидания, а значит ― к ухудшению качества матчмейкинга. Поэтому подумайте ещё раз, прежде чем добавлять в игру тот или иной режим, и стоит ли давать игроку возможность выбирать между ними.
Сокращение числа требований к матчмейкингу ― не единственный способ уменьшить время ожидания. Например, можно реализовать мультиплеер по системе Drop-In-Drop-Out, чтобы пользователи могли присоединиться к игре в любое время и в любое же время из неё выйти. Если это не представляется возможным, при небольшой длительности матчей можно позволить игроку в процессе ожидания поиграть с ботами. Конечно, это не решит проблему ожидания, но хотя бы позволит скоротать время.
Как оценить соответствие выбранным критериям?
Итак, у нас есть определённое количество игроков, которых мы должны распределить по матчам. Как это лучше сделать? Что предпочтительнее: одинаковый уровень навыков или низкий пинг? Как мы можем сбалансировать эти требования с тем, чтобы пати играли друг против друга?
Для сравнения нам понадобится некая метрика. Каким-то образом все эти критерии должны сойтись в одном параметре, по наибольшему значению которого система сможет проводить поиск. Далее будем называть его оценкой матча.
Для того, чтобы получить значение этой оценки, необходимо сначала рассчитать отдельные показатели. Рассмотрим совокупность факторов:
- Команды с одинаковым уровнем навыков. Это самый очевидный критерий в матчмейкинге. Для каждой игры способ расчёта этого параметра индивидуален. Один из наиболее простых: возьмём средний уровень опыта на команду и сравним его с тем же значением для другой команды. Чем больше окажется разница, тем хуже составлен матч и тем ниже искомый показатель.
- Игроки с одинаковым уровнем навыков. Даже если две команды идеально сбалансированы, но состоят, например, из двух профессионалов и одного новичка, средний показатель по навыкам команд окажется одинаковым, однако хорошего матча всё равно не выйдет. Поэтому введём ещё один параметр не для команды в целом, но для каждого игрока по отдельности, или дисперсию уровня навыков внутри команды.
- Пати. В идеале давно играющая вместе группа должна выступать против другой такой же группы, а не против трёх отдельных игроков. Вычислить это просто: если команда давно играет друг с другом, мы имеем показатель равный 100%. Если команда из трёх человек играет против двух друзей и одного случайного игрока, получим 60%. Если никто из игроков раньше не играл друг с другом, значение окажется равным 0%.
- Пинг противников. Для каждого пользователя мы сверяем пинг со всеми тремя игроками команды противника. Чем выше пинг, тем ниже показатель оценки.
- Вариативность противников. В погоне за удовлетворением более приоритетных требований система матчмейкинга может часто ставить друг против друга одни и те же команды с наивысшими показателями соответствия. Поэтому, чтобы игрокам не наскучило постоянно играть с уже знакомыми лицами, стоит отслеживать, сколько раз они встречаются в матчах.
Пример матча, в котором команды имеют 100% показатель по пати, хороший показатель по среднему навыку в команде, но слабую корреляцию по навыкам отдельных игроков: в синей команде они разнятся существенно
Как учесть неравнозначность критериев?
Итак, для каждого из критериев у нас есть оценка от 0% (очень плохое совпадение) до 100% (наилучшее), но в конечном счёте нам нужно получить всего одно число. Для этого мы будем использовать средневзвешенное значение. Тогда мы сможем задать приоритет важности для каждого критерия.
При подсчёте оценки стоит подумать о том, хотим ли мы получить линейную зависимость параметров. Например, является ли улучшение пинга с 210 мс до 200 мс столь же целесообразным, как с 110 мс до 100 мс? Оба варианта улучшены на 10 мс, но само значение пинга различается в два раза.
Что интересно, в случае одних критериев оказывается проще получить существенную разницу в показателях, чем в случае других. Так, чтобы набрать 0% по показателю уровня навыков, требуется собрать в матче трёх профессиональных игроков и трёх начинающих, что бывает крайне редко. Однако получить 0% по критерию пати гораздо проще, так как для этого нужно иметь одну давно собранную команду против трёх одиночных игроков. Этот аспект тоже стоит принимать во внимание.
Пример того, как могут быть составлены команды в соответствии с уровнем навыков. Зелёным и жёлтым показан пинг между игроками
Теперь по значениям показателей каждого из требований мы можем рассчитать итоговую оценку.
Поскольку это число является главенствующим критерием, алгоритм вырабатывает определённые предпочтения. Если обмен двумя игроками увеличивает оценочный параметр одного матча на 5%, но уменьшает его на 10% в другом матче, система не станет этого делать, поскольку в целом результат станет хуже. Однако в некоторых случаях можно этим пренебречь. Так, может оказаться целесообразным улучшение одного показателя с 50% (что очень плохо) до 55% за счет снижения другого с 90% до 80% (что всё ещё довольно неплохо). Достичь этого можно, например, рассчитав квадратный корень из всех показателей оценки до этапа усреднения. Таким образом, улучшение плохих матчей становится относительно более важным, чем хороших.
Как это происходит в War Robots?
Поскольку речь идёт о мобильной игре, где всё должно происходить быстро, главным приоритетом становится низкое время ожидания до попадания в бой. Для этого система матчмейкинга должна быть максимально простой. В настоящий момент матчмейкер War Robots принимает во внимание только рейтинг подбора игроков (MMR) и старается ориентироваться на пати, но, поскольку они в игре мало распространены, этот критерий вторичен: если не получается противопоставить друг другу пати одинаковой силы, система старается скомбинировать между собой несколько пати или не ориентируется на этот критерий вовсе. И если один игрок вышел из боя, на его место возьмут другого, удовлетворяющего критериям, но только в самом начале матча.
Рейтинг подбора игроков зависит от количества побед/поражений и места в команде, и в зависимости от исхода матча может как повышаться, так и понижаться. По этому рейтингу игроки группируются в лиги и дивизионы. Внутри дивизиона матчмейкер ищет игроков с максимально близким показателем рейтинга, постепенно расширяя диапазон поиска и охватывая ближайшие дивизионы тоже. Стоит отметить, что матчмейкер старается не допустить в более низкие лиги игроков, намеренно занижающих свой рейтинг, отслеживая их по характерным паттернам поведения: обычно показателем этого служит количество поражений большее, чем среднее число боёв по лиге за день.
Упрощённая блок-схема поиска матчей в War Robots
Раньше система работала не так. Основным критерием были мощность роботов и оружия, а из результатов матчей учитывались только последние пять. Система была более уязвимой к манипуляциям. Опытные игроки могли оказаться в одном бою с новичками, стоило им просто поменять вооружение на более слабое, или наоборот ― новичок на роботе первого уровня мог установить оружие 12-го и оказаться в бою с профессионалами, не успев наработать навык игры. В этом плане рейтинговая система, основанная на реальном опыте побед и поражений, оказалась гораздо более честной, хотя прийти к ней удалось не сразу: полная реорганизация процесса матчмейкинга ― радикальный шаг, поэтому поначалу перед ним ещё предпринимались попытки просто задавать системе дополнительный условия.
Работа по оптимизации и улучшению матчмейкинга в War Robots ведётся постоянно. Возможно, в будущем удастся скомбинировать старый и новый подход к поиску матчей, но не стоит забывать, что любое повышение качества матчмейкинга ведёт к увеличению времени ожидания. Поэтому разработка такого решения будет целесообразна только в том случае, если оно не существенно повлияет на быстродействие системы.
























































































