Как разрабатываются программы для помощи в игре в покер

Последний пост:23.02.2021
73
1 2 3
  • Тема #4. О добавлении новых функций в StarsHelper.


    В поддержку StarsHelper и на форумах часто поступали запросы на добавление новых функций.

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


    Так как запросы поступают в огромных количествах, все они записываются в отдельные файлы, где группируются по тематике.
    Основная причина почему большинство запросов никогда не удовлетворяются, это их бесконечность.
    Простой пример.
    Поступил запрос на добавление функции X.
    Я реализовал эту функцию и она вышла в релиз.
    В ответ на это поступило ещё 2 предложения, как эту функцию можно улучшить или расширить.
    Я выполнил эти предложения.
    Поступило ещё 4 запроса.
    Реализовать все идеи невозможно, поэтому более 90% предложений не реализуются.

    Тем не менее я всё равно выслушиваю и записываю все предложения. В том числе для подсчёта статистики.

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


    Ещё одна причина почему некоторые запросы никогда не реализуются, это предложения из разряда сделать так же как в программе X.
    Это связано с тем что выгоднее всего делать функции которые ещё нигде не реализованы.
    Наличие уникальных функций привлекает новых клиентов лучше всего.
    Но бывают исключения. Например если я знаю как сделать функцию лучше/быстрее/качественнее/дешевле. Либо если она крайне востребована. Либо если её легко реализовать.

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


    Разберём на примере сколько времени занимает реализация простой функции.
    Допустим пользователь хочет чтобы в программе была добавлена кнопка которая закрывает клиент.

    Шаг 1.
    Нужно определить место где эта кнопка будет размещена. При необходимости передвинуть другие элементы. Нарисовать элемент.
    В особо сложных случаях привлекается специалист по UI (такое бывает редко). Если нужны иконки или графика так же привлекается отдельный человек.
    Так как наш пример самый простой, отведём под эту задачу 5-10 минут.

    Шаг 2.
    Нужно придумать название этой кнопки. Создать строковые переменные.
    Так же желательно перевести текст на разные языки мира.
    Я как программист переводом почти не занимаюсь и не знаю сколько времени это занимает.
    Без учёта перевода отведём на эту задачу тоже 5-10 минут.

    Шаг 3.
    Пишем основную логику функции.
    Количество времени может быть любым. Час, день, неделя, месяц, год.
    Так как у нас простой пример отводим 5-10 минут.

    Шаг 4.
    Тестирование.
    Тестирование обычно усложняется тем что необходимо играть в покер чтобы проверить новую функцию.
    В особо сложных случаях тестирование необходимо проводить в турнире который проводится несколько раз в сутки и только на реальные деньги.
    В нашем примере отводим 3 минуты.

    Шаг 5.
    Написать внутреннюю документацию.
    Чтобы потом долго не вспоминать как, что и почему.
    Отводим 3 минуты.

    Шаг 6.
    Обновить информацию на сайте.
    Я этим не занимаюсь, так как для этого не требуется программирование.
    Не знаю сколько времени это занимает.
    Возьмём по минимуму 5 минут. Хотя мне кажется что дольше.

    Шаг 7.
    Исправление багов если они будут найдены.
    Самое сложное в любом баге, это не само исправление, а его поиск.
    Разброс по времени такой же как в шаге 3.
    Так как у нас простая функция и сделана сразу без багов, закладываем 0 минут.

    Шаг 8.
    Работа службы поддержки.
    Чаще всего просто спрашивают как включить функцию X. Моя задача ответить в какой вкладке и примерно где находится эта функция.
    Да, я занимаюсь не только программированием, но и поддержкой на русском языке, в том числе на форумах.
    Так же могут спрашивать:
    -почему функция не работает
    -как она работает, мелкие нюансы
    -предложения по улучшению
    Это отнимает много времени.
    Подробнее о работе службы поддержки будет следующая статья.
    Заложим сюда условно 1 час. На самом деле больше, так как одни и те же вопросы могут поступать в течении многих лет.

    Шаг 9.
    При обновлении клиента функция может сломаться.
    Нужно её переделать.
    Если это произошло возвращаемся к шагам 3, 4, 5, 7.
    В среднем каждые полгода ломается по 2-3 функции. Графика aurora сломала сразу половину программы.
    В нашем примере закладываем 0 минут.


    Вроде ничего не забыл.
    Подведём итог.
    На самую простую функцию требуется минимум 26 минут плюс её бесконечная поддержка.
    Самое сложное это программирование и тестирование.
    Самое долгое поддержка.


    Самые сложные функции в StarsHelper:
    -chips to bb
    -расстановка столов
    -HUD (имеется ввиду общая система отрисовки, а не конкретный HUD)
    -HUD BetBox (этот HUD был переделан наверное раза 3 и каждый раз с кучей багов, наверное он до сих пор не идеально работает)
    -хоткеи


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


    Следующая статья о службе поддержке
    11/18
    Ответить Цитировать
    61
  • Респект тебе за крутую прогу!!!! Но одно не понятно - для чего ты тратишь время на написания истории написания программы, а не для поисков багов и реалзаци новых функций?
    1/1
    Ответить Цитировать
    -5
  • Бармолей, потому что разработка StarsHelper была прекращена.
    Историю пишу потому что это не сложно и пользуется спросом (судя по лайкам).
    12/18
    Ответить Цитировать
    14
  • и это печально, что разработка прекращена, почему не сделать ежегодную оплату как в старзкепшине и продолжать поддержку?
    1/1
    Ответить Цитировать
    1
  • holden1989, ответ давал в первом сообщении этой темы.
    13/18
    Ответить Цитировать
    0
  • Работает ли Starshelper сейчас на движке aurora pokerstars?
    1/1
    Ответить Цитировать
    0
  • NyBenz, c aurora не работает. Возможно есть какие отдельные функции которые работают. Но это скорее исключение.
    14/18
    Ответить Цитировать
    0
  • Может звучало, но спрошу: а почему бы не сделать, например, годовую подписку и продолжить работу? Думаю, что нынешние пользователи, у которых всё настроено, купили бы подписку, а не пошли бы покупать новую прогу с годовой подпиской и настраивали бы всё по-новому
    1/2
    Ответить Цитировать
    1
  • (Если надумаешь - первым делом чтоб шрифты можно было увеличить от этой авроры ужасной)
    2/2
    Ответить Цитировать
    0
  • норм предложение было переходить на оплату по подписке. апдейты делаются постоянно - программист делает работу постоянно и она не оплачивается - очевидная дыра в монетизации. думаю всё реги поймут такое переход, рум обновляется, работа делается, платить надо. в целом интересно было очень почитать как работает прогер в покерной среде!
    1/2
    Ответить Цитировать
    0
  • я еще офигел что у старзов 21 клиент 888-) а некоторые из них входят в общий пул или все по резервациям отдельно?
    2/2
    Ответить Цитировать
    0
  • Цитата (ripppa @ 19.11.2020)
    я еще офигел что у старзов 21 клиент 888-) а некоторые из них входят в общий пул или все по резервациям отдельно?
    StarsCaption 22 клиента поддерживает (19 PokerStars и 3 FullTilt)

    15 клиентов (включая три разных клиента FullTilt) играют в общем пуле PokerStars.com.
    3 западно-европейских клиента (es/fr/pt) играют в своём пуле.
    Свои пулы есть у индусов, итальянцев, в штатах Нью-Джерси и Пенсильвании.
    3/5
    Ответить Цитировать
    4
  • А про Пати ещё удивительнее - partypoker.sochi, поддержку которого я недавно добавил, был 33-м румом, поддерживаемым PartyCaption.
    Куча из того, что там было, давно закрылось, правда - но сейчас в сеть partypoker входят такие румы, как CrystalBet, Coral и Ladbrokes (вряд ли в них можно зарегиться из России, правда).
    4/5
    Ответить Цитировать
    4
  • Цитата (LikeAA @ 19.11.2020)
    StarsCaption 22 клиента поддерживает (19 PokerStars и 3 FullTilt)


    Мне известно 20 регионов у PokerStars.
    Перечислю их коды.
    com (основной)
    eu
    es
    fr
    it
    uk
    ee
    be
    bg
    dk
    desh
    nj
    ro
    pt
    cz
    ruso
    in
    se
    asia
    pa

    Так же очень давно был "test" регион. Сейчас его вроде нет.
    15/18
    Ответить Цитировать
    2
  • Про asia не знал, посмотрю

    ФуллТилтов может быть тоже больше, но я знаю только про существование FullTilt.com, eu и uk.
    5/5
    Ответить Цитировать
    0
  • Я сам разработчик софта. Здесь на форуме наша программа NiceHandOmaha. Я разработчик с большим стажем (более 51 года). Хочу сказать об авторе StrsHelper, что это очень талантливый программист (так же как и LikeAA) . Воспользуюсь случаем и спрошу: "Можно ли называть вас обоих по имени?".

    Использование IDA и OllyDbg - это реверс инжениринг. Я тоже пытался с помощью этих инструментов разбираться в клиенте старзов и других румов.
    Но потом понял, что этим надо жить. А у меня работа и не очень это мне интересно. Я делал инжект в клиент старзов и в таблице импорта подменял функцию
    записи в файл своей. Старзы писали в лог-файл карты, вот я с помощью этого приема их и "добывал". Но, потом старзы убрали запись карт в лог-файл
    и нас очень выручил StrasHelper, который нам стал передавать карты. Сейчас нам передает карты StarsCaption.

    Обоим вам низкий поклон!

    Сейчас мы используем OCR для азиатских румов и румов сети iPoker. Метод этот очень капризный и зависит от многих факторов, как разрешение экрана, цветовая палитра, размеры столов, вид карт и прочее. Используется нейронная сеть, которую обучаем. Еще минус этого метода в том, что сканирование столов надо делать постоянно, поэтому на слабом компьютере "большие тормоза". Замечу, что относительно легко сделать распознавание "для себя", то есть на своем компьютере. Да, и на любом другом отдельно взятом. Сложно сделать сразу для всех универсально. Хотя есть серия программ HoldemIndicator, OmahaIndicator,
    StudIndicator. Эти программы каким-то непостижимым для меня способом получают карты с огромного количества румов. Видимо, они что-такое знают о распознавании, чего мне не известно.

    У нас 5 человек в команде (мы все работаем, покер пишем в свободное время). Мне хочется сделать сильного искусственного игрока в покер. Но, времени мало.

    Эта тема про историю создания StarsHelper для меня очень интересна. Я читаю ее с большим удовольствием. В наше время редко кто пишет о своих разработках. Часто даже предпосылки и то не ясны.

    Также посмотрите статью на Хабре про программу DeepStack. В отличие от солверов играет она быстро в реальном
    времени.

    А автора спрошу, что он думает про борьбу с ботами и про возможность создания сильного бота. Я знаком с разработками университета Альберта.
    Народ на форуме побаивается ботов не только в холдем, но и в омаху. Я думаю (может ошибочно), что сделать сильного бота в омаху сейчас нельзя при современном состоянии дел. Но, народ в противовес пишет, что за большие деньги можно все. Вопрос адресован к авторам StarsHelper и StarsCaption.
    Конечно, интересно также мнение других разработчиков софта, особенно создателей солверов.
    1/5
    Ответить Цитировать
    -2
  • NewPokerSoft, Называть по имени можно. Но всегда есть люди которые читают тему в первый раз и не с начала. Будет путаница о ком речь.

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

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

    Я думаю что при распознавании изображений можно в течении сессии сохранять успешно распознанные изображения. Далее пытаться выполнять поиск по уже сохранённым изображениям. Если такого изображения ни разу не было, то отправлять на новый анализ.
    Поиск сохранённого изображения можно выполнять например по хешу или контрольной сумме.


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

    Наличие бота теоретически может вычисляться по одинаковым паттернам. По скорости реакции (одинаковая скорость реакции). По резкому скачку винрейта (когда новичок за 1 день превращается в профи). По большому количеству игр в час.
    Думаю список можно продолжать. Вопрос в том на сколько рум захочет заниматься анализом и на сколько владелец бота обнаглеет ))

    Я знаю примеры успешных реализаций ботов и очень давно участвовал как приглашённый специалист в одном подобном проекте.
    Для создания успешного бота требуется команда примерно из 5+ человек (чем больше тем лучше). Одного программиста точно будет мало. Я бы даже добавил что программирование в этом деле это вторичный навык.
    Прибыль в этой сфере очень высокая, но и требовании к квалификации ещё выше.
    На счёт бота в омахе ничего не могу сказать, так как в покере понимаю слабо.
    16/18
    Ответить Цитировать
    0
  • Понятно, Павел. Твоя мысль о сохранении изображений интересная. При постоянном сканировании определенных участков стола они на самом деле будут совпадать. Использование хеш для изображений когда-то несколько лет назад обсуждалось в журнале Хакер.

    Я не собирался, конечно, обсуждать создание ботов. Здесь игрокам просто будет это непонятно. Насчёт участия в команде игрока вопрос достаточно неоднозначный. В основном, игроки нужны для проверки силы этого бота.

    Возьмём шахматы. Программа от гугл, которая всех обыгрывает, была создана без участия игроков. Она имеет коэффициент Эло значительно выше, чем у чемпиона мира среди людей и обыграет его легко, даже давая фору.
    Как пишут создатели, в программу просто ввели правила шахмат, а далее она играла сама с собой, обучая свою сеть. Несколько часов игры и перед нами сильный игрок. Вся суть здесь в этой сети, которая, конечно, не публикуется. У меня есть сеть для покера. Довольно простая, конечно. Все никак руки не доходят всерьез этим заняться.

    И никогда я не буду делать бота для игры в руме. У нас есть программа, в которой человек может поиграть в покер с компьютерными игроками.
    Такая игрушка-тренажер. Вот я и хочу, чтобы эти "ребята" играли сильно. Далее ее можно использовать для тренировки и отработки определенных навыков. Ведь сейчас все игроки сидят в солверах. То есть, фактически, они учатся играть у ботов.

    Я общался с игроками весьма сильными (bb = $100). Они не могут сформулировать свой "алгоритм" игры. Их рекомендации туманны и расплывчаты. Код по ним не напишешь. Они многие решения принимают интуитивно. У них мозг тренирован и силен для принятия решений. Но, они не могут формализовать свой процесс принятия решений.
    2/5
    Ответить Цитировать
    0
  • NewPokerSoft, поэтому я написал что требования к квалификации очень высокие. Простой игрок, даже про уровня, не в состоянии описать алгоритм для бота. Можно попробовать покопаться в сторону ГТО, но я сам не эксперт. Просто идею озвучил.
    17/18
    Ответить Цитировать
    0
  • StarsHelper, я в свое время переписывался с аспирантом из Португалии, когда он писал диссертацию по покеру в лаборатории искусственного интеллекта. Он мне открыл доступ к их электронной библиотеке. Я оттуда скачал работ 200 примерно по математике покера.

    Мне как в шахматах хочется сделать, чтобы программа самообучалась.
    К сожалению, времени нет. Работа и имеющиеся программы все время съедают. Ну, и поиграть надо хоть часов 5-6 в неделю.

    Ты пиши про свою работу над StarsHelper. Очень интересно.
    3/5
    Ответить Цитировать
    0
1 2 3
2 человека читают эту тему (2 гостя):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.s