Контрпики в доте. Интересные наблюдения.

Привет, посетители dota2.ru! В этом посте я хотел бы поделиться интересными результатами моей работы со статистикой dotabuff.com. А именно, я анализировал какие герои каких героев контрят и решил выделить из всей этой каши взаимоотношений героев наиболее, на мой взгляд, интересные. Раздел matchups сайта dotabuff.com и что он показывает Объяснение лучше сразу начать с примера. Зайдем на страницу героя windranger на dotabuff, а там откроем ее matchups. Видим, что против героя omniknight windranger имеет самый большой advantage (преимущество). Это значит, что windranger лучше всего "заходит" против omniknight. Смотрим героя, против которого у windranger самый маленький advantage. Это герой, против которого хуже всего "заходит" windranger. Возникает 2 вопроса: 1) почему именно эти герои 2) откуда взялись эти данные Ответ на первый вопрос дать, порой, трудно. Начинаешь представлять ситуацию, когда windranger играет против omniknight. Например, omniknight не имеет дизейбла и windranger легко может уйти от omniknight и от его команды, в особенности когда он скастует ульт. Кроме того, если она удачно свяжет, omniknight не сможет спасти героя repel, т.к. он не снимает связку. Ну хорошо, подумаете вы, но он же может спасти от нее ультом. Да, может, но если на герое не висит repel, то даже под ультом omniknight герой будет получать урон от молний maelstrom или mjolnir, которых будет вылетать под ультом windranger очень много. Вероятно все вышеописанное и привело к такой статистике. Тут мы и подходим к ответу на 2-й вопрос. Откуда взялись эти данные? Это можно понять из описания, но я постараюсь объяснить более наглядно. Предположим, игроки dota 2 сыграли 200 игр, которые можно разделить на 2 группы: 1) 100 игр, где был только omniknight, но не было windranger 2) 100 игр, где были оба в разных командах. В первых 100 играх у всех героев, которые играли против omniknight был winrate В СРЕДНЕМ в районе 39%, т.к. omniknight имеет winrate около 61%. Я говорю В СРЕДНЕМ, т.к. он не мог быть везде 39%, где-то могли пикать контрящих героев, где-то наоборот, слабых против него. Во второй группе игр, благодаря появлению windranger, произошло изменение среднего winrate и он стал равен 40%. То есть можно сказать, что появление в пике winranger негативно влияет на winrate omniknight, то есть она его контрит. Достигается это, конечно, особенностями героя и механикой их игры друг против друга. В данном примере все выглядит не очень убедительно, всего 1% разницы, но это всего лишь пример. У других героев это может быть более ощутимо. Далее можно сказать о тех героях, против которых у windranger самое маленькое преимущество, которое даже является отрицательным. В данном случае мы видим arc warden. Вероятно она страдает от его магических прокастов, плохо дефает очень активный пуш, неспособна его перефармить, из-за обилия копий-иллюзий не может давать нормальные связки. Также рассмотрим 2 группы игр: 1) 100 игр, где был только arc warden, но не было windranger 2) 100 игр, где были оба в разных командах. В первых 100 играх средний winrate против arc warden был около 61%. Во вторых 100 играх из-за появления windranger средний winrate против arc warden уменьшился и стал равен около 60%. То есть появление winranger в пике против arc warden положительно повляило на arc warden и отрицательно на тиммейтов windranger. То есть можно сказать, что arc warden - это контрпик windranger. Как работают мои скрипты Начну с того, зачем я вообще все это затеял, ведь есть сайты, которые позволяют посмотреть контрпики, например http://dotaedge.com. Ничего не имею против этих сайтов, но: 1) я не знаю как они работают 2) я не знаю насколько информация в них актуальная 3) они не дают той гибкости и простора, который я могу достичь своими скриптами 4) проведя небольшую проверку, я заметил что есть некоторые расхождения, порой довольно существенные между результатами, в частности, сайта http://dotaedge.com и моими скриптами В моей работе мне нередко приходится пользоваться скриптовым языком Tcl. Именно его я и решил использовать для анализа пиков в dota 2. Я разработал простой алгоритм, который в результате позволил мне провернуть много интересных "фишек". Сначала мне нужно было "вытащить" данные с dotabuff, но сделать это совсем уж по-простому я не смог, да и не пытался. Пришлось немного поизвращаться. Я заходил в раздел matchups каждого героя и нажимал в браузере "посмотреть исходный код". Открывался исходный код на языке html. В этом исходом коде и содержались все заветные цифры matchups для одного героя. Я проделывал эту манипуляцию для каждого героя и получил 111 файлов на языке html. Далее я написал скрипт, который "выдергивал" из этих файлов нужную информацию и собирал в 1 файл. В итоге получилось следующее. Файл, который я назвал matchups.txt имеет 111 строк, по 1 строке на каждого героя. В строке 1-е слово - имя героя, для которого приведены matchups. Следующие слова - это имена героев в том порядке, в котором герой их контрит. Например, если 1-е слово - это windranger, то следом за ней идет уже упомянутый omniknight, затем ursa, abaddon и т.д., а в конце уже упомянутый arc warden. В итоге получилось что-то вроде матрицы размером 111 на 111. Все дальнейшие результаты были получены только из этой матрицы. Скрипт по подбору наилучших пиков Сперва я напишу, как я пользуюсь своим скриптом и как это все выглядит, а потом опишу принцип его работы. Я запускаю интерфейс командной строки Tcl, запускаю игру и запускаю текстовый редактор. Начинается игра и я вижу первые пики. Предположим, что это dazzle и tusk. Я альт-табаюсь в текстовый редактор, там у меня открыт файл, где уже прописаны имена всех героев, но не на 1-й строке, откуда берутся данные. Т.к. я пользуюсь notepad++, то мне достаточно прописать пару букв имени героя и notepad++ предложит дописать их до конца (от "видит" полные имена героев в этом файле). Поэтому я могу очень быстро ввести 2 имени героя без ошибок, dazzle и tusk, на первой строке. Далее я альт-табаюсь в интерфейс командной строки tcl и выполняю уже сохраненную в его памяти команду "tclsh cpick.tcl". В командной строке выводится список наилучших контрпиков против этих 2-х героев. Я вывожу первые 15. Вот что выводится:
Споилер
sven 202 earth-spirit 197 magnus 192 kunkka 187 visage 187 doom 185 ursa 183 io 182 templar-assassin 180 undying 175 puck 172 gyrocopter 171 luna 171 terrorblade 169 axe 168
В этом списке герои идут в порядке убывания по набранным очкам. Первые - самые лучшие. Чем ниже, тем хуже. То есть лучше всего пикать свена или земелю. Они хороши сразу против обоих пиков. Почему - сказать сложно, все получено из статистики dotabuff. Пользуясь этой информацией можно, не включая мозг, советовать тиммейтам что пикать или пикать героев самому. Если, допустим, в пике врагов появляются все 5 героев, к 2-м названным dazzle и tusk добавляются какие-то pudge, void и lich, я дописываю их в файл, снова вызываю скрипт и получаю следующее:
Споилер
undying 480 ursa 469 queen-of-pain 460 visage 452 sven 447 phoenix 446 magnus 444 doom 443 earth-spirit 443 puck 442 kunkka 431 io 429 batrider 428 morphling 426 anti-mage 419
И действительно, undying и ursa смотрятся весьма профитно против полученного пика. Конечно всегда можно их переиграть, использовать правильную стратегию игры, делать все грамотно и т.д. Но в целом шансы на победу будут выше, если взять именно этих героев. Конечно это все не совсем честно, но ведь можно взять похожие варианты и из головы, а можно даже придумать что-то еще хитрее, чем результат, полученный из сухой статистики, но все мы любим выигрывать и наши способы добиться побед у каждого свои. Признаюсь, я пользуюсь своей программой, пользуюсь не всегда (<50% игр), но т.к. играю на саппортах и беру героя 1-м или 2-м пиком, то пользуюсь ей по большей части чтобы советовать, какого героя взять на позицию керри. Меня иногда слушают, но не всегда, менее чем в 50% случаев. Бывает, что даже когда послушают, мы проигрываем. Но все-таки, за счет выгодного пика, чаще мы выигрываем, когда слушают моего совета. Такая закономерность точно есть. Я тоже стараюсь советовать что-то попроще из предлагаемых вариантов, что-то, что мне самому нравится, пытаюсь включать голову. Свои скрипты я не буду распространять, во первых мне лень описывать как ими пользоваться и заморачиваться с процессом аплоада и т.д. Во-вторых ничего такого сверхкрутого я в них не вижу, это все уже есть в интернете, например dotaedge и прочие. Но если в коментариях к этому посту будет очень много просьб, не исключено, что я передумаю. Описание алгоритма работы моей программы Алгоритм достаточно прост. В качестве исходных данных берется уже описанный файл-матрица matchups.txt и анализируемый файл analyzed.txt. В анализируемом файле "сканируется" только первая строка, в которую я вписываю от 1 до 5 героев оппонентов. Берется 1-й герой, допустим dazzle. Скрипт ищет этого героя в матрице matchups и каждому из 110 героев (всех героев dota кроме dazzle) начисляет очки. Количество очков зависит от позиции героя. Чем она ближе к началу строки, тем больше очков. Максимально - 110 очков, минимально - 1. Например ancient apparition зарабатывает против dazzle максимум, 110 очков. Axe тоже зарабатывает достаточно много, 100 очков. Эти контрпики для всех достаточно очевидны. Если к dazzle добавляется еще 1 герой, например tusk, очки, которые накоплены на dazzle, сохраняются и начинают начисляться дополнительные очки за tusk. Например, templar assassin зарабатывает довольно много, что тоже, по-моему, очевидно, т.к. она "блокирует" его ульт своим refraction. Если введено 5 имен героев, то все герои зарабатывают очки на каждом из этих 5 героев и в результате получается матрица героев и очков. Матрица сортируется по количеству очков, первыми идут герои с максимальным счетом. Они и выводятся на экран. Давайте посмотрим на контрпики текущей меты Кроме использования своих скриптов в своих играх я задумался о том, что бы интересного можно было получить с их помощью. И у меня возникло несколько идей. Во-первых все мы знаем, что в доте всегда есть какая-то мета - то есть группа героев, которая актуальна в текущем патче или просто на сегодняшний день, но которая периодически меняется (отсюда и название мета). Сегодня, на дату 26 декабря 2015 года, с патчем 6.86 мы видим в самых популярных пиках следующих 20 героев. pudge invoker windranger shadow-fiend juggernaut phantom-assassin legion-commander sniper zeus earthshaker riki arc-warden anti-mage slark drow-ranger slardar ember-spirit spirit-breaker wraith-king bristleback Я просто прогоняю на них свой скрипт и вижу следующий результат:
Споилер
morphling 1469 dazzle 1465 lion 1455 omniknight 1448 dragon-knight 1398 tusk 1379 clockwerk 1366 spirit-breaker 1360 phantom-assassin 1340 slardar 1317 bounty-hunter 1309 lone-druid 1301 chaos-knight 1300 earth-spirit 1291 io 1284
Думаю, для многих выглядит довольно удивительным то, что список возглавил давно уже невзрачный morphling, которого никто особенно и не берет сейчас. Думаю и вы, и я хотели увидеть какого-то героя, которого можно смело брать, ожидая, что с высокой вероятностью возьмут что-то метовое и твой шанс их законтрить будет очень высок. И тут этим "чем-то" оказался morphling. Оставляю это на ваш суд и обсуждение. Но, прочитав предыдущую часть моей статьи, вы должны понять, что результат не рандомный, он получен на основе статистики. Значит в нем есть какое-то здравое зерно. Нужно просто его найти, проанализировав все логически. А можно начать задротить морфа и в какой-то момент прозреть и понять, чем же он так крут против сегодняшней меты. Со своей колокольни саппорт-пикера мне судить трудно. Но мы продолжим наши изыскания дальше. Лучший керри против всех керри Я немного видоизменил скрипты и исходные файлы, что позволило мне увидеть, какой же керри самый лучший, против всех керри в доте. Сперва я приведу здесь список всех героев, которых я причислил к "лику керри", скорее всего я тут немного накосячил, но уж простите, не думаю что сильно, ибо опыт :). Это все породит много споров, я уверен, но я вынужден здесь действовать смело, не боясь где-то опозориться :). alchemist anti-mage arc-warden chaos-knight clinkz dragon-knight doom drow-ranger gyrocopter huskar invoker juggernaut phantom-lancer legion-commander lifestealer lone-druid luna lycan medusa meepo morphling naga-siren phantom-assassin razor riki bloodseeker shadow-fiend slardar slark Прогоняем этот список по matchups для этого же списка героев и получаем следующий, снова несколько неожиданный результат:
Споилер
troll-warlord 2218 sven 2009 meepo 1994 tiny 1918 phantom-assassin 1887 luna 1852 terrorblade 1782 faceless-void 1774 chaos-knight 1741 dragon-knight 1735 morphling 1699 bloodseeker 1699 lone-druid 1692 phantom-lancer 1685 naga-siren 1682 ursa 1660 windranger 1620 legion-commander 1597 slark 1587 shadow-fiend 1577 medusa 1576 lycan 1534 slardar 1527 riki 1513 weaver 1500 wraith-king 1486 gyrocopter 1480 razor 1439 spectre 1426 sniper 1379 drow-ranger 1368 invoker 1349 lifestealer 1349 viper 1336 clinkz 1332 huskar 1281 anti-mage 1255 arc-warden 1247 juggernaut 1228 alchemist 1194 doom 1028
Оказывается троль и свен - лучшие керри, а столь рекомендуемый и популярный леорик сидит где-то в заднице. Чудеса. Представляю, сколько шума поднимется в комментариях. Давайте искать во всем этом здравое зерно. Давайте искать какое-то объяснение. Заметим, что мы рассматриваем керри в отрыве от остальных героев. Возможно дело в этом. Если керри будут встречаться в чистом поле друг с другом много раз и зарабатывать на этом очки, должна получиться вот такая итоговая таблица. Лучший саппорт против всех керри Т.к. я играю только на саппортах, я не мог обойти такую тему, как "лучший саппорт против всех керри". Сперва взгляните на героев, которых я отнес к саппортам (разумеется я не претендую на объективность, критикуйте, но без оскорблений): omniknight abaddon lich crystal-maiden warlock vengeful-spirit dazzle venomancer silencer ogre-magi jakiro witch-doctor disruptor shadow-shaman mirana phoenix treant-protector earthshaker enigma ancient-apparition winter-wyvern sand-king windranger keeper-of-the-light lion death-prophet pugna bane visage skywrath-mage lina rubick chen enchantress shadow-demon oracle io arc-warden
Споилер
crystal-maiden 1995 sand-king 1882 vengeful-spirit 1845 jakiro 1836 enigma 1820 omniknight 1791 winter-wyvern 1772 lich 1748 lion 1737 enchantress 1697 earthshaker 1691 io 1677 lina 1614 abaddon 1609 dazzle 1603 treant-protector 1584 shadow-demon 1547 shadow-shaman 1541 warlock 1513 ogre-magi 1491 ancient-apparition 1482 mirana 1456 chen 1451 bane 1418 keeper-of-the-light 1415 witch-doctor 1406 disruptor 1368 skywrath-mage 1322 phoenix 1306 oracle 1298 venomancer 1291 visage 1259 death-prophet 1220 pugna 1174 rubick 1086 silencer 1073
Оказывается, цмка и скорпион лучше всего контрят большинство керри. Этот результат означает вот что. Если каждый из саппортов будет поочередно встречаться со всеми керри в рамках игр доты и зарабатывать на этом очки, то такой будет итоговая таблица среди всех саппортов. Самые контрящие герои Я сделал другой скрипт, работающий по другому принципу, не тому, который я описал ранее. Берется каждый из 111 героев доты и ищется в matchups всех остальных героев. В зависимости от того, какую позицию он занимает, он набирает очки. Чем дальше позиция от начала списка matchups, тем больше он зарабатывает очков. Ведь чем он дальше от начала списка, тем лучшим контрпиком он является, за это он и заслуживает большее количество очков. В результате я получил следующий список героев и их очков в порядке убывания очков:
Споилер
oracle 8031 io 7986 natures-prophet 7762 enchantress 7588 broodmother 7457 shadow-demon 7453 naga-siren 7398 meepo 7398 lone-druid 7301 leshrac 7297 puck 7174 timbersaw 7173 death-prophet 7127 batrider 7105 arc-warden 7061 lina 7000 chen 6969 tinker 6945 huskar 6913 magnus 6909 storm-spirit 6796 sniper 6785 rubick 6773 phantom-lancer 6771 outworld-devourer 6731 skywrath-mage 6669 axe 6658 morphling 6629 ember-spirit 6573 bristleback 6570 clinkz 6543 queen-of-pain 6503 kunkka 6494 faceless-void 6490 anti-mage 6457 pugna 6431 sand-king 6429 bane 6410 visage 6382 riki 6277 slark 6270 razor 6255 brewmaster 6246 gyrocopter 6136 keeper-of-the-light 6129 lifestealer 6117 weaver 6093 tiny 6090 drow-ranger 6083 lion 6039 techies 6038 ancient-apparition 6008 witch-doctor 6002 earthshaker 5987 shadow-fiend 5943 nyx-assassin 5932 clockwerk 5902 viper 5898 winter-wyvern 5843 enigma 5795 bloodseeker 5778 legion-commander 5775 dark-seer 5713 tidehunter 5706 dragon-knight 5705 windranger 5697 tusk 5679 lycan 5665 alchemist 5619 chaos-knight 5617 juggernaut 5582 zeus 5549 doom 5535 invoker 5529 beastmaster 5529 templar-assassin 5487 ogre-magi 5484 terrorblade 5454 medusa 5415 bounty-hunter 5408 jakiro 5406 sven 5376 silencer 5368 pudge 5308 phantom-assassin 5279 undying 5275 luna 5269 disruptor 5267 crystal-maiden 5265 phoenix 5232 warlock 5231 centaur-warrunner 5196 night-stalker 5187 shadow-shaman 5159 troll-warlord 5144 venomancer 5134 mirana 5089 treant-protector 5050 slardar 5048 wraith-king 5030 dazzle 4993 spirit-breaker 4992 spectre 4970 earth-spirit 4869 necrophos 4784 lich 4714 elder-titan 4705 vengeful-spirit 4699 ursa 4415 abaddon 4108 omniknight 3733
Посмотрите, что в этом списке удивительно. Прослеживается обратная зависимость от винрейта. Видно, что многие герои с высоким винрейтом стоят ближе к концу списка и наборот, герои с низким винрейтом оказываются самыми контрящими. Возможно так valve и построила в доте баланс? Возможно поэтому у Omniknight такой высокий winrate, а у Oracle такой низкий? Просто Omniknight толком никого не контрит, поэтому его так усилили, сделали таким мощным, а Oracle наоборот занерфили, потому что он в принципе хорош против очень многих героев? Я могу лишь строить предположения, dota игра слишком сложная, чтобы о ней так просто судить. Заключение Все вышеописанное, возможно, выглядит какой-то нелепицей, не удивлюсь, если кто-то так считает. Но если у кого-то есть какие-то мысли или критика по поводу полученных результатов, будет интересно почитать. Добро пожаловать в комментарии.
avatar Eugenius4

26 Дек 2015 в 23:13

53

14568

Нашли ошибку в материале? Выделите ее и нажмите Ctrl+Enter

В комментариях под материалами на сайте действуют все правила портала, с которыми можно ознакомиться на специальной странице — https://dota2.ru/forum/rules/. Помимо этого, в комментариях к новостям существуют дополнительные ограничения:

  • Запрещены прямые и косвенные оскорбления авторов материалов, как и любые комментарии, не относящиеся к сути новости;
  • Указание на ошибки в материале происходит с помощью специального функционала. Комментарии с таким содержанием будут удалены;
  • Критика — это нормально, но выражать ее нужно без злоупотреблений. Ваши слишком грубые комментарии про личностей, представленных в новостях, могут быть удалены.
Форум