SSqady Указатель — команды, игроки, турниры

Как мы считаем

Мы не пересказываем чужие таблицы. Результаты матчей и составы — вход, а продукт — вычисления поверх них. Здесь описано, откуда берутся данные и по каким правилам считаются рекорды.

источники

OpenDota — матчи, счёт, составы по картам, серии. 251 800 профессиональных матчей с 28 мая 2012 года. Код под MIT, коммерческое использование свободно.

Liquipedia — трансферы, границы состав-периодов, тир турнира, призовые и имена команд на дату матча. Контент под CC BY-SA 3.0, источник — Liquipedia Dota 2 Wiki.

Логотипы клубов — из двух источников. Четырнадцать клубов Dota 2: знак, который клуб сам загрузил Valve для внутриигровых табло, поле logo_url в OpenDota. Четыре клуба CS2 — файлы Wikimedia Commons: Astralis и FaZe Clan в общественном достоянии, MOUZ там же, The MongolZ — автор The MongolZ, CC BY 4.0. Все файлы лежат у нас локально: внешних запросов страница не делает. Знак остаётся товарным знаком клуба и стоит рядом с фактами об этом же клубе — ничего другого им не обозначается. Два тёмных знака (FaZe, MOUZ) стоят на светлой плитке: перекрашивать чужой знак нельзя, а на нашем листе чёрный логотип не виден. У Team Vitality и G2 Esports свободного файла нет — там монограмма, придумывать знак вместо неё нельзя.

Портретов игроков на сайте нет. Мы проверили Wikimedia Commons по всем 113 игрокам обеих дисциплин: файла со свободной лицензией не нашлось ни у одного. Аватар из профиля Steam портретом не является — из шестнадцати проверенных подряд лицом игрока оказались два, остальные аниме, коты и мемы. Пока источника нет, у игрока стоит монограмма.

три правила, которые видно на страницах
  • Доля не публикуется без размера выборки. Рядом с любым процентом стоит число карт, на которых он посчитан.
  • Имя команды берётся на дату матча. OpenDota хранит только текущее имя и применяет его ко всей истории задним числом — так гранд-финал TI 2026 подписывался бы командой, которой на тот момент не существовало. Имена мы берём из истории Liquipedia.
  • Тир берётся оттуда, где он есть, и это два разных поля. Для отбора команд сезона мы используем поле tier у лиг OpenDota: за сезон 2025/26 оно даёт 291 карту в лигах premium, 16 056 в professional и 16 418 в excluded. Excluded — это пабы и открытые квалификации, и они отброшены: без этого фильтра верх таблицы по винрейту занимают команды четвёртого эшелона с 90% побед на слабом сопротивлении. Для турнирных страниц и календаря берётся liquipediatier — он размечает событие, а не лигу, и различает мейджор и региональную серию.
команды сезона — правило целиком

«Топ по винрейту» без правила не значит ничего, поэтому правило выписано полностью: карты с 1 июня 2025 года, лиги тира premium и professional, клуб обязан сыграть хотя бы одну карту на premium-турнире, порог выборки — 150 карт. Всё это проверяемо одним запросом к открытому SQL-эксплореру OpenDota, без ключа.

Одноимённые записи слиты. В базе у клуба бывает несколько идентификаторов: по два у Team Spirit, Team Yandex, Natus Vincere и Xtreme Gaming, у Nigma Galaxy — два, различающиеся пробелом в конце имени. Прежняя версия таблицы брала дубликат Nigma с 77 картами и ставила клуб в топ ошибочно; теперь строки объединяются по имени без пробелов по краям.

Исторические имена заменены на нынешние. Сверка идёт по совпадению чисел, а не по догадке: TEAM VISION с 266 картами — это PARIVISION, BoomBoys с 380 — BetBoom Team, Iron Wing — 1w Team.

игроки — почему ключом служит account_id

Ник в базе не уникален: одних только «Yatoro» шесть штук, и это разные люди. Поэтому строка игрока привязана к числовому account_id, а ник — только подпись. Карьерные числа, герои и средние показатели считаются по нему же.

Обратная сторона: профиль можно переименовать, и тогда подпись перестаёт совпадать с тем именем, под которым игрока знают. Аккаунт 86745912 подписан «天鸽», но это Артур Бабаев — Arteezy. Мы показываем оба имени: подменять источник молча нельзя, но и выдавать читателю иероглифы вместо известного ника — не помощь.

что мы называем как

Слово «корпус» на сайте раньше означало четыре разных множества, и из-за этого «1-е место в корпусе» области не задавало. Теперь у каждого набора своё имя, и в подписи к числу стоит именно оно:

  • Корпус карт Dota 2 — 251 800 сыгранных карт с 28 мая 2012 года. Единица здесь карта, а не серия.
  • Лиги в базе — 10 135 турниров и лиг OpenDota с 2011 года, у каждой свой тир.
  • Справочник про-игроков — 5 349 профилей notable_players. Это не все, кто играл, а те, кого источник считает профессионалами.
  • Лента переходов — 18 418 записей Liquipedia с 2006 года; из них строятся границы состав-периодов.

чего мы посчитать не смогли

Винрейт игроков за сезон открытый эксплорер не отдаёт: агрегат по таблице player_matches за пятнадцать месяцев не укладывается в пятнадцатисекундный лимит запроса. Поэтому на страницах игроков стоят карьерные числа, а не сезонные, и это сказано прямо, а не спрятано за формулировкой. Пер-игрок статистика CS2 (K/D, рейтинг, ADR) в свободном доступе не существует вовсе — она живёт только у HLTV, закрытого для автоматического доступа.

состав-период

Ключевая сущность движка. Это непрерывный интервал между трансферными событиями, а не набор из пяти игроков. Разница принципиальна: стендин создаёт альтернативную пятёрку, которая позже возвращается, поэтому «уникальный набор из пяти» даёт пересекающиеся отрезки, и считать по нему нельзя. Границы берём из ленты трансферов, матчи — из корпуса.

Как мы считаем · данные Liquipedia под CC BY-SA 3.0