Универсальный ключ к победе, как запретный плод — очень хочется его съесть, но заполучить очень трудно.
Пройдя курс по программированию для креативных индустрий, я подумала, что это поможет мне приблизиться к цели и создать лучшую колоду в игре Clash Royale.
Сначала нужно было найти и систематизировать данные каждой игровой карты. Большую часть информации я брала с двух сайтов по игре и впоследствии переносила данные в таблицу, с которой уже работала в дальнейшем.
Первостепенной задачей было узнать топ карт по разным характеристикам
К сожалению, моих навыков и уровня доступа пока недостаточно для комплексного анализа, поэтому я выбрала несколько конкретных (самых важных) параметров, с которыми в дальнейшем работала. Но даже в условиях сжатого датасета не всю информацию удалось найти, и для упрощения она считалась по медиане.
Для оптимизации анализа были созданы новые метрики, такие как: • эффективность здоровья (HP/эликсир) • эффективность урона (DPS/эликсир) • охват (для массовых карт)
Визуализация анализа карт Clash Royale по отношению показателя Hitpoint к Cost
Визуализация анализа карт Clash Royale по отношению показателя Damage к Cost
Второй задачей было вывести формулы расчета лучшей карты по нескольким показателям
Было принято решение вывести первую формулу из базовых показателей: DPS (урон в секунду), HP (здоровье), Cost (количество эликсира).
Сама формулы выглядит так: Score1 = 0.6 × (DPS × Count / Cost) + 0.4 × (HP × Count / Cost)
60% было выделено урону, так как игре атака более выгодна, чем защита (здоровье 40%).
Главной задачей было вывести объективный список самых экономически выгодных инструментов для победы.
Визуализация результатов вычислений эффективности карт по первой формуле
Универсальность карты так же один из важнейших показателей. Именно его рассчитывает вторая формула. Для сравнения таких разных аспектов как: Cost, DPS, HP и Range; было необходимо свести все переменные к одной системе. С помощью нормализации каждому параметру был присвоен определенный вес (дальность - 1.1 / здоровье - 1.2 / урон - 1.3 / стоимость - 1.4). Так как идеальная универсальная карта — это прежде всего недорогая, при этом наносящая хороший урон, достаточно живучая и, по возможности, имеющая приличную дальность.
Формула 2 - среднее нормализованных значений: Score2 = (1.4×Cost_norm + 1.3×DPS_norm + 1.2×HP_norm + 1.1×Range_norm) / (1.4+1.3+1.2+1.1)
Визуализация результатов вычислений универсальности карт по второй формуле
Цель третьей формулы — создать итоговый, нормализованный рейтинг, который объединяет два разных подхода к оценке карты:
Final_Score = 0.5 × Score1_norm + 0.5 × Score2_norm
Здесь также используется нормализация в безразмерную шкалу от 0 до 1 для приведения значений к общему масштабу:
• Score1_norm = Score1 / max(Score1) • Score2_norm = Score2 / max(Score2)
Визуализация результатов вычислений комплексной оценки карт по третьей формуле
Третьей по счету была задача понять, как дела обстоят на самом деле:
Какие колоды сейчас популярнее и выигрышнее сейчас в комьюнити?
Это первое столкновение теории и практики. Благодаря показателям Usage и Win можно почти в реальном времени отслеживать, какие карты пользуются большей популярностью и чаще находятся в выигрышных колодах.
Соответствуют ли самые популярные карты самым эффективным? Или побеждают вопреки точному расчету?
Из топ-10 карт в теории и на практике есть только один герой - это Mini P.E.K.K.A.
Скорее всего это обусловлено соотношением урона к эликсиру, так как эта карта стоит всего 4, а сносит противнику целых 755 единиц здоровья.
Визуализация карт Clash Royale по показателю Usage (данные актуальны на период с 15.12 по 21.12)
По проценту побед определенной карты совпадений еще меньше - только Golem встречается в топ-20 на обоих графиках.
По большей части это связано с популярностью определенных колод. Чаще это происходит не путем поиска собственного сочетания, а путем заимствования удачных колод у лидеров CRL (профессиональной игровой арены), что приводит к высокому рангу этих карт.
Визуализация карт Clash Royale по показателю Win (данные актуальны на период с 15.12 по 21.12)
Так какая же карта лучше?
Финальная оценка объединяет теорию и практику.
Final_Score = 0.35×Score1 + 0.35×Score2 + 0.20×Win_Rate + 0.10×Usage_Rate
• Score1 - базовая эффективность (урон + здоровье) • Score2 - универсальность (баланс характеристик) • Win_Rate - процент побед (нормализованный) • Usage_Rate - частота использования (нормализованная)
Валидация через Win/Usage Rate проверяет теоретических лидеров на прочность в реальных боях и актуальность в мете.
Визуализация результатов вычисления лучшей карты по всем показателям
По отдельности герои могут быть самыми сильными, но без грамотной компоновки игровая колода из 8 карт может быть не выигрышной.
Перед погружением в код важно понять ограничения, которые легли в основу алгоритма:
• Бюджет цикла: средняя стоимость колоды должна быть ≤ 4.5 эликсира для поддержания приемлемой скорости игры.
• Распределение стоимости: колода должна содержать карты разной стоимости (1-2 дешёвые, 3-4 средние, 1-2 дорогие) для гибкости.
• Минимизация пересечений: разные стратегические колоды должны иметь не более 4 общих карт, чтобы предлагать действительно различные игровые стили.
Предложенная алгоритмом колода — Вариант 1
Предложенная алгоритмом колода — Вариант 2
Предложенная алгоритмом колода — Вариант 3
Все три колоды довольно жизнеспособны, но ощущается недоработанность, из-за ограниченности данных (разделения на здания/ воздушные карты/ заклинания/ герои и прочие многочисленные нюансы).
При сражении ими на равных условиях (11 уровень и отключение эволюций), я побеждала примерно в 2-4 случаях из 10: больше на агрессивной, чуть меньше на сбалансированной и редко на защитной.
Анализ существующих колод




