i

Как наиболее эффективно распылить карты в Battle Pass к The International 2019?

Написал программу для анализа того, какие карты из Фэнтези могут принести больше очков исходя из статистики TI7 и TI8.
Введение
Всем привет!
В прошлом году за несколько дней до TI задумался над тем, что неплохо было бы написать программу, которая каждый день будет предлагать, какие карты ставить в Фентези. Однако написать её тогда я уже не успевал. В том же году на свет появился Gosu.AI, который частично эту задачу выполнил, причём существенно лучше, чем это мог бы реализовать я.
Я надеюсь, что Gosu.AI собирали фентези стату по всем игрокам на протяжении года (но это не точно), и сейчас обладают достаточным объёмом знаний, чтобы действительно делать хорошие прогнозы по карточкам. Чего им не хватает?
  1. Доступа к коллекции карт и советов, какие стоит распылить, а какие оставить.
  2. Предложений по прогнозам исходя не из «голой» статистики игроков, а с учётом бонусов от карточек конкретного пользователя.
Собственно, второй пункт возможен только при реализации первого. И реализовать его без доступа к статистике я не имею возможности.
Про первый же пункт стоит сразу предупредить – я понятия не имею о том, как с доты выкачивать коллекцию карт. Предполагаю, что это невозможно, раз и Gosu.AI этого не делает. Поэтому я написал программку, в которую пользователь собственноручно может вбить все свои карты (я постарался сделать её настолько удобной, насколько возможно). Затем я взял среднюю статистику Фентези с двух прошлых интов и… всё. Вот исходя из этого она будет предлагать вам то, какие карты и в каких случаях стоит пылить. К слову, дополнительно я вручную разделил саппортов на 4ку и 5ку, а также Core’ов на Мидера и Керри. Так что карты можно будет оценить, как по средней для нескольких ролей, так и по конкретной роли.
Да, я знаю, что это звучит безумно. Безумно – потому что если у вас маленький набор карт – вам эта программа нафиг не нужна. Безумно, потому что время, потраченное мной на эту программу, существенно больше, чем если бы я вбил те же самые формулы в эксель, а потом вставлял туда статистику с тех карт, в выборе которых я действительно сомневаюсь (так я делал в прошлом году). Безумно, потому что, в конце концов, это не автоматизация, а просто какой-то костыль низкого качества. Безумно, потому что чтобы попасть в топ 10% игроков, достаточно просто ставить карты с Gosu.AI и вообще не париться на тему бафов. Уверен, что с этой задачей нейросеть справится. Я не спорю.
Если (может даже в комментах) кто-то поможет мне прикрутить туда выкачивание статистики с матчей, возможно, я допишу её до состояния, когда она сможет помогать не только распылять карты, но и делать прогнозы – но пока этого нет.
Итого, эта программа может быть полезна только если:
  • у вас много карт
  • вам не лень потратить несколько часов на размышления о том, какие из них стоит распылять
  • вам реально интересно побороться за лишний десяток фентези очков
  • вам интересно посмотреть статистику с прошлых турниров, разделённую на пять ролей, а не три.
Остальным в принципе можно даже не читать весь текст, который будет ниже.
Итак, если мы определились, что для многих и многих из вас эта тема будет неинтересна, давайте начнём.
Видеогайд для тех, кому лень читать

Смотреть
Описание программы
Статистика с TI7 и TI8

Первая вкладка программы - статистика с предыдущих TI. Как я уже говорил ранее, это единственная статистика, которая мне доступна. Взята она отсюда.

Статистика загружается из файлов TI7.txt и TI8.txt, лежащих в корне программы. В левой части окна доступны фильтры по турниру/команде/игроку/роли. В самой таблице есть возможность сортировки по любому столбцу.

Кому-то этой таблицы может быть достаточно для оценки многих своих карт. Например, если отсортировать по столбцу рун, можно увидеть, что в топе окажется 25 игроков с TI7 (я уже не помню, что там происходило, но, видимо, это был патч, когда баунти руны появлялись постоянно), а на вардах ровно наоборот - с TI8 (видимо изменения скорости восстановления обсов?).

