Приветствуем, геймер! Ты можешь или
16+
Avatar

Автор h1300484 1

20

Кто и как использует ботов в Hearthstone

Ни для кого не секрет, что в онлайн-покере, где-то половина игроков – боты. А вы удивитесь, если я скажу, что в Hearthstone – их тоже вагон?

На самом деле это действительно так. Боты в Hearthstone играют вместо людей, и результатом становится очевидное: компьютер почти всегда выигрывает. В этом посте (осторожно: СТЕНА ТЕКСТА) я опишу как эти боты работают и что в них такого интересного. Пост понравится как игрокам Hearthstone так и технарям :)

Давайте начнем с простого.

Представьте что вы готовы биться с врагом. Допустим у врага 1/2, 2/3, 3/4 и 4/5 (без особых способностей) а у вас 2/1, 3/2, 4/3 и 5/4. Можете ли вы в уме посчитать оптимальный план атаки? Может да, а может и нет, а вот компьютер может, причем с учетом возможного ответного хода противника:

Enemy's army: 1/2 2/3 3/4 4/5

My army: 2/1 3/2 4/3 5/4

Total number of realized games with retaliations: 925

Best score is 10

My actions:

- 2/1 attacks enemy hero.

- 3/2 attacks enemy's 1/2.

- 4/3 attacks enemy's 2/3.

- 5/4 attacks enemy's 3/4.

Enemy's response:

- 4/5 attacks enemy hero.

Result: 2/1 3/1 4/1 5/1 [26] vs. [28] 4/5

We took 1895 iterations.

Рассчет занял долю секунды, т.е. был сделан моментально.

Пример выше — это обычная считалка возможного боя. Как видите, она посчитала, как прецезионно ударить по существам врага так чтобы оказаться в плюсе, с учетом худшего для нас ответного хода противника.

Этот пример очень прост, т.к. не учитывает вообще никаких правил Hearthstone. А настоящая считалка учитывает все правила и способна просчитывать не один-два хода в глубину, а несколько.

В отличии от MtG и схожих игр, ограниченное количество карт на столе означает, что комп может просчитать вообще все варианты игры (без учета новых взятых карт). Конечно, это не совсем получается на обычном железе: рассчет 7x7 придется ждать ой как долго, но для этого есть решения.

Что делает бот?
Бот -- это прога которая реализует набор всех правил всех карт в Hearthstone. Это только звучит страшно, но 99% карт в игре -- по сути одни и те же с разными вариациями, а тот 1% что остался -- тут кодеру уже нужно попотеть.

Бот вообще делает всякие разные вещи. Обсчитать бой -- это вообще не задача, а вот обсчитать Арену, т.е. подсказать, какие карты брать - это намного сложнее. Для этого нужно симулировать, то есть прогонять игры с колодами против других колод в режиме искусственного интелекта. Только тут уже не подойдет прогон всех вариантов, ибо их слишком много. Вместо этого, симулируются случайные Аренные колоды, и против них проводятся бои. Это называется Монте-Карло. Чем больше у вас "железа", тем больше вы таких боёв насимулируете.

Арена, при условии хорошей колоды (что далеко не гарантировано, даже с ботами) даст вам шанс заработать столько золота и пыли, что платить реальные деньги за квест и карты уже как бы не нужно.

Захват трафика
Видели у известного китайца когда он играет в Арену виден список его колоды? Вы думаете там сидит 2й китаец и набивает это руками. Фигвам. Вместо этого, у него стоит программка, которая делает "оверлей" (накладывание поверх) инфы про колоду, перехватывая общение игры с серваком.

Вообще, Hearthstone отреверсили давно, т.к. он использует Unity, и соответственно весь протокол общения игры с серваком уже известен. Дальше можно пропихнуть прослушку (например winpcap) между вами и серваком и всё, вы записываете трафик. Бот разбирает трафик на куски, обрабатывает их и считает по ним всё, что можно посчитать.

Обсчет игры
Когда я пишу, что обычного домашнего компа хватит чтобы обсчитать Hearthstone -- я все-таки немного лукавлю. Битва 7x7 уже считается слишком долго (несколько минут), а если еще есть возможность карты сыграть, все, пишите пропало.

Для того чтобы считать такие модели, боты во-первых используют "урезки" (annealing) - пытаются не считать те варианты, которые являются идентичными. Например, если у вас два одинаковых существа, порядок в котором они бьют - почти всегда не важен. Нормально запрограммированый бот легко может найти такие случае и "свернуть" все лишние.

Когда не хватает железа, люди обычно просто обрезают глубину рассчетов, или дают игроку сделать несколько ходов вручную чтобы пространство поиска было поуже. Но изобретательные технари также используют сопроцессоры и кластеры чтобы ускорить рассчеты. Это слишком технические детали.

Машинное обучение
Это еще один подход, на котором тоже пишутся боты. Вместо того чтобы обсчитывать все правила, компьютер просто играет огромное количество игр "наугад" и учится методами машинного обучения (нейросети). В этом случае не нужно даже знать как обрабатывать правила, т.к. весь алгоритм - это черный ящик.

Этот подход позволил как минимум одному боттеру дойти до легендарного уровня, так что он определеннно работает.

Как вы понимаете, использование ботов нарушает лицензионное соглашение Blizzard, да и просто портит кайф от игры всем остальным. Вот тут владелец ботов говорит, что его бот разделывал лучших стримеров. Вот небольшой видосик чтобы посмотреть как это происходит вживую:

Мой бот порой разделывает не только стримеров, но и чужих ботов, просто потому что лучше написан и использует хитрое компьютерное железо.

Ну и наконец, хочу заметить, и это важно, что бот всегда знает когда нужно сдаться -- вместо того, чтобы тянуть резину, если он видит что вероятность проигрыша очень велика, он моментально сдается и тем самым экономит время всем - и мне, и вам.

У меня всё. Если есть вопросы -- задавайте, постараюсь ответить.

20
Еще в блоге
Интересное на Gamer.ru

5 комментариев к «Кто и как использует ботов в Hearthstone»

    Загружается
Чат