¿Cómo empezar a construir un bot de póquer?

He estado aprendiendo programación como pasatiempo durante algunos años y tengo un conocimiento básico de Python, C++ y javascript. Me gustaría abordar un nuevo proyecto de programación de mi propio bot de póquer NLHE.

Entiendo que este es un proyecto ENORME para abordar, pero ¿hay algún recurso o biblioteca de código abierto que recomendaría?

He visto que OpenHoldem solía ser bueno, pero no parece que haya sido tocado en un par de años.

¡Me encanta esa idea! Quiero crear un bot de póquer de discord, pero no sé nada sobre codificación, tal vez alguien lo haga, supongo.
puedes consultar el bot de poker now discord, un buen lugar para inspirarte. tal vez también puedas localizar al creador para obtener algunos consejos.

Respuestas (3)

Le sugiero que primero escriba una calculadora de equidad ya que un bot la necesita. Si basas las cosas en acciones, es mucho más fácil. Entonces solo una mano binaria hecha o dibujada.

Luego, puede hacer una probabilidad para igualar y dar una probabilidad implícita fija en un empate. Si necesita 3:1 para pagar un empate, elija uno menos 2:1. Todo lo que te queda es el tamaño de la apuesta para abrir y volver a subir. Bluffs es un poco más difícil, pero si solo faroleas con tus proyectos rotos como 1/3, estarás bastante cerca.

Ver faroles es un poco más difícil, pero obtendrás algunas estadísticas sobre la frecuencia con la que farolean cuando solo igualas por equidad. Vuelva a llamar aproximadamente 1/3 de su tasa de farol si tiene un receptor de farol.

Asigne un rango abierto para cada posición y el tamaño de la apuesta. Un tamaño de flop como 1/5 es suficiente para deshacerse de ellos.

Probé un bot basado en GTO pero fue un desastre. GTO estás jugando a no perder.

Según el juego, puedes ajustar el rango de los oponentes. Si basa la lógica en la equidad, entonces no necesita reglas complejas.

Según una nueva publicación, esto se puede hacer con el aprendizaje automático.

Eso es más o menos lo que planeo hacer. Solo espero que haya una buena biblioteca que ya tenga OCR y cálculos de probabilidades/equidad. Tratando de empezar lo más adelante posible.
Entonces buena suerte para ti

Es algo que consideré y comencé hace unos años, pero me di por vencido.

Mire en Tesseract OCR. Estos serán los "ojos" de tu bot.

A continuación, comprenda bien la variante de póquer que desea que juegue el bot.

A continuación, observe el aprendizaje automático, por ejemplo, la clasificación, como con las redes neuronales (y también la reducción de extracción/dimensionalidad de características para obtener las estadísticas más relevantes)

Finalmente no te molestes. Ya se está trabajando en ello (busque el video de Doug Polk). Pokerstars tiene tecnología anti-bot, por lo que necesitarás desarrollar una IA muy avanzada capaz de pasar la prueba de turing para ese sitio, y los sitios que permiten bots tendrán bots que aplastarán tu bot. Además, para cuando termines el desarrollo, ¡el póquer en línea ya podría haber sido destruido por bots avanzados!

Si está REALMENTE interesado, entonces podría familiarizarse con github. Una búsqueda en Google mostró un bot de póquer que se está desarrollando en github al que podría contribuir o al menos obtener algunas ideas.

¿Podría proporcionar algunas características de ejemplo?
Solo llegué a leer información de hasta cuatro mesas y hacer un seguimiento del estado del juego, por ejemplo, a quién le tocó actuar, dónde estaba el botón, etc.
¿Cómo se maneja la equidad como una característica?
Bueno, un enfoque podría ser usar el aprendizaje automático y entrenar con historiales de manos (¡muchos de ellos!). Sus clasificaciones (la decisión de los bots) serían retirarse, igualar/pasar y subir. Este enfoque no es muy bueno porque asume tamaños fijos de subidas y llamadas. Sin embargo, podría refinar aún más y tener clasificaciones para apuestas de medio bote y apuestas de bote completo, etc. Desea que el bot elija la clasificación que tiene el EV más alto como se define en los historiales de manos, pero también la acción más cercana en el momento presente a la historia de la mano.
Entonces, tendría una función "más cercana" aplicada a la acción actual multiplicada por los EV de cada decisión. El número más alto gana y el bot elige esa opción. Esta es solo una forma de hacerlo y requeriría una gran cantidad de historiales de manos para ser bueno. La otra opción es crear un bot que realmente calcule probabilidades. El caso habitual en informática es que algún tipo de compromiso entre los dos es lo mejor para el rendimiento.
¡Gracias por la información! En cuanto a la parte de "no te molestes", creo que voy a ignorarla respetuosamente. Mi intención de construirlo no sería necesariamente usarlo en juegos con dinero real, sino solo para desarrollar mis habilidades de programación. Dado que soy un poco nuevo en el póquer, creo que sería divertido que me sugiera acciones basadas en GTO, en lugar de jugar 15 mesas por mí.
Sin preocupaciones. Honestamente, creo que ya sea práctica de programación o ganancia financiera, es una pérdida de tiempo, pero si estás realmente interesado en hacer un bot de póquer, ¡buena suerte!
Tienes el link del video que mencionas?

En primer lugar, explore proyectos en GitHub. Allí puede encontrar muchos ejemplos de código que ya funciona. El segundo, debe comprender que "Poker Bot" es una tarea de varios componentes, que consta de partes básicas de programas similares: bucle principal, lógica del juego, GUI, datos (almacenamiento, concepción, procesamiento), API, código externo, etc. .

Especialmente, se implementa una API para trabajar con código externo como "PokerTracker". Los programas similares se encuentran en la raíz de los datos de fondo. Además, los metadatos son una imagen en pantalla de lo que sucede en la mesa de juego. Este tipo de información debe ser obtenida y procesada por un tiempo constante!!!

Las soluciones obtenidas durante la implementación de la inteligencia artificial deben aplicarse mediante acciones en la mesa de juego en el monitor.

En mi opinión, el algoritmo que se debe usar en PokerBot debe crear un árbol de soluciones, un algoritmo de ronda y clasificación como MiniMax y un algoritmo de almacenamiento relacional como NestedSets.

La discusión de las tecnologías que deben usarse en este proyecto es el tema de una conversación separada :)