В нижней части экрана:

  • слева - окно для вывода информации о происходящем. Корректная/некорректная загрузка файлов статистики, корректная/некорректная загрузка/сохранение вашей коллекции карт и т.п.
  • по центру кнопки для ручной загрузки/сохранения вашей коллекции карт (стоит периодически сохранять резервные копии, потому что в программе могут оставаться баги)
  • справа - галочка для переключения на англ./русс. язык. Это относится не ко всему интерфейсу, а к названиям "характеристик" карточек. Основная цель - если у вас англ. версия доты, то будет в разы проще ориентироваться с англ. названиями при добавлении новых карт
Вкладка для добавления и просмотра ваших карт

Вторая вкладка программы - добавление и просмотр вашей коллекции карт. Как я уже написал ранее - карты придётся добавлять вручную. Для удобства я добавил картинки с логотипами команд и расположил в том же порядке, что и в батлпасе (а вот игроки здесь расположены с 1 позиции до 5, в самом батлпасе они расположены как попало).

В правой части экрана сверху - множество характеристик, также расположенные в порядке, в котором отображаются на картах.

Добавление карты

Для добавления карты необходимо выбрать нужную команду, нужного игрока, затем нужные характеристики. Здорово, да? Проооосто превосходно.

Ах, да, ещё не забыть нажать кнопку "Добавить". Об успешном добавлении вам скажет таблица, расположенная на этой же вкладке, либо сообщение в окно для вывода информации.

Если вы натыкали неверные характеристики, то придётся нажимать кнопку "Сброс". Она обнулит выбор характеристик (команда и игрок остаются теми же). Добавлять кнопки 0% для каждой характеристики я не стал из экономии места. Так что 0% - это "не выбрано ничего", и именно это делает кнопка "Сброс".

В таблице в правой нижней части экрана выводится ваша коллекция карт. Здесь также доступны несколько фильтров (по команде и/или роли).

Для удаления карт из коллекции необходимо выделить строки в таблице с ненужными вам картами, затем нажать кнопку "Удалить выбранные карты".

Выбор строк для удаления

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

Окно для выбора карт исходя из средней статистики данной роли

Наконец, третья (и пока последняя) вкладка - Удаление карт.

Игрок выбирается аналогичным образом, как на предыдущей вкладке. Есть две настройки: учитывать ли статистику только одного из TI или обоих; учитывать ли среднюю статистику для конкретной роли, либо габеновского старого разделения (1+2 вместе, 4+5 вместе. Для 3 роли неактуально). Кнопка "Поиск" применяет указанные параметры и заполняет таблицу.

В первые две строки таблицы выводится статистика данного игрока с прошлых турниров (если есть). В третью строку выводится средняя статистика данной роли (исходя из указанных настроек).

Дальше через пропуск в 1 строку идут, собственно, искомые прогнозы для данного игрока по каждой карте. Последний столбец "Среднее" показывает прогнозируемую сумму для данной карты.

По цветам:

  • в статистике с прошлых турниров зелёный->жёлтый->красный выделяются топ3 характеристик, за которые больше всего очков.
  • в прогнозах по картам зелёный - это баф 25%, жёлтый 15-20%, красный 5-10%.
  • в последнем столбце "Среднее" уже по строкам зелёный->жёлтый->красный - топ 3 карты по прогнозируемой сумме.
Ещё одна результирующая таблица на примере Рамзеса с моим набором карт для него.

Ещё несколько важных замечаний напоследок:

  1. В программе могут присутствовать баги. Пишите в комментарии (если вы достаточно безумны, чтобы всё-таки рискнуть ей пользоваться)
  2. Подумываю добавить анализ карт в разрезе всех игроков данной роли.
  3. Все статистики, в т.ч. ваши карты, хранятся в папке Data в корне с программой. Перенос/редактирование/удаление этих файлов приведёт как минимум к крашу программы (на тему обработки исключений и пр. я особо не запаривался), как максимум к удалению вашей коллекции. Так что лучше туда не лезть.
  4. Карты сохраняются в файл Cards.txt. И да, ещё раз повторю, коллекцию лучше периодически сохранять в резервную копию (не в Cards.txt). За время моих тестов ничего страшного ни разу не происходило, но...
  5. Если сделаю какие-то патчи/исправления, буду перезаливать по той же ссылке. Не уверен, что смогу актуально редактировать статьи (когда я в последний раз их писал, после любого редактирования она отправлялась на модерирование и могла на недели исчезать). Так что буду писать в комменты. В таком случае заменяете exe'шник и всё, Cards.txt не трогаете, ваша коллекция будет переезжать в новую программу.
  6. Ссылка на скачивание с yandex

Комментарии