web-dev-qa-db-fra.com

Vaincre un Bot de Poker

Il y a un nouveau bot de poker Open Source appelé PokerPirate . Je m'intéresse à toutes les façons créatives par lesquelles une application Web pourrait détecter/contrecarrer/vaincre un robot de poker. (Il s'agit d'une discussion purement académique, dans le même esprit que PokerPirate a été écrit.)

107
rook

Vaincre un bot du point de vue serveur

  1. De nombreux sites de poker en ligne utilisent des entrées popup Captcha qui sont déclenchées par une activité suspecte.

  2. Certains sites de poker surveillent les temps et les schémas de jeu (c'est-à-dire que le pire des cas est un joueur qui joue 24x7 et 16 tables en continu, il y a une toute petite chance que ce soit un vrai humain. (Cependant, certains joueurs ont la capacité de jouer de très gros volumes de main qui à l'œil inexpérimenté semble être un bot)

  3. Jetez-le pépins. Si vous pensez qu'un joueur est un bot, changez toutes les positions de sa carte de jeu de quelques pixels sur l'écran, faites-leur différentes couleurs/motifs/motifs pour 1/100 mains et voyez s'il les jette. S'il ne peut pas saisir d'écran, il expirera toutes ses décisions et c'est une preuve de robot assez concluante.

  4. Le timing indique, si un joueur informatique répond aux options en quelques millisecondes à la fois sans pause pour réfléchir à des décisions importantes, cela pourrait être suspect

  5. Auto-surveillance. Le site de poker pokertableratings.com les données minent beaucoup de grands sites. Il a rencontré un accueil mitigé, certains adorent la transparence, d'autres détestent . L'avantage est, cependant, que il y a eu des cas où les statistiques des joueurs suspects (les pourcentages VPIP, les pourcentages PFR sont quelques-unes d'un grand nombre de statistiques quantifiables qui peuvent être enregistrées) ont conduit à des conclusions de tricherie

  6. Artificiellement intelligent réseaux de classification pourrait surveiller des statistiques quantifiables pour classer les joueurs frauduleux ou les robots.

  7. À l'époque où le poker en ligne était une entité relativement nouvelle, il y avait une rumeur et parler avec des preuves limitées que certains logiciels de poker client des captures d'écran de bureaux de joueurs suspects pour voir s'ils exécutaient des programmes qui les aidaient. Cependant (même si cela était vrai), l'exécution de deux ordinateurs pour effectuer les deux tâches indépendamment contournerait ce problème.

  8. Le partage d'informations entre les récidivistes entre plusieurs sites serait bénéfique pour l'industrie, si seulement ils étaient honorables et géré par personnes responsables compétentes

  9. Certains robots seraient probablement assez simples par conception, si vous pouviez découvrir leur style de jeu et voir comment ils agissent dans des situations identiques (notez que cela n'est possible qu'avec des robots peu sophistiqués jouant une stratégie très basique), vous pouvez les découvrir assez rapidement.

  10. Une utilisation incohérente des fonctionnalités du programme pencherait pour un joueur authentique. Prenons par exemple de nombreux sites de poker en jeu qui ont un bouton "Se coucher quand c'est mon tour". Si vous recevez une mauvaise main et attendez qu'un autre joueur décide quoi faire, de nombreux joueurs cocheront ce bouton. Un bot peut utiliser ces boutons. La différence est qu'un bot serait sur les extrémités de la fréquence d'utilisation, il les utiliserait probablement tout le temps, ou pas du tout. Alors qu'un joueur peut généralement appuyer sur 'autofold', mais il cliquera parfois quand même dans les conditions les plus favorables. Par exemple, un joueur authentique appuie généralement sur le pliage automatique, mais cette fois-ci, ce n'est pas le cas. Il leur est plié sans qu'aucun autre joueur n'agisse, maintenant ils ont été présentés avec la condition la plus favorable possible. Maintenant, s'ils appuyaient sur le pliage, ils auraient été fortement enclins à appuyer sur le pliage automatique dès le début. Il s'agit d'un comportement incohérent/non optimisé/aléatoire, consistant à être un être humain. Le timing indique quand ces fonctionnalités sont cliquées sont d'autres indicateurs. Il est important de reconnaître que ce sont tous des indicateurs et non une preuve concluante. Tous ces indicateurs de comportement peuvent être simulés facilement.

Vaincre un bot du point de vue des joueurs

  1. Essayez de vous connecter et de collecter autant de données que possible en utilisant un logiciel comme PokerTracker

  2. Tenter d'identifier les motifs dans son style de jeu

  3. Tenter de trouver des relations entre la taille de la mise proportionnellement au nombre de joueurs/pot et à la force de la main

  4. Essayez de calculer son gammes de main . Un bot à faible enjeu ne bluffera probablement pas assez fréquemment pour être une préoccupation stratégique importante, donc la construction de gammes de mains très précises ne devrait pas être trop compliquée.

  5. Tenter de trouver fuites dans son jeu via l'analyse des données et les essais et erreurs Une fois que des fuites/modèles ont été trouvés, essayez de les exploiter de manière répétitive et d'éviter toute autre situation.

Lorsqu'un humain est capable de adaptation , les robots le sont probablement moins, et où les humains sont pondérés par les chaînes de inclinaison , pensée orientée vers les résultats et frustrations , les bots ne le sont pas. Vous pouvez utiliser ça à votre avantage.

Donc, en substance, vous ne pouvez rien faire pour l'arrêter si le robot est suffisamment intelligent pour simuler des retards de synchronisation réels lors des décisions, ainsi que pour créer des modèles de jeu raisonnables et réalistes. Ajoutez des conditions aléatoires et un simple back-chat (le Lexique des joueurs de poker est généralement assez limité ) et vous avez vous-même un Joueur IA qui va être assez difficile à détecter.

Ce que les bots pourraient faire pour éviter la détection

La clé pour éviter la détection serait de penser au problème sous autant d'angles que possible. Vous essayez de simuler un comportement humain intelligent dans un monde très petit et contraignant. La plupart des simulations comportementales que vous pouvez exécuter sont assez évidentes, mais plus votre bot est incohérent et imprévisible, moins il est probable qu'il soit découvert.

  1. Créez des horaires de jeu réalistes (c'est-à-dire 3 à 5 fois par semaine, 4 heures par session avec la semaine impaire ici et là pendant l'année).

  2. Exécutez des programmes pour prendre des décisions sur un ordinateur séparé, en contrôlant un ordinateur zombie au cas où une capture d'écran de sites.

  3. Aléatoire des horaires des actions (n'agissez pas immédiatement, attendez 0,5 à 2 secondes par action)

  4. Abandonnez les grandes décisions. Si une décision est limite, calculez la décision puis attendez un moment pour simuler la pensée.

  5. Utilisation aléatoire des fonctionnalités du logiciel client. Simulez les pauses toilettes en cliquant sur le bouton "distribuez-moi" sur toutes les tables et faites une pause de 5 minutes de temps en temps.

  6. Le chat simulé, le chat de poker est souvent très simple, jamais de discussion ou de débat. Dites des choses comme "malchanceux" ou "stfu" à des moments détectables appropriés. Ou même demander au codeur de surveiller son bot et de s'engager dans le chat pendant l'exécution.

  7. Assurez-vous que les mouvements de la souris sont réalistes. Si les tableaux sont en mosaïque ne prenez pas de décision sur le tableau en haut à gauche, puis faites instantanément sur le tableau en bas à droite. La plupart des logiciels de sites proposent maintenant des raccourcis clavier, ceux-ci peuvent être préférables à utiliser comme supposés pour déplacer la souris.

  8. Faites des choses que les classificateurs de l'IA n'attendront tout simplement pas. Par exemple, une fois par an, téléphonez-les avec une simple requête non complexe ("Aide, je ne peux pas me connecter aujourd'hui!" Ou "Internet est en panne!"). Cela ne fera probablement pas beaucoup de différence, mais si la personne travaillant pour le société de poker est suffisamment intelligente pour l’avoir reconnue comme un indicateur fiable.

  9. Séances de perte sporadiques. L'inclinaison peut être simulée et le bot peut mal jouer et perdre de l'argent de temps en temps. Tout le monde s'incline à un moment donné.

Le souci est également que les sites Web de poker ne se soucient pas particulièrement si les bots fonctionnent sur leurs réseaux, chaque joueur vaut beaucoup de rake et théoriquement d'un point de vue purement cynique, le seul inconvénient serait une mauvaise presse s'il était découvert .

Même lorsque des exploits flagrants ont été découverts, (recherche sur Google pour réseau Cereus scandales ou Absolute Poker Scandal , c'est assez choquant) l'entreprise semble survivre et rester en bonne santé, perdant seulement des joueurs bien éduqués et gagnants (dont il n'y en a pas beaucoup). Cela augmente la proportion de joueurs moins qualifiés dans le réseau, ce qui à son tour attire les bons joueurs. C'est un bon vieux poisson 22. Un excellent argument pour une bonne régulation du marché.

Il est important de noter que pour chaque jeu un nash l'équilibre existe . Le poker en ligne a une chronologie comme il fonctionne maintenant, il va devoir évoluer vers quelque chose de plus social (webcam/voip) pour que quiconque lui fasse confiance à l'avenir (si les gens lui font confiance) car les bots prendront le relais finalement aussi mathématiquement supérieur et psychologiquement immunisé. La communauté du poker AI est très active , alimentée par le monde universitaire et/ou les bénéfices en capital.

Des versions plus simples du poker comme le poker limit ont été très presque résolues dans les petits espaces de recherche. Ce n'est qu'une question de temps avant que des versions plus complexes du jeu (variations No Limit/ Pot Limit Omaha etc.) deviennent battables pour les joueurs artificiels.

Conclusion

Les bots sophistiqués ne peuvent tout simplement pas être détectés tant que l'industrie ne passe pas à un environnement de jeu en ligne plus social. Cela ne résoudra pas le problème, mais il sera certainement plus difficile pour les bots de gagner aux niveaux inférieurs. Nous avons déjà vu un léger changement avec la sortie de PKR , D et plus interactif , moins de mains par heure les autres sites où le multitablage est assez difficile à réaliser pour un joueur.

Le problème souffre également de la nature de l'industrie, une autre raison de s'en tenir aux sites Web plus importants et plus réputés où la réputation est de plus en plus intégrée à leur modèle commercial. Le manque de transparence et transarence feinte n'aident pas la cause.

Le vrai défi actuellement pour les développeurs de bots est d'écrire un algorithme gagnant, ce n'est pas aussi trivial qu'il n'y paraît. Tous ceux qui jouent au poker se considèrent bons, gagnants ou encore au seuil de rentabilité, ce qui n'est tout simplement pas vrai. C'est pourquoi les gens continuent de jouer, même lorsqu'ils perdent de l'argent car ils ont l'illusion qu'ils n'ont tout simplement pas de chance, ou que leur style de jeu est mal compris. Cette arrogance et cette faiblesse de la psychologie humaine ont coûté beaucoup d'argent aux joueurs et c'est la raison fondamentale pour laquelle le poker peut toujours être rentable.

Le poker est un jeu extrêmement compliqué qui prend des années pour devenir bon (le vieil adage reste vrai, "Dix minutes pour apprendre, une vie pour maîtriser"). L'élément chance est extrêmement limité à long terme.

Comme toute autre profession, pour devenir bon, vous devez étudier pendant des centaines et des centaines d'heures et jouer pendant des milliers. Vous comprendrez des choses que les joueurs moins expérimentés ne comprendront pas, repérez les choses que les moins expérimentés ne repèrent pas. L'apprentissage dure très très longtemps, peut-être plus longtemps que nous ne pourrons jamais vivre. C'est un jeu compliqué.

Combien de fois avez-vous vu un jeu d'argent à gros enjeux à la télévision et entendu quelqu'un crier "C'est un appel facile!" prouvant ainsi que les amateurs ne comprennent vraiment pas ou ne reconnaissent pas la sophistication du jeu, et croire vraiment que le jeu à ce niveau est toujours simple. Ce n'est pas le cas. Ces joueurs à gros enjeux (la plupart du temps) sont là à la télévision parce qu'ils sont vraiment vraiment vraiment bon . Il y a aussi probablement un méta-jeu compliqué qui se joue également, dont notre amauer ne peut pas reconnaître l'existence. L'amateur ne se tiendrait pas au-dessus d'un maître d'échecs et ne leur crierait pas de déplacer leur chevalier, mais en raison de la dynamique du poker étant des informations imparfaites, leur psychologie les fait vraiment croire ce qu'ils disent. Comme aux échecs, les décisions peuvent être complexes, sensibles et extrêmement importantes pour l'ensemble du jeu. Au fur et à mesure que le jeu augmente en complexité, les décisions triviales ne sont plus si triviales, car votre adversaire les attend.

Une fois que vous déplacez votre bot ou votre jeu dans les niveaux, vous rencontrerez inévitablement un plus grand nombre de joueurs plus qualifiés. Ensuite, la complexité de votre stratégie devra passer au niveau supérieur, en prenant en compte images des tableaux , équilibrage des plages , bluff sophistiqué et intelligent (IE pas seulement bluffant à la faiblesse, bluffant aux portées et bluffant sur l'image, etc.), avec une analyse plus détaillée de la portée des mains. C'est vraiment un jeu différent lorsque vous montez.

Une fois qu'un bot gagnant a été écrit, le codeur aura sans aucun doute suffisamment de compétences, de connaissances et de bon sens pour appliquer le bot de manière indétectable. C'est trivial pour eux.

Il n'y a donc vraiment rien que vous puissiez faire. Si vous voulez jouer en ligne, comprenez les risques. Ne risquez jamais plus d'argent que ce que vous pouvez vous permettre et essayez de conserver des registres précis des dépenses afin de ne pas avoir d'estimation erronée, irréaliste et, en fin de compte, préjudiciable sur vos propres capacités. Ayez des stop loss et quittez la table si vous n'avez pas d'Edge, ou si vous n'êtes pas sûr d'avoir un Edge! Bien sûr, si tout le monde faisait que personne ne gagnerait, c'est la nature prédatrice et exploitante du jeu, c'est de là que vient la compétition et c'est ce qui le rend amusant.

209
Tom Gullen

Il y a trois domaines distincts à considérer. Le bot doit déterminer l'état de la table, prendre une décision et renvoyer la décision à l'hôte.

Il est beaucoup plus facile de déterminer l'état de la table si elle est envoyée sur le fil sous une forme reconnaissable ou affichée à l'utilisateur sous forme de texte standard. Tout d'abord, faites de la reconnaissance d'image la seule option, puis rendez-la aussi difficile que possible. Affichez les cartes en 3D et modifiez lentement l'orientation et la position des cartes. Animez des petits scintillements ou des feux d'artifice devant les cartes afin qu'une capture d'écran donnée puisse être illisible mais cela prend même un certain temps pour le déterminer.

Il n'y a rien à faire pour prendre la décision. Essayer de décider si une décision a été prise par un humain ou non est comme un test de Turing avec presque aucune information.

Renvoyer la décision peut être difficile en utilisant à nouveau la 3D. Rendre difficile l'envoi direct de paquets ou autrement soumettre une décision par tout autre moyen que de cliquer sur un bouton avec la souris. Déplacez légèrement les boutons à chaque action ou faites-les flotter lentement autour de la zone de jeu en attendant une décision. Désactivez toutes les fonctionnalités de type d'accessibilité qui permettent de trouver ou de manipuler des boutons.

9
drawnonward

PokerPirate, comme presque tous les robots de poker jamais écrits, fonctionne en grattant l'écran et en simulant les clics de souris dans une application de poker Windows. Par conséquent, la goupille lynch au système est sa capacité à reconnaître des objets dans le jeu et à effectuer des actions dans la fenêtre. Aussi intelligent que cela puisse être au poker, il a probablement encore des problèmes avec ces opérations de base.

Par conséquent, les moyens évidents de contrecarrer ce bot comprennent:

  1. Mettez en place un CAPTCHA, soit avant la partie, soit lorsque d'autres facteurs suggèrent qu'un joueur peut être un bot.
  2. Rendez les graphiques du tableau plus compliqués ou changez de thème tout au long du jeu.
  3. Détectez les mouvements et les clics de souris inhabituellement rapides et/ou robotiques (un humain ne bougera jamais une souris sur une ligne mathématiquement parfaite).
8
Cerin

Idéalement, la seule solution valable est de créer une logique de pot de miel qui attire un bot engagé en fournissant la tentation d'une condition logique plus favorable qui favorise les réponses comportementales les plus idéales du bot. Une fois que le bot est engagé dans le pot de miel, vous devez continuellement nourrir les conditions du bot qu'il préfère en supposant que le bot n'a pas de délai d'expiration défini. Ensuite, le bot peut être mesuré, enregistré et étudié. En plus du bot, vous aurez également le réseau et les données de session isolés pour étude, à condition que le bot ne se connecte pas via TOR.

Dans cette situation, les considérations déterministes adaptées pour différencier un bot d'un humain sont moins sévères, cependant, les considérations déterministes lors de l'identification du comportement du bot deviennent plus sévères. Malheureusement, le propriétaire du bot peut apporter des modifications au bot pour empêcher une telle identification si ce propriétaire est au courant de la condition du pot de miel ou de la prise en compte logique de celle-ci.

5
austin cheney

Vaincre les robots de poker peut prendre deux formes: vous pouvez essayer de les identifier et les bannir du système, ou vous pouvez simplement les battre au poker. Les battre au poker est la question académique la plus intéressante. :-)

Voir ici pour quelques articles sur les bots de poker: http://www.cs.cmu.edu/~sganzfri/

4
Aaron

Regardez ce post

Cet article a également de bons conseils pour les contrecarrer.

3
Romain Hippeau

Une autre pensée sur jouer avec l'écran pour le rendre difficile à numériser:

Faites de la carte une multitude de couleurs différentes - proches en termes d'oeil humain mais pas les mêmes. Cela rendrait plus difficile le choix des éléments à lire. D'un autre côté, mettez une fausse écriture sur la carte dans des couleurs que l'œil humain ne séparera pas de l'arrière-plan.

2
Loren Pechtel

Le problème avec les bots est-il le fait qu'ils jouent mieux que des joueurs humains décents, ou qu'ils peuvent attendre 24 heures sur 24 et 7 jours sur 7 pour que les mauvais joueurs apparaissent, puis essayer de les traire?

En outre, serait-il "légitime" ou "tricheur" que quelqu'un ait un ordinateur assis à côté de lui pendant qu'il jouait au poker, consultant cet autre ordinateur pour obtenir des conseils?

Je ne sais pas comment on peut prétendre que l'espace de solution pour le poker à limite est "résolu" lorsque la stratégie optimale pour un joueur sera influencée par ce que l'on sait des adversaires. Comment une tentative d'analyse des joueurs peut-elle prétendre être si parfaite qu'elle ne pourrait pas être améliorée?

2
supercat

Si vous avez accès à de nombreuses correspondances, vous pouvez adopter une approche d'exploration de données. La force de jeu d'une IA devrait être assez cohérente, alors qu'il existe probablement des schémas simples pour les humains - plus faibles dans les premiers tours d'échauffement, et la force se détériore après avoir joué pendant longtemps. De plus, les délais de décision humains augmentent probablement lorsqu'il y a plus d'argent en jeu.

Si vous avez accès aux déplacements de la souris (ou au moins aux emplacements de clic, ce qui est vrai même pour les applications Web), il devrait être assez simple de reconnaître les bots, à l'exception des plus sophistiqués. Les humains ne déplacent pas la souris en ligne droite exacte, ils ont des périodes d'accélération et de ralentissement, des distributions d'emplacement de clic statistiquement descriptibles, etc.

1
Tgr

Jetez un oeil à Ajax Control Toolkit NoBot :

NoBot utilise quelques techniques anti-bot différentes:

* Forcing the client's browser to perform a configurable JavaScript calculation and verifying the result as part of the postback. (Ex: the calculation may be a simple numeric one, or may also involve the DOM for added assurance that a browser is involved)

* Enforcing a configurable delay between when a form is requested and when it can be posted back. (Ex: a human is unlikely to complete a form in less than two seconds)

* Enforcing a configurable limit to the number of acceptable requests per IP address per unit of time. (Ex: a human is unlikely to submit the same form more than five times in one minute)
1
lmsasu

Une solution à 100% est impossible, ce que je propose est une solution qui permettra d'économiser de l'argent en utilisant l'IA contre elle-même. Ayez une instance de l'IA de PokerPirate fonctionnant côté serveur et jouant en tant que joueur invisible dans chaque partie. Si un joueur effectue trop d'actions identiques, il exécute probablement une instance de PokerPirate. C'est une sorte de Honeypot ou piège dans lequel l'attaquant peut tomber. L'attaquant peut se défendre contre ce pot de miel en rendant son bot moins performant. Ainsi, cela crée un "chat et une souris" dans lequel l'attaquant peut toujours voler de l'argent et le défenseur peut toujours économiser de l'argent .

0
rook