Я сам разработчик софта. Здесь на форуме наша программа NiceHandOmaha. Я разработчик с большим стажем (более 51 года). Хочу сказать об авторе StrsHelper, что это очень талантливый программист (так же как и LikeAA) . Воспользуюсь случаем и спрошу: "Можно ли называть вас обоих по имени?".
Использование IDA и OllyDbg - это реверс инжениринг. Я тоже пытался с помощью этих инструментов разбираться в клиенте старзов и других румов.
Но потом понял, что этим надо жить. А у меня работа и не очень это мне интересно. Я делал инжект в клиент старзов и в таблице импорта подменял функцию
записи в файл своей. Старзы писали в лог-файл карты, вот я с помощью этого приема их и "добывал". Но, потом старзы убрали запись карт в лог-файл
и нас очень выручил StrasHelper, который нам стал передавать карты. Сейчас нам передает карты StarsCaption.
Обоим вам низкий поклон!Сейчас мы используем OCR для азиатских румов и румов сети iPoker. Метод этот очень капризный и зависит от многих факторов, как разрешение экрана, цветовая палитра, размеры столов, вид карт и прочее. Используется нейронная сеть, которую обучаем. Еще минус этого метода в том, что сканирование столов надо делать постоянно, поэтому на слабом компьютере "большие тормоза". Замечу, что относительно легко сделать распознавание "для себя", то есть на своем компьютере. Да, и на любом другом отдельно взятом. Сложно сделать сразу для всех универсально. Хотя есть серия программ HoldemIndicator, OmahaIndicator,
StudIndicator. Эти программы каким-то непостижимым для меня способом получают карты с огромного количества румов. Видимо, они что-такое знают о распознавании, чего мне не известно.
У нас 5 человек в команде (мы все работаем, покер пишем в свободное время). Мне хочется сделать сильного искусственного игрока в покер. Но, времени мало.
Эта тема про историю создания StarsHelper для меня очень интересна. Я читаю ее с большим удовольствием. В наше время редко кто пишет о своих разработках. Часто даже предпосылки и то не ясны.
Также посмотрите
статью на Хабре про программу DeepStack. В отличие от солверов играет она быстро в реальном
времени.
А автора спрошу, что он думает про борьбу с ботами и про возможность создания сильного бота. Я знаком с разработками университета Альберта.
Народ на форуме побаивается ботов не только в холдем, но и в омаху. Я думаю (может ошибочно), что сделать сильного бота в омаху сейчас нельзя при современном состоянии дел. Но, народ в противовес пишет, что за большие деньги можно все. Вопрос адресован к авторам StarsHelper и StarsCaption.
Конечно, интересно также мнение других разработчиков софта, особенно создателей солверов.
В поддержку 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 и каждый раз с кучей багов, наверное он до сих пор не идеально работает)
-хоткеи
Нет прямой взаимосвязи между количеством функций и количеством продаж.
Основную прибыль делают несколько ключевых функций.
Поэтому моим приоритетом всегда было исправление багов уже существующих функций, а не создание новых функций.
Не считая начального периода, создание новых функций было самой низкоприоритетной задачей.
Чем больше функций добавлено, тем сложнее становится поддерживать работоспособность программы, а продажи при этом повышаются незначительно.
Следующая статья о службе поддержке