Автор о себе

Я, Тома Баккер – двадцатиоднолетний студент из Нидерланд, работающий над получением учёной степени в области математики и компьютерных наук.

В период между августом и декабрём 2010 года, Ноа Стивенс-Давидович и я были наняты в качестве независимых консультантов для определения уязвимостей в программном обеспечении Cake Poker. Благодаря проделанному анализу мы разработали метод, применив который к данным Cake за последние 18 месяцев были обнаружены и устранены дыры в безопасности сети. В декабре 2010-го на страницах Two Plus Two Publishing появилась моя книга «Analytical No-Limit Hold ‘em».

В мае 2011 года, Ноа Стивенс-Давидович и я создали информационный ресурс Subject: Poker, в команду которого, некоторое время спустя, вошли ещё четверо человек.

:: :: :: :: :: :: ::

Создавая этот блог я планирую написать целую серию заметок о покер ботах и их влиянии на онлайн покер. Рассматриваемая тема огромна и поэтому её обзор будет разбит на несколько частей. Я попытаюсь рассказать вам о явлении боттинга, его истории и текущем статусе, а также различных техниках создания искусственного интеллекта. Я даже могу научить вас – как создать элементарного бота для игры в покер… но сегодняшний пост будет вводным.

Сдалось тебе создание этой серии блогов?

Боттинг это горячая тема, о чем свидетельствует поведение многих сообществ на сегодняшний день. Однако что более очевидно – большинство пользователей, оставляющих свои комментарии в соответствующих темах, совершенно не располагают информацией о том, чем в действительности являются боты, как они работают и как далеко зашло их развитие. Именно по этой причине мы видим сообщения в духе «Меня не волнует эта проблема, потому что…»:

… боты не могу играть лучше, чем их разработчик;
… боты не могут переиграть человека;
… боты не могут подстраиваться;
… в своих играх я лучше любого бота;

… и другие анaлoгичные заявления, которые, на самом деле, являются глубокими заблуждениями. Как раз оные я и планирую развеять. Боты – реальная и большая проблема: они выкачивают из экономики онлайн покера миллионы долларов и если не предпринять меры, то дело примет более драматический оборот. В то же время – покер боты являются очень интересной областью знаний, изучение которой позволяет узнать больше не только о явлении искусственного интеллекта, но также теории игр, математике и информатики в целом. Если данные направления сами по себе будоражат чей-то интерес, то это станет дополнительным стимулом к ознакомлению с данной серией блогов.

 
А с чего бы мне верить чему-то, о чём ты говоришь?

Я интересовался искусственным интеллектом в покере на протяжении многих лет. Мне посчастливилось прочесть больше количество форумных многотомников о боттинге, изучать научные труды создателей покер ботов и, соответственно, создать собственного бота. Но, разумеется, я никогда не использовал ботов для заработка реальных дeнeг за столами онлайн румов. Так или иначе, вы можете получить больше информации обо мне в соответствующем разделе моего сайта.

:: :: :: :: :: :: ::

Несколько терминов

Во-первых, давайте определим ряд терминов, просто чтобы знать – о чем вообще мы с вами говорим. Как вы, скорее всего, знаете, бот это компьютерная программа, которая умеет играть в онлайн покер. Состоит эта программа из двух основных частей:

1. Стратегический движок – интеллект покер бота;
2. Движок взаимодействий – вспомогательные функции бота, которые позволяет ему работать с клиентским программным обеспечением рума;

Следовательно, держите в уме информацию ¬– когда я говорю «покер бот», я подразумеваю стратегический движок, который и ответственен за само поведение бота за столами. На всякий случай я бы хотел развеять нераспространённое (или распространённое) мнение о том, что покер бот это какой-то робот, сидящий за монитором компьютера и физически передвигающий мышку. Боты, в 99% случаев – позиционируются как программа, работающая в рамках операционной системы. Хоть вышеупомянутое представление бота, с другой стороны, выглядит достаточно креативно, это не совсем сходится с действительностью.

При более близком рассмотрении

Интеллект покер бота схож с человеческим мозгом игрока в покер: он получает информацию из-за столов, обрабатывает её и выдаёт решение. В самом начале своего развития покер боты были невообразимо прямолинейны: они руководствовались правилами вроде «если у тебя рука с эквити больше 90%, играй рейз». Но сегодня боты стали намного, намного-намного более сложными... настолько, что их поведение не может быть описано каким-то базовыми терминами. Имейте в виду: изучение и развитие покер ботов является полностью юридически законным, а главное – невероятно интересным занятием. Свою легальность боты теряют только после того, как вы садите их за виртуальные столы, чтобы заработать немного дeнeг.

