Poker bot, how we built one

A poker bot is a dream for a lot of people. A lot of other people say that it is impossible to build a poker bot and they are really wrong. It is possible to build bots for almost anything, they just get a bit more complex if the enviroment they are active in gets complex. A bot playing chess is fairly simple to build as the enviroment is very simply. The options in chess are not that many even if the game is complex for a human. As it is deterministic as well a bot (deep blue) can also beat the best humans at it, this was achieved long ago. Acting in the real world will demand a much more complex bot even just to handle very simple tasks. The amount of factors that show up once you leave the simulation (in this case the computer version of chess) is like an avalanche. When it comes to building bots, in opposite to humans, it is much harder to build one that manages to move the pieces properly and understands when it is its turn than it is to build one that is great at chess. There are examples of bots out in the real world too though. One is the automatic system for targeting aircrafts that is common on naval ships, the gunner just has to agree to fire for the cannons to aim and shoot down the aircrafts. Modern jetfighters have the same properties but on an even higher level, built in systems compensate for when the pilot maneuvers to fast and autopilot isn’t really anyting new is it? Depending on what you want your bot to achieve it can be impossible (or at least very hard) to build one today but playing poker decently (not good) is definately not harder than being a fighterpilot in combat.

The goal of the poker bot

To be able to build a successful bot we needed to set up a number of characteristics. Defining exactly what is needed is extremely important as it easily gets out of hand when you start doing the programming later. Here are the targets we came up with in the first iteration:

The bot must be hard to detect for the poker rooms
We decided that impossible to detect was to much to ask for and it wasn’t really necessary. It would only take time from the more pressing developement.

The bot must be hard to detect for poker players
This is similar to the above but as we knew since before that players can see stuff the operator can’t and operaters see stuff players don’t we wanted to be clear about it.

The bot must be able to retrive data from at least one poker network
The gathering of data is one of the tough parts of a poker bot as the poker rooms actively try to prevent this kind of datagathering.

The bot must be able to play without loss of money
By playing an even game the bot would still be making money, we figured, as the bonuses and rakeback would do for profit. The whole idea with bots is that they can play endlessly and paralell in a way humans can never. There is nothing stopping you from having 10 or even 100 bots once it works. Small profits can turn in to big profits if you just scale it up.

The team, the strategy and the scrum

Equipped with these for goals we started setting up a team for buildling the poker bot. We were already 2 on the team, me an engineer/poker player and Eric with a PhD in automation (which is exactly what you need for being really, really good at building bots). We managed to gather 2 more programmers putting in a few hours every day and Mike who had already built a (bad) poker bot. As 3 of our programmers could work only nights Eric and I needed to adjust our schedules a bit but it didn’t really change anything else, we were prepared that the progress would be slow, we were in no position to hire full time programmers. We knew from the start that we needed to do most of the programming ourselves.

I’m not sure how much you know about programming in a team, most people that do programming on their spare time don’t. The thing is that when the team grows so does the problems. 1 programmer programming will get the most out of his potential, it might even work with 2 but when it starts increasing beyond that the interference from the other programmers start becoming a problem. My experience is that the maximum amount of programmers you can have in a team is 7. After that you start decreasing the progress by adding another programmer. On bigger projects you have to split them up so that you don’t get more than 7 programmers in a team. You can’t have a software with 200 people working on it, split it up. We were 5 but we still needed a method and the method we chose to work with is Scrum. Let’s not dig any deeper than saying that we used scrum before and it’s a good method. If you want more about scrum please refer to Wikipedia on Scrum.

The next article in this series will follow:

The two first steps, the data gathering and the poker player

Eric and I started working with the two most interesting parts at this moment. Gathering the data and setting up a poker playing algoritm. After a lot of research on the poker networks we decided to go with Partypoker for primarily two reasons. We thought we could build a functioning data gathering unit for Party without to much trouble and there are lots and lots of players on Partypoker which would make it easier for the bot to stay under the radar.

»Continue Reading


Index of the poker bot articles

Other articles on Poker Bots


1 Comment »

  1. “How we put up a blog to vaguely describe what it would be like to make a poker bot if we knew how. Too bad we don’t.”

RSS feed for comments on this post · TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: