Сами придумывайте. Просто видно, что у Вас есть знания, упорство и свободное время, а тратите Вы это на всякую хрень. Напишите свой биллиард, или гольф там, ну или боулинг или кёрлинг.
Да да да. Или покерный бот. Слышал от своих друзей это уже много раз. Осталось решить — покер или биржа =) И там и там — одни боты! Правда, на биржах профессиональные, а в покере...? Чуть «менее» профессиональные? И то и то — игра с неполными условиями.
Пожалуй, посредственная игра с полными условиями, на которой можно заработать — это массовое распознавание капчи. Ну, или майнинг криптовалют. Что ещё?… надо подумать.
Решение с ударами от борта очень красивое, да и вообще проделана огромная работа. В таблице представлена реальная вероятность выигрыша для вашего бота или это просто пример?
Проделанная работа и результат достойны уважения (если оставить в стороне моральную подоплеку использования бота в игре). Азарт и упорство способны свернуть горы )). В целом статья очень понравилась.
Не интересовался, но, исходя из здравого смысла гейм-дизайна, между клиентом и сервером целесообразно было бы пустить только тайм-ауты, чат и инфо о нанесении удара (пара угол/сила). Всё остальное (так как игра строго детерминирована) можно считать на клиенте(тах). Так что врядли в трафике гуляют позиции шаров. Можете подтвердить или опровергнуть мои доводы с WireShark. Тут меня преследовал азарт больше образо-распознавательский, чем трафико-копательский.
Глядя на «моделируемое пространство», подумалось, что можно сделать именно такую «странную» игру — играть на поверхности тора (по сути бесконечной), в которой лузы это просто дырки в поверхности стола… :)
Каков же будет процент играющих в такой бильярд? Целевая аудитория? 80% играющих — это школоло. Им не такие игры нужны. Процент айтишников и математиков, которые смогут потенциально заинтересоваться — капля в море. Это моё личное мнение, которое может не совпадать с действительностью. Надо делать что-нибудь массовое… современное…
Не хватает какой-нибудь таблички со статистикой результатов или чего-то такого. Я не готов прям щас смотреть трёхчасовое видео.
А так, очень здорово, круто!
Действительно, совершенно нетривиальная задача. Есть что-то от реверс-инжиниринга. :)
Насколько я понял, элемент самообучаемости напрямую исходит из собранной статистики?
Все-таки задумка с чатом неудачно реализована. Есть несколько неудачных фраз, из-за которых очевидно, что играет бот. Ну не может человек повторять как дятел настолько длинные фразы, да еще и не в тему…
Согласен, чат провален и нелеп. Но, во-первых, как минимум, за те короткие 5 минут, которые длится раунд, за то небольшое количество фраз (7 — 10), которые успевает сказать бот, вряд-ли один игрок сможет о чём-то догадаться, и, во-вторых, как максимум, не стояло глобальной цели не выдать бота. Пусть догадаются! Да, будет чуточку забавнее. Это всё for fun!
Играю (нет не ботом, а сам) в 8 Ball Pool на андроиде.
Немного смутили другие пропорции и рикошеты без учета силы удара и направления крута… неестественно всё смотрится, наверно это сильно упрощает программирование?
Имеет смысл записывать игры (позиции до/после удара) чтобы тестировать модели физики. Судя по всему вращение и проскальзывание как-то странно реализованы.
Для предотвращения игры чужими шарами достаточно чтобы функция определения типа выдавала еще «уверенность определения». Потом достаточно прицелиться в хорошо определенный шар (или пару) и посмотреть на зеленый/красный ободок.
В бильярде есть пара очень важных вещей, которые должны быть обязательно запрограммированы:
1. Кручение (качение вращающегося шара, столкновение вращающихся шаров, закручивание от столкновения с бортом и т.д.) Я пробовал писать бота, но понял что именно здесь начинается такая математика, что придется потратить на неё много времени. (играл на мейл.ру)
2. В результате удара шары должны встать так, чтобы следующий удар можно было сделать очень легко, а потом опять и опять — надо думать всю игру наперед, наподобие как в шахматах, тогда результат будет убойный. Все живые игроки, которых показывают по телевизору пытаются так думать насколько у них это получается.
Информация о расстановке шаров должна обязательно раздаваться всем клиентам. Т.к. клиенты аппаратно и программно разные, в том числе в математике может присутствовать рандом.
Спасибо за чёткие рекомендации. Я, как играющий в снукер, знаю о них не по наслышке. Пока что так, а вот во второй версии надеюсь улучшиться. Есть куда расти.
Браво! Хабр торт, автор великолепен — куча удивительно красивых решений.
А почему не стали использовать embedded browser (тот же IE, либо CEF)? С «палевом» проблем не будет, зато автоматизация многих действий должна стать значительно проще (честно, меня очень смутила реализация получения текстовых данных путем выделения мышью и копированием) + это будет одно окно, что визуально приятнее + есть возможность стрипнуть лишнее со страницы в принципе, во имя эстетики, конечно же :)
В целом же, очень хочется увидеть следующую статью, где вы все-таки найдете способ «виртуализировать мышь» и не трогать настоящий курсор вообще + реализацию новых стратегий, там есть куда копать, уверен (кручение, позиционирование и много чего еще). Это круто, мы ждем, однозначно!
И да, лучше не публикуйте исходники / продукт, игра будет обречена, либо придется переквалифицировать ее в соревнование ботов.
Посмотрел видео — стоит шевелить кием, имитируя прицеливание, в момент калькуляции варианта удара (да и в целом перед ударом, это резко отличает вас от обычного игрока). Иногда расчеты занимают продолжительное время, а кий фиксирован, противник видит это. Решение не найдено, срабатывает ваш failback на последних секундах, кий резко переключается на запасной вариант и делает удар. Наличие 3-4 повторений этого сценария за игру уже ставит под сомнение «человечность» оппонента.
Бильярдный бот: история создания