На сегодняшний день существует несколько категорий стратегических движков для ботов, все из которых, делятся на три основные категории (или их смесь):

• Боты, основанные на правилах;
• Боты, основанные на балансе;
• Эксплуатационные боты;

Рассмотрим каждый из этих типов подробно.

Боты, основанные на правилах

Эти ребята придерживаются правил, которые для них предписал их оператор, как, например, алгоритм с 90% эквити, описанный в одном из предыдущих абзацев. Стратегия таких ботов основывается на конкретных действиях в рамках, например, префлопа или других строгих правилах, вроде – в каких ситуациях они должны чек-рейзить флаш-дро и так далее. Каждое из подобных правил для бота делится на две категории: описание ситуации, где должно быть применено конкретное действие и само действие.

Очевидно, оператору необходимо установить конкретное правило для каждой ситуации, происходящей во время игры в покер. Однако в свете того, что за столами складывается достаточно много уникальных исходов (порядка 1050, т.е. десять с 50 нолями), а человек не обладает бессмертием – большинство боттеров объединяют множество похожих ситуаций под одно правило. Кроме прочего, из-за того, что оператору собственноручно приходится корректировать каждое придуманное им правило, данный тип ботов не сможет превзойти по уровню игры своего автора. Тем не менее, даже самые лучшие представители искусственного интеллекта объединяют в своих алгоритмах несколько правил в одно.

Боты, основанные на балансе

Данный вид ботов, в соответствии с названием своего класса, позиционируют свою игру вокруг сбалансированных стратегий. Если вы не знаете, что именно это значит – купите скорее мою книгу (прекрасно, что удалось прорекламировать себя хоть как-то). А пока вы ожидаете доставки, давайте рассмотрим общую концепцию сбалансированных стратегий.

В частности, эти стратегии основываются на теории игр – области знаний, входящей в раздел математики. Какой-то парень по имени Джон Нэш, среди прочего, получил Нобелевскую Премию за вклад в экономические науки, доказав, что каждая игра имеет ‘оптимальную’ стратегию для любого игрока. Таким образом, существует ряд (оптимальных) стратегий, использование одной из которых некоторым игроком позволит исключить извлечение дополнительных выгод от его пребывания за столом, даже при помощи переключения его оппонентов на другую стратегию. Другими словами подобные, оптимальные стратегии – не эксплуатируемы. То есть вы можете быть уверены, что используя одну и ту же стратегию на протяжении длительного периода времени – вы не окажетесь в проигрыше, не считая, естественно, рейка. Впрочем, просчитать оптимальную стратегию для игры в покер очень не простая задача из-за масштабов игр. На сегодняшний день существует два метода, следуя которым подсчёт оптимальных стратегий становится возможным:

  • Создание очень незначительных абстракций (упрощённых моделей) покера, чтобы применять стратегии на них;
  • Создание средних (но всё равно достаточно скромных размеров) абстракций, для получения приблизительных значений, используемых для построения оптимальных стратегий.

Существует несколько способов создания абстракций: наиболее распространёнными методами считают ‘блочный’ и ‘неполных выводов’. Мы вернёмся к этим и нескольких другим определениям, применимым к сбалансированным стратегиям, когда будем рассматривать ботов этого класса более подробно, в следующих частях цикла.

Эксплуатационные боты

Очевидно, боты сбалансированных стратегий – не самые прибыльные члены семейства, потому что для добычи профита необходимо подстраиваться под своих оппонентов. Такую возможность подразумевает функционал эксплуатационных ботов. Существует несколько способов, благодаря которым данный тип искусственного интеллекта может применять характерные свойства и наиболее распространёнными из них могут считаться:

  • Выбор одной из предварительно вычисленных стратегий, из которых следует выбрать наиболее прибыльную относительно конкретного оппонента;
  • Использование многоуровневых алгоритмов поиска в сочетании с имеющимися моделями оппонентов;

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

Вторая половина: движок взаимодействий

