From online games to chess and backgammon, 1st person shooters are rife with people who use computer assisted play or computer robots - even when there is no money at stake. With the appropriate program, any player is able to play at a world championship level and play the role of honest players. What makes online poker different, given that there are huge amounts of money at stake?
In this article I will explain how I developed a poker bot and what I learned from this learner. My conclusion is that it is possible to construct a poker game from the threat of a poker bots to an online poker player that is extremely small to non-existent pkv games.
For the interest and college courses I have had written computer playing programs or games for bots, 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 same available information about the game state, the theory on how to construct expert bots is well known. Deep search techniques, many moves ahead, are used for games such as Othello and Chess. Recently (10 years ago) it was found that neural networks could be better than almost any human player. Games like poker and bridge hidden information where players can see their own hand but not the other players. These are the most complete information games and there are doubts techniques that can be developed so that computers can play at the level of expertise or world championship. At present the best techniques for these seemingly incompatible information games seem to involve some form of simulation and opponent modeling.
An Online Poker Bot of Anatomy
There are 3 basics parts to a poker bot:
1) Data Gathering - Observing the game state and history
2) Data Processing - Using the Information to Return the Data From Where to Find, Call or Raise.
3) Output - Press the appropriate button on the poker room client.
My Poker Bot
My program was written in early 2004 with Microsoft .NET C ++ and was developed to play only one online room. MFC and the Win32 API on relied heavily on the technically minded program.
1) Data Gathering
Screenshots and analysizing the image by taking online poker tables from the game state and history. To begin with I just observed games, taking screenshots automatically so I could collect data, cards, chips and buttons. By determining the color of a certain pixels I was able to gather all this information about the state of the game.
Eventually I was able to collect data from multiple poker tables (4 at a time) repeatedly using a screenshot of each window. From this screenshot I was able to find my cards, board cards, button position, who was left in the hand, pot size and player bet sizes.
2) Data processing
This is the component that eventually bought my poker bot project. I tried various rules-based, neural net and simulation techniques. At the very best I can make a very small profit at $ 1/2 and $ 2 / $ 4 limit hold'em, but now near the end of the year when dollars are a week I have envisioned earning. In the end, it's just not worth it.
This was the easiest component to write. This involved programmatically moving the mouse pointer to the appropriate screen co-ordinates and then sending a mouse down / mouse up command signaling a left-click. What I did give you was the ability to use a bot to chat but never progressed.
Although you may run into a poker playing bot whilst playing online odds are very poor. At any level, you are much more likely to run into an expert human player than an expert computer player.
Harrison Elliot wrote Review Poker Rooms for this article.