| Introduction | | | | 3) Output - Pressing the appropriate button on the |
| Online games from chess and backgammon to 1st | | | | poker room client. |
| person shooters are rife with people who use | | | | My Poker Bot |
| computer assisted play or computer robots - even | | | | My program was written in early 2004 with Microsoft |
| when there is no money at stake. With the appropriate | | | | .Net C++ and was developed to play at one online |
| program any player is able to play at a world | | | | room only. For the technically minded the program |
| championship level ruining the game for honest players. | | | | relied heavily on MFC and the Win32 API. |
| What makes online poker different, given that there | | | | 1) Data Gathering |
| are huge amounts of money at stake? | | | | My bot gathered information about game state and |
| In this article I will explain how I developed a poker bot | | | | history from online poker tables by taking repeated |
| and what I learnt from this experience. My conclusion is | | | | screenshots and analysing the image. To begin with I |
| that although it is possible to construct a poker playing | | | | just observed games, taking screenshots automatically |
| bot the threat from poker bots to the online poker | | | | so I could gather data on the position of the cards, |
| player is extremely small to non-existent. | | | | chips and button. By determining the color of a certain |
| "Games" Theory | | | | few pixels I was able to gather all this information |
| For interest and college courses I had previously | | | | about the state of the game. |
| written computer playing programs or bots for games | | | | Eventually I was able to gather data from multiple |
| including chess, Connect 4, Othello, backgammon, | | | | poker tables (4 at a time) by repeatedly bringing each |
| bridge and various others. For games such as | | | | window to the foreground and taking a screenshot. |
| Connect 4, Othello, chess and backgammon where all | | | | From this screenshot I was able to determine my |
| players have the same available information about the | | | | cards, board cards, button position, who was left in the |
| game state, the theory on how to construct expert | | | | hand, pot size and player bet sizes. |
| bots is well known. Deep search techniques, looking | | | | 2) Data processing |
| many moves ahead, are used for games such as | | | | This is the component that eventually bought my poker |
| Othello and chess. Recently (10 years ago) it was | | | | bot project to an end, unable to develop a strong |
| discovered neural networks could be taught to play | | | | enough strategy to win consistently. I tried various rules |
| backgammon better than almost any human player. | | | | based, neural net and simulation techniques. At best |
| Games such as poker and bridge contain hidden | | | | my bot was able to make a very small profit at $1/2 |
| information where the players can see their own hand | | | | and $2/$4 limit hold'em, but nowhere near the |
| but not that of the other players. The published theory | | | | thousands of dollars a week I envisioned earning when |
| behind writing expert computer bots for these | | | | I started the project. In the end it just wasn't worth my |
| incomplete information games is decades behind the | | | | time to continue to put resources into developing my |
| complete information games and there are doubts | | | | poker bot further. |
| techniques will be developed so that computers can | | | | 3) Output |
| play at expert or world championship level. At present | | | | This was the easiest component to write. This |
| the best techniques for these incomplete information | | | | involved programmatically moving the mouse pointer to |
| games seem to involve some form of simulation and | | | | the appropriate screen co-ordinates and then sending |
| opponent modelling. | | | | a mouse down/mouse up command signalling a |
| Anatomy of An Online Poker Bot | | | | left-click. I did give consideration to adding the ability for |
| There are 3 basics parts to a poker bot: | | | | the bot to use chat but never progressed that far. |
| 1) Data Gathering - observing the game state and | | | | Conclusion |
| history | | | | Although you might run into a poker playing bot whilst |
| 2) Data Processing - using the information from the | | | | playing online the odds are it plays very poorly. At any |
| data gathered to determine whether to fold, call or | | | | level of play you are much more likely to run into an |
| raise. | | | | expert human player than an expert computer player. |