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