Online Poker Bots - Threat or Not?
Introduction
Online games from chess and backgammon to 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 ruining the game for 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 learnt from this experience. My
conclusion is that although it is possible to construct a poker
playing bot the threat from poker bots to the online poker
player is extremely small to non-existent.
"Games" Theory
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 same available information about the game
state, the theory on how to construct expert bots is well known.
Deep search techniques, looking many moves ahead, are used for
games such as 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 so that
computers can play at expert or world championship level. At
present the best techniques for these incomplete information
games seem to involve some form of simulation and opponent
modelling.
Anatomy of An Online Poker Bot
There are 3 basics parts to a poker bot. 1) Data Gathering -
observing the game state and history 2) Data Processing - using
the information from the data gathered to determine whether to
fold, call or raise. 3) Output - Pressing 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 at one online room only. For the
technically minded the program relied heavily on MFC and the
Win32 API. 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 begin 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
gather all this information about the state of the game.
Eventually I was able to gather 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 left in the hand, pot size and player bet sizes. 2) Data
processing This is the component that eventually bought my poker
bot project to an end, unable 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
make a very small profit at $1/2 and $2/$4 limit hold'em, but
nowhere near the thousands of dollars a week I envisioned
earning when I started the project. In the end it just wasn't
worth my time to continue to put resources into developing my
poker bot further. 3) Output 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 signalling a left-click. I did give
consideration to adding the ability for the bot to use chat but
never progressed that far.
Conclusion
Although you might run into a poker playing bot whilst playing
online the odds are it plays very poorly. At any level of play
you are much more likely to run into an expert human player than
an expert computer player.