Online games from chess and backgammon to 1st person shooters are rife with people who use computer assisted play or computer robots – even if there is no money at stake. With the proper program any player is able to play at a world bandarq online championship level ruining the game for honest players. What makes online poker different, given that there are huge amounts of money at stake?
Within this article I will explain how I developed a poker bot and what I learnt from the experience. My decision is that though it will be likely to make a poker playing bot the threat from poker bots to the internet poker player is extremely limited to non.
For interest and college courses I had previously written computer playing programs or bots for games including chess, Connect 4, Othello, backgammon, bridge and various others. For games such as Connect 4, Othello, chess and backgammon where all players have the exact available information regarding the game state, the idea about the best way best to construct expert bots is well-known. Deep search techniques, looking many moves ahead, are used for games like Othello and chess. Recently (10 years ago) it was discovered neural networks could be taught to play backgammon better than almost any human player. Games such as poker and bridge contain hidden information where the players can see their own hand but not that of the other players. The published theory behind writing expert computer bots for these incomplete information games is decades behind the complete information games and there are doubts techniques will be developed to ensure that computers can play at expert or world championship level. At present the best techniques for these incomplete information games appear to involve some kind of simulation and opponent modelling.
There are 3 basics parts to a poker bot:
2) Data Processing – using the data from the data gathered to determine whether to fold, call or raise.
3) Output – Pressing the proper button on the poker room client.
My program was written in early 2004 with Microsoft .Net C++ and was developed to play at one online room only.
1) Data Gathering
My bot gathered information about game state and history from online poker tables by taking repeated screenshots and analysing the image. To start with I just observed games, taking screenshots automatically so I could gather data on the position of the cards, chips and button. By determining the color of a certain few pixels I was able to assemble all this information regarding their condition of the match.
Finally I managed to collect data from multiple poker tables (4 at a time) by repeatedly bringing each window to the foreground and taking a screenshot. From this screenshot I was able to determine my cards, board cards, button position, who was simply left in the hand, pot size and player bet sizes.
2) Data processing
This really is the component that eventually bought my poker bot project to an end, not able to develop a strong enough strategy to win consistently. I tried various rules based, neural net and simulation techniques. At best my bot was able to generate a very small profit at $1/2 and $2/$4 limit holdCeltics, however no where near the thousands of dollars a week I envisioned earning when I started this project. In the long run it just was not worth my time to continue to put resources into developing my poker bot further.
This is actually the easiest component to write. This involved programmatically moving the mouse pointer to the suitable screen coordinates and then sending a mouse down/mouse up command signalling a left-click. I did give consideration to adding the ability for the bot to use chat but never progressed that way.
Even though you might run into a poker playing bot whilst playing online the chances are it plays very badly. At any level of play you are far more inclined to encounter an expert human player than an expert computer player.