Спектральные итоги 2024
Каждый год примерно в это время я пишу в блоге пост о том, чем занимался в течение года по направлению Доты/Киберспорта.
На этот раз главное, что можно сказать — не хватило времени на прошлогодние цели. Но направление в общем-то осталось то же, а сами эти цели я рассматриваю скорее как дорожную карту на ближайшие пару лет.
Моя главная цель на 2025 год — вернуться к созданию контента (кажется, я это и год назад писал?), отрефлексировать свой опыт в киберспорте, поработать над некоторыми личными проектами и целями и начать проводить разные коммунити ивенты.
И ещё в 2024 году я был занят работой над новым проектом с новой командой. Проект не связан с дотой, с киберспортом напрямую и со спектральными штуками (пересечений почти нет).
Из-за этого проекты по Доте стали чуть менее важными. К тому же на пару месяцев весной образовалась гигантская дыра в продуктивности.
Ниже давайте посмотрим, что там вообще было с дотой в этом году, как там с намеченными проектами и какие планы на этот год.
Что было сделано
Было много планов, которые пришлось перенести, и был огромный пробел в продуктивности из-за личных вопросов. Но в целом, большинство изменений в этом году были связаны с доработкой бэкенда и прототипов, так что со стороны они будут не очень заметны.
В течение года у меня было несколько возможностей поработать на ивентах: The International 2024, PGL Wallachia Season 2. А также на небольших коммунити ивентах в качестве кастера-аналитика и даже помогал со статистикой во время некоторых туриков по Deadlock (хотя в большинстве случаев эту нишу за меня заполнял Degaz).
Серверные штуки
Год начался с отчетов по аналитике сайта. Я уже использовал их для прошлогодней статьи в блоге, а ниже (в другом разделе) приведу несколько прикольных кусочков из отчёта за 2024 год.
Из интересного стоит отметить борьбу с атаками ботов. С начала 2024 года увеличилась нагрузка, от, судя по всему, сборщиков информации для нейронок. Очевидно, я этим и так был не очень доволен, но только к ноябрю они совсем обнаглели, так что я решил что-то предпринять. После запрета нескольких ботнетов количество запросов пришло в норму (по сравнению с ~150к за 5-15 минут).
Ещё одна важная вещь — улучшение стабильности инструментов бэкапов/выгрузки/распаковки отчётов, очистка дескрипторов отчетов и масштабная оптимизация запросов по предметам. С ростом числа игроков и матчей на Титанах подобные изменения стали критически важными для поддержания времени обработки отчетов на более-менее приемлемом уровне. А РЕАЛЬНО массивные наборы данных стало гораздо проще выгружать с сервера, чтобы обрабатывать их на моём домашнем компе.
Так как я все еще застрял с очень специфическим стеком, некоторые трюки позволили мне компенсировать некоторые его недостатки, и в целом уменьшить требования к месту для датасетов. Кроме того, некоторые из улучшений выступают в качестве дополнительного слоя совместимости, так что мне не пришлось менять слишком много существующего кода.
Еще одно изменение коснулось "чанкизации" наборов данных. Это стало очень полезным для рассчёта статистики стартовых предметов и расходников. Эта фича была в разработке уже некоторое время, и я вносил в нее небольшие изменения в течение года, но меня беспокоила одна проблема — требуемое время просчёта и место, необходимое для "эмуляции" некоторых более сложных запросов. К счастью, этот подход с чанками помог компенсировать эту проблему, а также еще больше ускорил просчёт предметов в качестве приятного бонуса.
Благодаря всем этим изменениям, а также некоторым внутренним улучшениям скрипта, работающего с Stratz (а ещё они тоже перебанили несколько подсетей ботов, что положительно сказалось на скорости работы Stratz), мне удалось сократить время обработки отчетов в 3-4 раза (с ~36-38 часов до ~9-12). Тут всё ещё не учитывается обработка расходников, но с текущим положением вещей разница была бы не такой существенной. У меня есть несколько идей, как оптимизировать процесс еще больше, но сейчас это не в приоритете.
А ещё наконец-то сделал (вернее пофиксил, так как они уже существовали) фильтры по патчам и датам при сборе матчей.
В качестве бонуса: реализован (и проверен на стабильность) внутренний сервис, который миррорит координатор Deadlock в виде API для внутреннего использования (для моих проектов и всяких внутренних отчётов), а ещё добавлен новый Markdown движок для одной из будущих задумок.
Большие штуки
Теперь о том, что вы могли заметить сами.
Прежде всего, это новая страница дорожной карты и новая страница донатов (с использованием нового движка Markdown), сильно вдохновленная анонсами Thunderbird.
Мне не очень нравится просить о донатах, но в последнее время это стало как никогда актуально, особенно в связи с тем, что некоторые ТО и команды сильно злоупотребляют сайтом (устраивая спам запросами, что сказывается на нагрузке).
Все проекты по Доте являются некоммерческими и поддерживаются исключительно за счет донатов и моей личной финансовой подушки (любые коллабы обычно рассматриваются как большие пожертвования).
На этой странице перечислены все уровни Patreon/Boosty и что за них можно получить, и это должно стать хорошей стартовой точкой для тех, кто хочет как-то поддержать.
Прототипы и будущие проекты
Ну а тут начинаются более интересные штуки.
Во-первых, новый прототип для патронов: персональная статистика матчей в виде приватных отчетов с некоторыми дополнительными данными.
Во-вторых, это грядущие стартовые предметы и расходники. Фича долгое время находилась в состоянии «полировки», но на данный момент остались только строки перевода и запись в блоге о релизе.
В-третьих, прототип SuperNote. Изначально проект был нацелен на создание технической базы для сбора всей информации для талантов и ТО, а также способом соединения всех моих различных API. В итоге он превратился в нечто более "унифицированное". Ну и вместе с ним появился движок Markdown.
С первой итерацией проекта пришло несколько полезных штук:
- улучшенная навигация по разделам текстов
- улучшенная мультиязычность больших текстов
- удобное отображение документации
- обработка Markdown в JSON для таблиц данных и наоборот.
В качестве конечной цели я хочу, чтобы он мог предоставлять гигантскую шпаргалку в формате PDF для каждого ивента. Но также я хочу использовать его для хранения документации по различным вещам (не только моим API, но и результатов моих исследований по работе с Steam Datagram и подобному). А еще я хочу перенести на сайт полный архив всех моих старых записей в блоге, со всеми доступными переводами.
На данный момент у меня готова только часть страниц, но техническая база уже есть, и я бы сказал, что 60% работы уже сделано.
В-четвертых, эксперименты с Deadlock. Внутреннее зеркало/API-сервис координатора, некоторые базовые инструменты для отчетов, базовая реализация парсера реплеев (Degaz сделал ещё один, и в итоге мы оба по факту забили на них, но тем не менее). Хаб отчетов для дедлока тоже в разработке.
В-пятых, скрипты для обработки вывода Dota GC, метаданных и приватных метаданных. Я уже давно хотел этим заняться, но не было повода. А тут потерялись некоторые реплеи с клозов. Это завело в кроличью нору: что можно найти в метаданных, что можно найти в приватных метаданных, как их расшифровать и что я могу с ними сделать.
В настоящее время у меня есть набор скриптов для преобразования дампов сетевых пакетов (общения с координатором) и создания JSON-файлов, которые можно использовать в формат для LRG2. Из всего этого можно извлечь ещё много полезного, но сейчас это не является приоритетом. Достижение офигенное, но штука скорее нишевая, вряд ли будет много случаев, когда она пригодится.
Шестой, и, вероятно, последний: Тренды Меты Турбо.
Это прототип, который я хотел сделать уже очень давно. Поскольку таблицы лидеров игроков в турбо не существует, а большинство людей, имеющих ранги, не играют без рангов (особенно в Турбо), было немного сложно найти "лучших из лучших" в Турбо.
В итоге я отфильтровал матчи на основе среднего ранга в матчах известных игроков и постепенно применил его к игрокам "неизвестного ранга". Этот подход работал достаточно хорошо, но показался чересчур усложнённым, поэтому я заменил его чем-то более простым и щадящим.
Основная причина, по которой я не стал выпускать эти отчёты — меня разочаровалирезультаты. Наверное, можно было бы ожидать каких-то отличий от основной меты, да? И хотя некоторые отличия всё же есть, в целом статистика Турбо была настолько похожа на Тренды Титанов, что я решил, что не стоит тратить на это время в данный момент. Прототип готов, но я его оставлю мариноваться, пока не придумаю, что с ним делать.
UPD: ...вообще "таблица лидеров турбо" звучит как хороший повод в будущем всё выпустить в общий доступ.
Мелкие штучки
В карточках матчей теперь указаны рекорды для этого матча
Добавлен раздел Лайнинг для игроков, хотя по умолчанию он пока отключен в отчётах
Добавлены группы категорий (в API тоже)
Обновлена интерактивная карта до версии 7.35
Добавлен UI раздела "Инструменты" (обновленная версия интерактивной карты, сетка героев, панель аналитики, билды и т.д.)
Добавлено уведомление о подозрительности турика
Улучшения Nerds Builds: фасетки, переводы, новый API D2PT
Также проверил все существующие отчеты на отсутствие каких-то матчей, буду в обозримом будущем потихоньку добавлять пропавшие матчи обратно. А ещё начал работу над архивом реплеев Source 2. И начал работать над исторической статистикой. Также продолжаю работать над некоторыми недостающими туриками, которые мне не дают покоя.
Прикольные моменты из аналитики
Я не очень настроен сейчас придумывать прикольные подводки, поэтому просто вброшу пачку скриншотов из аналитики сайта.
Забавный момент: где-то в июле я случайно грохнул логгинг для основных двух сервисов (билды и хаб отчётов). Починил только через пару месяцев.
Большой всплеск пользователей ближе к концу года очень похож на увеличение количества ботов. Но мне не удалось отследить больше тех, которых я уже вычислил. Да и огромное количество запросов из Гонконга тоже выглядит подозрительно.
Этот график довольно забавен, поскольку показывает единственный случай, когда я не очистил запросы ботов из логов и случайно разблокировал одну из подсетей на пару минут.
Планы на 2025
Большинство планов на следующий год будут примерно такими же, как и в прошлом году. Общее направление остается прежним. По этой причине я скопирую описания из предыдущей записи в блоге, но немного обновлю их, чтобы они были чуть актуальнее
- Больше комьюнити ивентов. Я хочу чаще хостить «спектральные скримы», а также ивенты по Artifact, Underlords и даже некоторым кастомкам. (в целом актуально)
- Обзор статистики матчей. Большая часть матчей в моих отчётах доступна где-нибудь ещё, но в последнее время всё чаще случаются ситуации, когда я заполняю данные по матчу вручную, либо паршу реплеи из приватных/безбилетных лобби. Для таких случаев по сути нет иных вариантов, как изучить данные, а я на такие матчи трачу порой достаточно много времени и усилий, чтобы всё было корректно у меня в базах данных (например пересматриваю VODы целиком, чтобы воссоздать столько данных, сколько вообще возможно). Обзор статистики матчей (Match Stats Explorer) — по сути просто фронтенд для доступа к матчам в моих (не архивных) отчётах, цель которого в первую очередь дать доступ к статистике некоторых матчей (за исключение ранкедов). Ну и это будет достаточно полезно для моих комьюнити ивентов, хехе. (в целом актуально)
- Улучшения раздела со сборками. Я хочу вернуться к работе над этим разделом как-нибудь, добавить строку поиска на панель навигации. Может сделаю дополнительные улучшения для стартовых предметов и скилл билдов. И заодно хочу добавить поддержку сторонних сборок когда-нибудь: например стандартные сборки, сборки от Torte De Lini или GoX. (не уверен насчёт чужих сборок из сообщества, но в целом актуально)
- Быстрое переключение отчётов в категориях. Технически эта фича УЖЕ существует, просто запрятана за ранним превью. Главная проблема — придумать, как выбирать категорию, для которой рендерить переключатель. (пока думаю на эту тему, но вообще актуально)
- Редизайн. Текущая версия дизайна была очень вдохновлена официальной страницей Dota Pro Circuit и изначально должна была просто использоваться для «небольших отчётов», которые по сути были просто красивые версии постов на реддите. С тех пор много воды утекло, и этот дизайн просто не очень подходит для моих целей, так что уйти от него я хотел уже давно. (в целом актуально, но наверное всё же сначала основной движок переработаю)
- Охота за реплеями. Есть несколько битых/перезапущенных матчей по ходу 2023, а также целый турнир с 2022, который я не могу проигнорировать. Предстоит очень много работы руцками, но надо будет рано или поздно этим заняться. (актуально, остался только один такой турнир на данный момент)
- Генератор миникарт. Я начал задумываться на эту тему ещё когда только вышел 7.33. Сравнивать текущие версии миникарты со старыми вообще достаточно удручающее занятие, и мне захотелось что-нибудь с этим сделать. В теории можно достаточно легко «сгенерировать» красивую миникарту, используя метаданные карты (те же, что используются для интерактивной карты) и пачку векторных пресетов (которые надо ещё нарисовать сначала). (актуально)
Более крупные штуки
- Скилл билды, стартовые предметы, расходники. Планировал закончить до 2023, но что-то пошло не так. Сейчас всё почти готово, осталось только переводы добить.
- Луркер. API уже работает, но в скрытом виде. Позже по ходу года к этому добру вернусь.
- Парсер логов для Artifact. Всё ещё актуально, но не основной приоритет.
- Ранкинг игроков/команд для отчётов (всё ещё актуально)
- Статистика игроков на героях в отчётах и прочие улучшения профилей игроков (всё ещё актуально)
- Больше контента: посты в блог, видео, новые фичи и т.д. (всё ещё актуально)
Огромные проекты
- Хаб Отчётов по Artifact. Всё ещё в планах.
- Переработанный движок отчётов. Работаю над этим.
- SuperNote. Работаю над этим.
- Запись Live матчей. Всё ещё в планах, но пока не знаю, когда вернусь к работе над этим.
- Архетипы героев. Работаю над этим.
В качестве заключения
Ну и наверное всё? Главный план на этот год — продвинуться дальше по этой дорожной карте. И надеюсь в следующем году будет больше прикольных релизов, о которых можно будет рассказать.
Счастливого 2025! И наслаждайтесь дотой как никогда раньше.
Можете подписаться на меня в Twitter/Bluesky, Telegram или прийти в мой Discord.
А ещё можете поддержать донатом, подобная поддержка всегда очень помогает.