Делаем прототип бота для боев в Clash Royale / Хабр
У вас бывало, что вы залипаете в какую-то простенькую игру, думая, что с ней вполне бы мог справиться искусственный интеллект? У меня бывало, и я решил попробовать создать такого бота-игрока. Тем более, сейчас много инструментов для компьютерного зрения и машинного обучения, которые позволяют строить модели без глубокого понимания подробностей реализации. «Простые смертные» могут сделать прототип, не строя нейронные сети месяцами с нуля.
Под катом вы найдете процесс создания proof-of-concept бота для игры Clash Royale, в котором я использовал Scala, Python и CV-библиотеки. Используя компьютерное зрение и машинное обучение я попытался создать бота для игры, который взаимодействует как живой игрок.
Меня зовут Сергей Толмачев, я Lead Scala Developer в Waves Platform и преподаю курс по Scala в Binary District, а в свободное время занимаюсь изучением других технологий, таких как AI. А полученные навыки хотелось подкрепить каким-то практическим опытом. В отличие соревнований по AI, где ваш бот играет против ботов других пользователей, в Clash Royale можно играть против людей, что звучит забавно. Ваш бот может научиться обыгрывать настоящих игроков!
Игровая механика в Clash Royale
Механика у игры достаточно простая. У вас и вашего противника есть три здания: крепость и две башни. Игроки до игры собирают колоды — 8 доступных юнитов, которые затем используются в бою. Они имеют разные уровни, и их можно прокачивать, собирая больше карт этих юнитов и покупая обновления.
После начала игры можно ставить доступных юнитов на безопасном расстоянии от вражеских башен, тратя при этом единицы маны, которые медленно восстанавливаются по ходу игры. Юниты направляются на вражеские здания и отвлекаются на встречающихся по пути врагов. Игрок может управлять только начальным положением юнитов — на их дальнейшее перемещение и урон он может влиять только установкой других юнитов.
Еще есть заклинания, которыми можно сыграть в любой точке поля, обычно они наносят урон юнитам разными способами. Заклинания могут клонировать, заморозить или ускорить юнитов в какой-то области.
Цель игры — уничтожить здания противника. Для полной победы надо разрушить крепость или после двух минут игры уничтожить больше строений (правила зависят от игровых режимов, но в целом звучат так).
Во время игры нужно принимать во внимание перемещения юнитов, возможное число маны и текущие карты противника. Также нужно учитывать, как влияет установка юнита на игровое поле.
Строим решение
Clash Royale — мобильная игра, поэтому я решил запускать ее на Android и взаимодействовать с ней через ADB. Это позволило бы поддержать работу с симулятором или с реальным устройством.
Я решил, что бот, как и многие другие игровые ИИ, должен работать по алгоритму Восприятие-Анализ-Действие. Все окружение в игре отображается на экране, а взаимодействие с ним происходит с помощью нажатий на экран.
Но до создания самого бота нужно было решить проблему извлечения информации о текущем состоянии в игре из скриншота. По большому счету, этой задаче и посвящено дальнейшее содержание статьи.
Для решения этой проблемы я решил применить Computer Vision. Возможно, это не лучшее решение: CV без большого опыта и ресурсов явно имеет ограничения и не может распознавать все на уровне человека.
Точнее было бы брать данные из памяти, однако такого опыта у меня не было. Требуется Root и в целом такое решение выглядит сложнее. Также неясно, можно ли добиться здесь скорости около real time, если искать объекты с heap JVM внутри устройства. К тому же задачу CV мне хотелось решать больше, чем эту.
Доступные игровые ресурсы
Для начала я решил ознакомиться с доступными материалами из игры. Я нашел клуб умельцев, достающих запакованные игровые ресурсы [1][2]. В первую очередь меня интересовали картинки юнитов, но в распакованном игровом пакете они представлены в виде карты тайлов (кусочков, из которых состоит юнит).
Также я нашел склеенные (хоть и не идеально) с помощью скрипта кадры анимаций юнитов — они пригодились для обучения модели распознавания.
Кроме того, в ресурсах можно найти csv с различными игровыми данными — количество HP, урон юнитов разного уровня и т. п. Это полезно при создании логики бота. Например, из данных стало точно понятно, что поле поделено на 18 x 29 клеток, и ставить юнитов можно только на них. Еще там были все изображения карт юнитов, которые пригодятся нам позже.
Computer Vision для ленивых
После поиска доступных CV-решений стало понятно, что обучать их в любом случае придется на размеченном датасете. Я наделал скриншотов экрана и уже был готов разметить какое-то количество скриншотов руками. Это оказалось непростой задачей.
Поиск доступных программ для распознавания занял какое-то время. Я остановился на labelImg. Все найденные мной приложения для аннотирования были достаточно примитивны: многие не поддерживали комбинации клавиш, выбор объектов и их типов был сделан намного менее удобно, чем в labelImg.
Во время разметки оказалось полезным иметь исходный код приложения. Я делал скриншоты каждую пару секунд матча. На скриншотах бывает много объектов (например, армия скелетов), и я сделал модификацию в labelImg — по умолчанию при разметке следующего изображения брались метки из предыдущего. Часто их нужно было просто подвинуть под новое положение юнитов, удалить умерших юнитов и добавить несколько появившихся, а не размечать с нуля.
Процесс оказался ресурсоемким — за два дня в спокойном режиме я разметил около 200 скриншотов. Выборка выглядит совсем небольшой, но я решил начать экспериментировать. Всегда можно добавить больше примеров и улучшить качество модели.
На момент разметки я не знал, какой инструмент обучения буду использовать, поэтому решил сохранить результаты разметки в формате VOC — одном из консервативных и на вид универсальных.
Может возникнуть вопрос: почему просто не искать попиксельно изображения юнитов по полному совпадению? Проблема в том, что для этого пришлось бы искать огромное количество различных кадров анимации разных юнитов. Вряд ли это бы сработало. Мне хотелось сделать универсальное решение, поддерживающее разные разрешения. Кроме того, юниты могут иметь разный окрас в зависимости от применяемого к ним эффекта — заморозка, ускорение.
Почему я выбрал YOLO
Я начал исследовать возможные решения распознавания изображений. Посмотрел на применение различных алгоритмов: OpenCV, TensorFlow, Torch. Хотелось сделать распознавание как можно более быстрым, даже пожертвовав точностью, и получить POC как можно скорее.
Почитав статьи, я понял, что моя задача не вяжется с HOG/LBP/SVM/HAAR/… классификаторами. Хоть они и быстрые, но пришлось бы их применять очень много раз — по классификатору на каждого юнита — и потом по одному применять их к картинке для поиска. К тому же их принцип работы в теории давал бы плохие результаты: у юнитов может быть разная форма, например, при перемещении влево и вверх.
Теоретически, используя нейронную сеть, можно применить ее один раз к изображению и получить всех юнитов разных типов с их положением, поэтому я стал копать в сторону нейронных сетей. В TensorFlow нашлась поддержка Convolutional Neural Networks (CNN). Оказалось, что не обязательно обучать нейронные сети с нуля — можно переобучить уже имеющуюся мощную сеть.
Затем я нашел более практичный алгоритм YOLO, который обещает меньшую сложность и, следовательно, должен был обеспечивать высокую скорость алгоритма поиска, не сильно жертвуя точностью (а в некоторых случаях и превосходя другие модели).
На сайте YOLO обещают громадную разницу в скорости, используя модель «tiny» и меньшую оптимизированную сеть. YOLO также позволяет переобучить готовую нейронную сеть под свою задачу, причем darknet — opensource-фреймворк для использования различных нейронок, создатели которого разработали YOLO — является простым нативным приложением на C, и вся работа с ним происходит через его вызовы с параметрами.
TensorFlow, написанный на Python, является по факту Python-библиотекой и применяется с использованием самописных скриптов, в которых надо разобраться или подточить их под свои нужды. Вероятно, для кого-то гибкость TensorFlow — это плюс, но, не вникая в подробности, вряд ли можно быстро взять его и использовать. Поэтому в моем проекте выбор пал на YOLO.
Построение модели
Для работы над обучением модели я установил Ubuntu 18.10, доставил пакеты для сборки, пакет OpenCL от NVIDIA и другие зависимости, собрал darknet.
На Github есть раздел с простыми шагами по переобучению модели YOLO: нужно скачать модель и конфиги, поменять их и запустить переобучение.
Сначала я хотел попробовать переобучить простую YOLO-модель, потом Tiny и сравнить их. Однако оказалось, что для обучения простых моделей нужно 4 ГБ памяти видеокарты, а у меня была только купленная для игр видеокарта NVIDIA GeForce GTX 1060 с 3 ГБ. Поэтому я смог сразу обучать только Tiny-модель.
Разметка юнитов на изображениях у меня была в формате VOC, а YOLO работал со своим форматом, поэтому я использовал утилиту convert2Yolo для преобразования файлов аннотаций.
После ночи обучения на моих 200 скриншотах я получил первые результаты, и они меня удивили — модель действительно смогла кое-что распознать правильно! Я понял, что двигаюсь в верном направлении, и решил сделать больше обучающих примеров.
Продолжать размечать скриншоты мне не хотелось, и я вспомнил про кадры из анимаций юнитов. Я разметил все маленькие картинки их классами и попробовал обучить сеть на этом наборе. Результат был совсем плохим. Предполагаю, что модель не могла выделить правильные паттерны из маленьких картинок для использования на больших изображениях.
После этого я решил разместить их на готовые фоны боевых арен и программно создать файл разметки VOC. Получался такой синтетический скриншот с автоматической 100% точной разметкой.
Я написал скрипт на Scala, который делит скриншот на 16 квадратов 4×4 и устанавливает в их центр юнитов, чтобы они не пересекались друг с другом. Скрипт также позволил мне кастомизировать создание обучающих примеров — при получении урона юниты окрашиваются в цвет их команды (красный/синий), и при классификации я отдельно распознаю юниты разных цветов. Помимо окрашивания, получившие урон юниты разных команд имеют небольшие различия в одежде. Также я случайным образом немного увеличивал и уменьшал юнитов, чтобы модель научилась не сильно зависеть от размера юнита. В итоге я научился создавать десятки тысяч обучающих примеров, приблизительно похожих на реальные скриншоты.
Генерация была не идеальной. Часто юниты ставились поверх зданий, хотя в игре они были бы за ними; не было примеров перекрытия части юнита, хотя в игре это нередкая ситуация. Но всем этим я пока решил пренебречь.
Модель, полученная после нескольких ночей обучения на смеси из 200 реальных скриншотов и 5000 сгенерированных изображений, которые пересоздавались в процессе обучения раз в день, при проверке на настоящих скриншотах давала плохие результаты. Неудивительно, ведь сгенерированные картинки имеют достаточно много отличий от настоящих.
Поэтому полученную модель я поставил дообучаться на скупой выборке, в которой было только 200 моих скриншотов. После этого она стала работать гораздо лучше.
Чертов стыд
Прошу прощения за оперирование такими ненаучными мерами, как «гораздо лучше», но я не знаю, как быстро произвести кросс-валидацию по изображениям, поэтому пробовал несколько скриншотов не из обучающей выборки и смотрел, удовлетворяют ли меня результаты. Это же самое важное. Мы ведь ленивые и делаем прототип, верно?
Следующие шаги по улучшению модели были понятны — разметить руками больше настоящих скриншотов и обучить на них модель, предобученную на сгенерированных скриншотах.
Приступим к боту
Бота я решил писать на Python — у него есть много доступных инструментов для ML. Свою модель я решил использовать с OpenCV, который с 3.5 научился использовать модели нейронных сетей, и я даже нашел простой пример. Попробовав несколько библиотек для работы с ADB, я выбрал pure-python-adb — там просто реализовано все, что мне надо: функция получения экрана ‘screencap’ и выполнение операции на устройстве ‘shell’; тапаю я, используя ‘input tap’.
Итак, получив скриншот игры, распознав на нем юнитов и потыкав на экран, я продолжил работать над распознаванием игрового состояния. Кроме юнитов, мне нужно было сделать распознавание текущего уровня маны и доступных игроку карт.
Уровень маны в игре отображается в виде прогресс-бара и цифры. Недолго думая, я стал вырезать цифру, инвертировать и распознавать с помощью pytesseract.
Для определения доступных карт и их положения я использовал keypoint detector KAZE из OpenCV. Мне пока не хотелось снова возвращаться к обучению нейронной сети, и я выбрал способ, который был быстрее и проще, хоть у него в итоге и оказалась минимально достаточная точность в случае, когда нужно искать много объектов.
При запуске бота я считал keypoints для всех картинок карт (всего их несколько десятков), а во время игры искал совпадения всех карт с областью карт игрока для уменьшения количества ошибок и увеличения скорости. Их сортировка происходила по точности и по координате x для получения порядка карт — информации о том, как они располагаются на экране.
Немного поигравшись с параметрами, на практике я получил много ошибок, хотя какие-то сложные картинки карт, которые иногда алгоритмом ошибочно принимались за другие, распознавались с большой точностью. Пришлось добавить буфер из трех элементов: если три распознавания подряд мы получаем одни и те же значения, то условно считаем, что мы можем им доверять.
После получения всей необходимой информации (юниты и их примерное положение, доступная мана и карты) можно принимать какие-то решения.
Для начала я решил взять что-то простое: например, если хватает маны на доступную карту, сыграть ею на поле. Но бот еще не умеет «играть» карты — он знает, какие у нас карты, где поле, надо нажать на нужную карту, а затем на нужную клетку на поле.
Зная разрешение скриншота, можно понять координаты карты и нужной клетки поля. Сейчас я завязался на точное разрешение экрана, но при необходимости от этого можно абстрагироваться. Функция принятия решения будет возвращать массив нажатий, которые нужно сделать в ближайшее время. В общем виде наш бот будет являться бесконечным циклом (упрощенно):
бесконечно: изображение = получить изображение если есть действия: сделать действие(первое действие) небольшая задержка для правдоподобности иначе: юниты = распознаем юнитов(изображение) карты = распознаем карты(изображение) мана = распознаем ману(изображение) действия += анализ(изображение, юниты, карты, мана)
Пока бот умеет только ставить юнитов в одну точку, но уже имеет достаточно информации, чтобы построить более сложную стратегию.
Первые проблемы
В реальности я столкнулся с неожиданной и очень неприятной проблемой. Создание скриншота через ADB занимает около 100 мс, что вносит значительную задержку — я рассчитывал на такую максимальную задержку, учитывая все расчеты и выбор действия, но не на одном шаге создания скриншота. Простого и быстрого решения найти не удалось. В теории, используя эмулятор Android, можно снимать скриншоты прямо с окна приложения, или можно сделать утилиту для стриминга изображения с телефона со сжатием через UDP и подключиться ботом к ней, но быстрых решений тут я тоже не нашел.
Итак
Трезво оценив состояние моего проекта, на этой модели я решил пока остановиться. Я потратил на это несколько недель своего свободного времени, а ведь распознавание юнитов — это только часть игрового процесса.
Я решил развивать части бота постепенно — сделать базовую логику восприятия, затем простую логику игры и взаимодействия с игрой, а потом уже можно будет улучшать отдельные проседающие части бота. Когда уровень модели распознавания юнитов станет достаточным, добавление информации о HP и уровне юнитов может вывести развитие игрового бота на качественно новый этап. Возможно, это станет следующей целью, но сейчас точно не стоит зацикливаться на этой задаче.
Репозиторий проекта на Github
Я потратил на проект достаточно много времени и, честно говоря, устал от него, но ни капли не жалею — я получил новый опыт в ML/CV.
Может быть, я вернусь к нему позже — буду рад, если кто-то присоединится ко мне. Если вам это интересно, вступайте в группу в Telegram, а также приходите на мой курс по Scala.
Флеш Рояль в покере – что это такое, картинки с примерами
Материал обновлен: 08.11.2022
О карточной комбинации Рояль Флэш наслышаны и люди далекие от покера. Часто при просмотре фильмов о карточных играх и казино можно видеть, как герои ликовали при получении Королевского Флеша. Причина – полная победа над соперниками, выигрыш всего банка.
Несмотря на известность «королевской» комбинации, не каждый знает, что такое Роял Флеш в покере, способы образующие сочетание, как выстраивать стратегию розыгрыша и состав карт.
Содержание
- Определение термина
- Варианты составления
- Вероятность составления
- Стратегия розыгрыша
- Итоги
Определение термина
На картинке: Флеш Рояль образуют 5 одномастных карт от 10 до А – это старшая разновидность Стрит-Флеша. Туз в раскладе – самая сильная карта, далее идут все остальные фигуры по порядку вниз по номиналу.
По рангу классических покерных комбинаций рука не проигрывает ни одному другому раскладу.
Различают четыре варианта Королевского Флеша:
- пиковый – 10♠-J♠-Q♠-K♠-A♠;
- червовый – 10♥-J♥-Q♥-K♥-A♥;
- трефовый – 10♣-J♣-Q♣-K♣-A♣;
- бубновый – 10♦-J♦-Q♦-K♦-A♦.
Все перечисленные подборки равнозначны по силе – в покере масть не учитывается при определении старшинства руки. Если в раздаче два и более игрока составили «королевское» сочетание, что возможно в 7-карточном и 5-карточном покере, банк делится поровну. Сталкиваться со спорными ситуациями при получении подобной руки будете редко, ввиду малой вероятности сбора.
Варианты составления
В Техасском Холдеме существует несколько вариантов получения «королевской» руки:
- На общих картах – сочетание образовалось на столе, принадлежит всем участникам игры. Банк разделяется поровну между игроками, дошедшими до шоудауна.
- На основе одной карманки – для сбора полноценной подборки используются четыре фигуры борда.
- С использованием двух стартеров и трех фигур борда – часто встречающийся вариант получения беспроигрышного сочетания.
Вероятность составления
В голливудских фильмах герои с завидной регулярностью составляют Flash Royal. В реальной игре получить подобную руку не удается — некоторые опытные покеристы, играя по нескольку лет, не могут собрать заветную комбинацию. Причина в малой вероятности получения «королевской» руки — 1 к 649739.
Шансы выпадения комбинации в разных дисциплинах:
Техасский Холдем
- С раздачи пришли 2 подходящих карты для построения расклада – шансы собрать полноценную руку на флопе равны 0. 0008%.
- На второй улице 4 подходящих фигуры, вероятность достроить руку на терне 2%, на ривере – 4%.
- На терне недостает одной фигуры для получения готового расклада, шанс попадания в борд на ривере – 2%.
Омаха
- Две карманных карты подходят для построения комбинации, получить на флопе готовую руку удастся с вероятностью 0.001%. Если с раздачи пришли 4 стартовых карты, открывающих возможность для построения «королевского» сочетания (например, Q-K червы и трефы), шанс попасть в борд на флопе и получить готовый расклад равен 0.002%.
- На второй улице недостает одной фигуры для составления полноценного расклада, шанс улучшиться на терне – 2%, на ривере — 4.5%.
- На терне Дро, вероятность собрать подходящую фигуру на последней улице 2%.
Дро-покер
- При обмене 5 карт, вероятность собрать готовое сочетание 00015%.
- Оставив 2 одномастных фигуры и обменяв остальные, шанс составить полноценную руку равен 0.0008%.
- При наличии 3 одномастных карт и обмене двух других, вероятность получения готового расклада составляет 0. 05%.
- Оставив 4 одномастных фигуры и обменяв одну, шанс достроить сочетание равен 2%.
При изучении покерных комбинаций новичкам рекомендуется ознакомиться с вероятностями их получения. Станет проще определять, шанс собрать ту или иную руку, тактику розыгрыша. Рассмотрим далее… Читать далее
Стратегия розыгрыша
Несмотря на 100% победу с Роял Флэш, игроку требуется придерживаться правильной тактики розыгрыша. Выбор стратегии зависит от двух ключевых факторов – принципа образования комбинации, стиля игры противников:
- Общий расклад. Видя, что на борде открываются перспективы для образования беспроигрышной комбинации, не делайте крупных вложений. Помните, пот в подобной ситуации делится между оставшимися участниками. Полученный выигрыш едва покроет затраты на ставки в раздаче. Если на ривере не откроется нужная карта, у одного из соперников может оказаться обычный или самый старший Стрит-Флеш.
- Комбинация на основе одной карманки. Делайте умеренные повышения играя с тайтовыми соперниками, чтобы избежать получения в ответ фолда. Более крупные ставки совершайте против агрессивных оппонентов. Избегайте чрезмерно больших рейзов, помните – на борде открыты 4 одномастных фигуры, идущих по рангу последовательно. Сочетание дает понять соперникам, существует вероятность получения пусть не «королевской» руки, но хотя бы Стрит-Флеш или Флеш. Повышенные рейзы приведут к фолду и от агрессивных противников. Резко делать олл-ин аналогично не рекомендуется, подтолкнете соперников выйти из игры.
- Сочетание на основе двух стартеров. Соперникам сложнее предположить наличие беспроигрышной руки — действуйте более активно, делайте крупные повышения, вынуждайте противников по максимуму вкладываться в пот. На рейзы с вашей стороны ответят даже тайтовые соперники, подозревая вас в блефе.
Помните, в популярных покер-румах игроку выплачивается бонус за сбор «королевской» руки. Размер поощрения нередко превышает сумму выигрыша в раздаче.
Итоги
Мы рассмотрели, что такое Флеш Рояль в покере – это сильнейший карточный расклад, обеспечивающий 100% победу в раздаче. Вероятность получить сочетание крайне мала, поэтому опытные игроки сосредотачиваются на сборе менее сильных раскладов. Если же удается собрать «королевскую» руку, покеристы выбирают оптимальную линию розыгрыша с целью получения максимального выигрыша.
Остались вопросы? Задайте их нам. Наша редакция даст развернутые ответы в ближайшее время.
Поделиться:
Автор
Андрей Свириденко
Автор
Пишу о теории, продвинутых стратегических концепциях, на базовом уровне разбираюсь в GTO. Помимо покера увлекаюсь настольным теннисом и сталкерской культурой
Top Clash Royale Cards
LadderTournamentsGrand ChallengeClassic Challenge2V2 Битва
All Arenasarena 1Arena 2Arena 3Arena 4Arena 5Arena 6Arena 7Arena 8Arena 9ARENA 10Arena 11Arena 12Arena 13Arena 14
. 72,8%
+8,65 %
Использование
39,1%
+9,97 %
Сборная колода
Валькирия
Винрейт
70,9%
+8,86 %
Использование
38,4%
+1,63 %
Сборка колоды
Стрелки
Процент побед
71,9%
+8,68 %
Использование
37,3%
+4,98 %
Сборка колоды
Журнал
Процент побед
67,2%
+9,53 %
Использование
32,6%
–1,91 %
Построить колоду
Огненный шар
Винрейт
72,5%
+9,65 %
Использование
32,4%
+2,24 %
Сборка колоды
Армия скелетов
Процент побед
66,3%
+5,49 %
Использование
29,1%
–2,81 %
Колода сборки
Гоблинская бочка
Процент побед
71,2%
+11,25 %
Использование
25,9%
–2,72 %
Колода сборки
Мега Рыцарь
Процент побед
66,6%
+8,28 %
Использование
25,8%
+0,75 %
Сборка колоды
Всадник на кабане
Коэффициент выигрыша
63,3%
+4,5 %
Использование
24,1%
+0,52 %
Сборка колоды
Ведьма
Процент побед
67,4%
+7,08 %
Использование
21,8%
–3,99 %
Колода сборки
Зап
Винрейт
66,0%
+5,93 %
Использование
20,9%
–2,21 %
Сборка колоды
Мушкетер
Процент побед
76,7%
+10,98 %
Использование
20,8%
+1,21 %
Сборка колоды
Лучники
Процент побед
67,2%
+0,91 %
Использование
20,2%
+4,63 %
Колода сборки
Дракончик
Процент побед
68,4%
+7,21 %
Использование
20,1%
+3,55 %
Сборка колоды
Рыцарь
Процент побед
75,1%
+10,97 %
Использование
17,7%
+0,8 %
Колода сборки
Волшебник
Процент побед
67,1%
+7,74 %
Использование
17,4%
–2,77 %
Колода сборки
Электро Волшебник
Процент побед
71,9%
+14. 11 %
Использование
16,2%
–2,48 %
Колода сборки
Принцесса
Процент побед
64,9%
+7,56 %
Использование
15,3%
+3,23 %
Сборка колоды
Летучие мыши
Процент побед
59,8%
+1,96 %
Использование
12,7%
+1,59 %
Колода сборки
Гигант
Винрейт
78,6%
+8,45 %
Использование
11,9%
+2,03 %
Колода сборки
Банда гоблинов
Процент побед
68,6%
+10,74 %
Использование
11,0%
+0,62 %
Сборка колоды
Миньоны
Процент побед
72,0%
+6,22 %
Использование
10,8%
–1,06 %
Колода сборки
П. Е.К.КА
Процент побед
63,9%
+3,68 %
Использование
10,7%
–0,38 %
Сборка колоды
Пушка
Процент побед
65,5%
+6,03 %
Использование
10,2%
+0,69 %
Сборка колоды
Бомбардировщик
Процент побед
80,4%
+14,65 %
Использование
9,9%
+2,44 %
Колода сборки
Адский дракон
Процент побед
60,0%
+2,44 %
Использование
9,3%
–0,93 %
Колода сборки
Скелеты
Процент побед
60,0%
+2,16 %
Использование
9,0%
–0,38 %
Сборка колоды
Хижина гоблинов
Коэффициент выигрыша
74,2%
+8,17 %
Использование
8,8%
+1,7 %
Сборка колоды
Майнер
Процент побед
66,9%
+10,03 %
Использование
8,8%
+0,97 %
Сборка колоды
Ледяной дух
Процент побед
65,1%
+8,92 %
Использование
8,7%
–1,5 %
Колода сборки
Гоблин-дротик
Процент побед
54,6%
–2,56 %
Использование
8,4%
–2,21 %
Сборка колоды
Адская башня
Процент побед
67,5%
+10,57 %
Использование
8,3%
–0,8 %
Колода сборки
Фейерверк
Процент побед
59,8%
+3,14 %
Использование
8,1%
+0,88 %
Колода сборки
Гоблины
Процент побед
72,6%
+9,04 %
Использование
7,8%
–0,24 %
Сборка колоды
Воздушный шар
Процент побед
64,6%
+6,18 %
Использование
7,8%
–0,5 %
Колода сборки
Ракета
Процент побед
58,7%
+2,96 %
Использование
7,2%
+2,75 %
Сборка колоды
Гоблины-копейщики
Процент побед
79,6%
+15,42 %
Использование
7,1%
+1,22 %
Сборка колоды
Бандит
Процент побед
78,1%
+20,97 %
Использование
6,6%
–0,19 %
Сборка колоды
Боевой таран
Процент побед
81,8%
+21. 24 %
Использование
6,1%
+1,86 %
Сборка колоды
Надгробие
Коэффициент выигрыша
71,6%
+10,53 %
Использование
6,1%
+1,57 %
Сборка колоды
Принц
Процент побед
71,3%
+10,83 %
Использование
6,0%
–3,13 %
Колода сборки
Торнадо
Процент побед
59,0%
+5,26 %
Использование
5,7%
+0,89 %
Сборка колоды
Магический лучник
Процент побед
67,5%
+11,71 %
Использование
5,7%
+0,3 %
Колода сборки
Темный принц
Процент побед
69,2%
+9,52 %
Использование
5,4%
–1,04 %
Колода сборки
Варварская бочка
Процент побед
71,6%
+12,81 %
Использование
5,1%
–0,28 %
Колода сборки
Тесла
Процент побед
63,0%
+6,16 %
Использование
5,0%
–1,99 %
Колода сборки
Яд
Процент побед
69,4%
+12,89 %
Использование
5,0%
+0,59 %
Колода сборки
Элитные варвары
Процент побед
56,5%
+0,13 %
Использование
4,8%
–3,71 %
Сборка колоды
Дровосек
Процент побед
72,1%
+14,44 %
Использование
4,7%
–1,61 %
Сборка колоды
Бомбовая башня
Процент побед
62,1%
+4,79 %
Использование
4,6%
+2,44 %
Колода сборки
Спарки
Процент побед
59,4%
+2,66 %
Использование
4,4%
+0,68 %
Сборка колоды
Орда миньонов
Процент побед
60,7%
+5,2 %
Использование
4,2%
–0,01 %
Сборка колоды
Стенобои
Процент побед
59,0%
+0,2 %
Использование
4,2%
–0,84 %
Сборка колоды
Заморозка
Процент побед
58,6%
+3,89 %
Использование
4,0%
–0,66 %
Колода сборки
Палач
Процент побед
57,9%
+2,23 %
Использование
3,9%
–0,48 %
Сборка колоды
Охрана
Процент побед
71,4%
+10,28 %
Использование
3,9%
–0,13 %
Сборка колоды
Наездник на баране
Процент побед
59,6%
+2,33 %
Использование
3,6%
–0,09 %
Колода сборки
Феникс
Процент побед
66,7%
+10,4 %
Использование
3,5%
–0,48 %
Сборка колоды
Ледяной голем
Процент побед
58,8%
+4,97 %
Использование
3,5%
+0,12 %
Колода сборки
Королевский призрак
Процент побед
70,2%
+14,57 %
Использование
3,2%
+0,84 %
Сборка колоды
Ice Wizard
Процент побед
66,0%
+8,62 %
Использование
3,2%
–0,1 %
Колода сборки
Клетка гоблинов
Коэффициент выигрыша
78,6%
+11,51 %
Использование
2,9%
+0,1 %
Колода сборки
Ярость
Процент побед
53,7%
–0,33 %
Использование
2,8%
–1,44 %
Колода сборки
Гигантский скелет
Процент побед
61,5%
+3,97 %
Использование
2,7%
–0,85 %
Сборка колоды
Electro Spirit
Процент побед
63,2%
+5,07 %
Использование
2,6%
+0,01 %
Сборка колоды
Мегаминьон
Процент побед
65,8%
+2,65 %
Использование
2,6%
–0,88 %
Сборная колода
Золотой рыцарь
Винрейт
63,2%
+10,49 %
Использование
2,6%
–0,49 %
Сборка колоды
Дух огня
Процент побед
77,4%
+21,51 %
Использование
2,1%
–1,01 %
Сборка колоды
Электрогигант
Процент побед
60,0%
+5,43 %
Использование
2,1%
–0,49 %
Построить колоду
Молния
Винрейт
70,0%
+14,56 %
Использование
2,1%
–0,47 %
Колода сборки
Варвары
Процент побед
36,7%
–22,55 %
Использование
2,1%
–1,23 %
Сборка колоды
Землетрясение
Процент побед
51,7%
–1,97 %
Использование
2,0%
+0,74 %
Колода сборки
Зеркало
Винрейт
37,9%
–12,63 %
Использование
2,0%
–0,76 %
Колода сборки
Королевский великан
Процент побед
57,1%
+1,76 %
Использование
1,9%
–0,19 %
Колода сборки
Бочка со скелетами
Процент побед
45,5%
–10,56 %
Использование
1,5%
–0,95 %
Колода сборки
Гигантский снежок
Процент побед
75,0%
+21,59 %
Использование
1,4%
–0,33 %
Сборка колоды
Арбалет
Процент побед
80,0%
+24,55 %
Использование
1,4%
+0,05 %
Сборка колоды
Могучий шахтер
Коэффициент выигрыша
68,4%
+10,08 %
Использование
1,3%
+0,46 %
Сборка колоды
Голем
Процент побед
38,9%
–20,3 %
Использование
1,2%
–1,21 %
Сборка колоды
Кладбище
Процент побед
64,7%
+10,62 %
Использование
1,2%
–0,44 %
Колода сборки
Ночная ведьма
Процент побед
64,7%
+6 %
Использование
1,2%
–0,17 %
Сборка колоды
Драконы-скелеты
Процент побед
76,5%
+23,92 %
Использование
1,2%
+0,22 %
Сборка колоды
Рыбак
Процент побед
62,5%
+6,84 %
Использование
1,1%
+0,03 %
Колода сборки
Королевские кабаны
Процент побед
43,8%
–6,3 %
Использование
1,1%
–0,07 %
Колода сборки
Гоблин-гигант
Процент побед
62,5%
+5,98 %
Использование
1,1%
+0,62 %
Сборка колоды
Эликсирный голем
Процент побед
50,0%
+1,73 %
Использование
1,1%
+0,14 %
Сборка колоды
Электродракон
Процент побед
57,1%
+4,3 %
Использование
1,0%
–0,24 %
Колода сборки
Мортира
Процент побед
53,9%
+0,12 %
Использование
0,9%
–0,28 %
Сборка колоды
Король скелетов
Процент побед
63,6%
+14,63 %
Использование
0,8%
–0,56 %
Сборка колоды
Негодяи
Процент побед
63,6%
+2,56 %
Использование
0,8%
+0,45 %
Сборка колоды
Лавовая гончая
Процент побед
72,7%
+16,22 %
Использование
0,8%
–0,07 %
Колода сборки
Монах
Процент побед
20,0%
–30,32 %
Использование
0,7%
+0,3 %
Колода сборки
Сборщик эликсира
Процент побед
50,0%
–2,91 %
Использование
0,7%
–0,13 %
Сборка колоды
Боулер
Процент побед
33,3%
–23,88 %
Использование
0,6%
–0,69 %
Сборка колоды
Охотник
Процент побед
55,6%
–5,46 %
Использование
0,6%
–0,97 %
Колода сборки
Летающая машина
Процент побед
44,4%
–8 %
Использование
0,6%
–0,27 %
Сборка колоды
Боевой целитель
Процент побед
37,5%
–17. 08 %
Использование
0,6%
+0,08 %
Колода сборки
Мать-ведьма
Процент побед
50,0%
–3,45 %
Использование
0,6%
–0,96 %
Сборка колоды
Королевские рекруты
Коэффициент выигрыша
28,6%
–22,4 %
Использование
0,5%
+0,05 %
Колода сборки
Печь
Процент побед
71,4%
+18.08 %
Использование
0,5%
–0,66 %
Сборка колоды
Королева лучниц
Процент побед
80,0%
+22,68 %
Использование
0,4%
–0,17 %
Сборная колода
Повозка с пушкой
Процент побед
25,0%
–28. 09 %
Использование
0,3%
–0,32 %
Сборка колоды
Heal Spirit
Процент побед
0,0%
–49,49 %
Использование
0,2%
–0,29 %
Колода сборки
Клон
Процент побед
50,0%
+0,58 %
Использование
0,1%
–0,97 %
Колода сборки
Королевская доставка
Процент побед
100,0%
+45,69 %
Использование
0,1%
–0,51 %
Сборка колоды
Zappies
Процент побед
100,0%
+46,53 %
Использование
0,1%
–0,55 %
Сборка колоды
Три мушкетера
Процент побед
100,0%
+51,82 %
Использование
0,1%
–0,3 %
Строительная колода
Хижина варвара
Винрейт
100,0%
+60,51 %
Использование
0,1%
–0,05 %
Сборка колоды
Гоблинская дрель
Коэффициент выигрыша
0,0%
–48,51 %
Использование
0,0%
–0,34 %
Сборка колоды
Супер-магический лучник
Процент побед
0,0%
+0 %
Использование
0,0%
+0 %
Построить колоду
Всадник Санта-Кабана
Процент побед
0,0%
+0 %
Использование
0,0%
+0 %
Сборка колоды
Колоды Clash Royale, характеристики карт, жетоны, синергия
Ведьма
Эпический · Арена 6 А6Очки здоровья | 838 |
---|---|
Ущерб | 134 |
Скорость попадания | 1. 1 |
Диапазон | 5 | г.
Скорость | Середина |
Лучшие колоды Лучшие колоды с картой «Ведьма»
Отражения в ледяной колоде
Колода eBarb Rush от OJ
Гоблинские дрели-разрушители стен
Суперведьма Король скелетов Голем
Супер Ведьма Королевский Гигант
Больше колод Ведьмы
Статистика карт
Уровень | Очки HP | Повреждать Урон | г.|
---|---|---|---|
6 | 524 | 84 | Уровень 6 |
7 | 576 | 92 | Уровень 7 |
8 | 634 | 101 | Уровень 8 |
9 | 696 | 111 | Уровень 9 |
10 | 765 | 122 | Уровень 10 |
11 | 838 | 134 | Уровень 11 |
12 | 922 | 147 | Уровень 12 |
13 | 1011 | 162 | Уровень 13 |
14 | 1110 | 178 | Уровень 14 |
15 (Зеркальное) (Зеркало. ) | 1220 | 195 | Уровень 15 |
Не убит
Заклинание | Урон |
---|---|
1056 -1 | |
1484 -1 |
Комбинация заклинаний | Урон |
---|---|
482 | |
656 | |
881 -1 | |
979 -1 | |
920 -1 | |
1018 -1 |
Экспертная зона
Свойства и роли Ведьмы
Вложение эликсира Слаб при низком уровне Угроза нападения Угроза обороне
Войска дальнего боя Сухопутные войска Зенитные войска Разрядная приманка Бревенчатая наживка Наживка для снежков Приманка для стрел Ракетная приманка Молниеносная приманка Ядовитая приманка Приманка для огненного шара Всплеск, атакующий воздух Создатель отряда Наживка из варварской бочки Землетрясение Приманка Приманка для королевской доставки Убийца наземных танков
Противостоит Ведьме 86
/110Карты, полностью или частично противодействующие Ведьме. Карты, которые эффективны в остановке карты «Ведьма» или помогающие смягчить удар. Затемненная карта = менее эффективная, но все же контратака.
Противодействие атакующей Ведьме 53
/110Противодействие защищающейся Ведьме 33
/110Ведьма может отменять эти карты 81
/110Карты, которые полностью или частично отменяет Ведьма. Карты, которые может остановить Ведьма или помочь смягчить удар. Затемненная карта = менее эффективная, но все же контратака.
Ведьма может противостоять этим картам атаки 57
/110Ведьма может противостоять этим картам защиты 24
/110Синергия Ведьмы 68
/110Карты, которые хорошо работают с Ведьмой. Затемненная карта = менее эффективная, но все же синергия.
Синергия атаки ведьмы 36
/110Синергия защиты ведьмы 32
/110Магазин колод поддержки при покупке драгоценных камней, предложений или Pass Royale! Воспользуйтесь магазином кодов.