Как мы считаем
Мы не пересказываем чужие таблицы. Результаты матчей и составы — вход, а продукт — вычисления поверх них. Здесь описано, откуда берутся данные и по каким правилам считаются рекорды.
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.
Ник в базе не уникален: одних только «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, закрытого для автоматического доступа.
Ключевая сущность движка. Это непрерывный интервал между трансферными событиями, а не набор из пяти игроков. Разница принципиальна: стендин создаёт альтернативную пятёрку, которая позже возвращается, поэтому «уникальный набор из пяти» даёт пересекающиеся отрезки, и считать по нему нельзя. Границы берём из ленты трансферов, матчи — из корпуса.