Сам по себе стратегический центр любого покер бота не может зарабатывать дeньги: анaлoгично человеку, которому нужны глаза и руки, боты нуждаются во входящей информации, на которой будут основываться их действия. В сочетании с вышеупомянутыми движками – боты становятся плохими парнями. Большинство покер сайтов запрещает использование ботов за своими столами, однако на самом деле запрещены движки взаимодействий, призвание которых – обойти защиту румов, что равно нарушению правил предоставления их услуг. Именно благодаря «игре в гостях», покер румы получают возможность бороться с ботами, и о методах этой борьбы мы поговорим в следующих блогах.

Так или иначе, логическая составляющая любого движка взаимодействий бота состоит из двух частей: наблюдателя и действующего лица.

Наблюдение изнутри

Информация о состоянии игры (т.е. карманные карты, действия оппонентов и так далее) необходима для существования бота, поэтому операторы обязаны перехватывать её каким-то образом. Оных есть несколько – некоторые из них достаточно прямолинейные (но невообразимо медлительные), другие фантастически сложные:

  • Скрэппинг (Scraping), или интерпретация происходящего на экране;
  • Использование потока информации, предоставляемого сами румом;
  • Предыдущее действий, но производимое не столь явным путём (т.е. чтение пула памяти или перехват команд);
  • Перехват и расшифровка трафика;

Боты-скрэпперы, «соскабливающие» информацию с изображений за столами – практически полностью повторяют действия человека: программа делает скриншот активного стола и распознаёт его составляющие. Для реализации этого метода используется OCR, с помощью которого экранное изображение преобразуется в машиночитаемый текст, в состав которого входит текущая позиция баттона, размеры стеков оппонентов и так далее. Преимущество данного метода это возможность его использования для совершенно любого сайта, даже запустив бота вне операционной системы, под которой был исполнен запуск клиентской программы покер рума. Однако применить скрэппинг на практике очень проблематично в виду ряда факторов. Один из них – изображение стола может измениться, что приведёт к ошибке и последующему отключению бота. Например, в данной ситуации у бота возникнут проблемы с подсчётом общего банка, расположенного в центре стола (240). Таким образом, вы можете представить множество крошечных ситуаций, которые способны превратить жизнь скрэппера в сущий кошмар.

К счастью существует более доступный метод чтения вспомогательной информации, предоставляемой пользователю. 

Многие покер румы с готовностью предоставляют для своих пользователей полную историю рук, транслируя её в режиме реального времени. На многих сайтах (не хочу называть названия), боты могут управиться с чатом дилера менее чем при помощи 10 строк кода! То есть чат с историей рук практически создан специально для ботов (другие покер румы позаботились о защите чата дилера намного более серьёзно, однако он всё ещё остаётся достаточно читабельным даже для ботов).

Но даже если покер рум не поддерживает чата с историей рук – существуют и другие способы распознания происходящего за столом. Особо умелым операторам под силу создавать покер ботов, которые могут читать пул памяти покер клиента, напрямую считывая статус игры. Такие же боты в состоянии перехватывать исходящие команды покер рума, таким образом определяя необходимые для принятия решений изменения. А поскольку покер клиент запускается напрямую с компьютера пользователя – фактически невозможно остановить боттеров от вторжения в информационную среду покер рума: операторы всегда найдут способ обойти защиту.

Ещё одной дорогой к успеху движка взаимодействий является перехват трафика. Для нормального функционирования покер рума – все данные необходимо передавать от клиента к серверу или наоборот, поэтому если ваш бот «слушает» все сигналы, для него не составит труда разобраться в происходящем за любыми столами. Канал между румом и пользователем, однако, серьёзно зашифрован, поэтому способ перехвата трафика не может работать корректно без внесения изменений в клиентскую часть программного обеспечения рума. Подробности таких изменений, вероятно, я опишу в одном из своих следующих блогов.

Заключение

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

:: :: :: :: :: :: ::

А что будет дальше?

В следующем посте мы затронем историю покер ботов, от IRC до Winholdem, от Openholdem до PokerAI. В зависимости от того, насколько объёмным получится этот обзор, мы также постараемся затронуть тему текущего статуса онлайн покер боттинга. Я ещё не спланировал выход всех частей этой серии заметок, однако в ближайшее время мы рассмотрим, по меньшей мере, следующие темы:

• Историю покер ботов;
• Текущий статус боттинга и контрмеры, предпринимаемые румами сегодня;
• Подробное описание различных типов ботов;
• Подробный статистический анализ некоторых сдач, сыгранных ботами.

Оригинальный источник: Блог Томаса Баккера

Автор пepевoда: OldBoy